Community project · Arduino Uno R3
First blink
By rishi upadhyay (@rishi-upadhyay)
A circuit on the Arduino Uno R3 by rishi upadhyay (@rishi-upadhyay), shared on Mokxi. Open it and press Run: it runs in your browser, free.
Runs in your browser. Free · 1 remix · 1 heart.

The code
The sketch exactly as it was saved. Open it in the editor and press Run: it compiles in your browser.
sketch.ino · uno1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// ---------------- PINS ----------------
#define SOIL_PIN A0
#define DHT_PIN 2
#define DHT_TYPE DHT22
#define TRIG_PIN 7
#define ECHO_PIN 6
#define RELAY_PIN 8
#define GREEN_LED 9
#define RED_LED 10
#define BUZZER 11
// ---------------- SETTINGS ----------------
#define SOIL_THRESHOLD 400
#define LOW_WATER_DISTANCE 25
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHT_PIN, DHT_TYPE);
// ---------------- ULTRASONIC ----------------
long getDistance()
{
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000);
if (duration == 0)
return 999;
return duration * 0.034 / 2;
}
// ---------------- SETUP ----------------
void setup()
{
Serial.begin(9600);
pinMode(SOIL_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, LOW);
digitalWrite(BUZZER, LOW);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("SMART AGRICULTURE");
lcd.setCursor(0, 1);
lcd.print("SYSTEM STARTING");
delay(2000);
lcd.clear();
}
// ---------------- MAIN LOOP ----------------
void loop()
{
int soilValue = analogRead(SOIL_PIN);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
long tankDistance = getDistance();
// Higher analog value = drier soil
bool soilDry = soilValue > SOIL_THRESHOLD;
bool lowWater = tankDistance > LOW_WATER_DISTANCE;
// ---------------- CONTROL LOGIC ----------------
if (lowWater)
{
// Water tank is low
digitalWrite(RELAY_PIN, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, HIGH);
digitalWrite(BUZZER, HIGH);
}
else if (soilDry)
{
// Soil is dry
digitalWrite(RELAY_PIN, HIGH);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
digitalWrite(BUZZER, LOW);
}
else
{
// Soil has enough moisture
digitalWrite(RELAY_PIN, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, LOW);
digitalWrite(BUZZER, LOW);
}
// ---------------- LCD ----------------
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("S:");
lcd.print(soilValue);
lcd.print(" T:");
if (isnan(temperature))
{
lcd.print("--");
}
else
{
lcd.print(temperature, 1);
}
lcd.print("C");
lcd.setCursor(0, 1);
if (lowWater)
{
lcd.print("LOW WATER");
}
else if (soilDry)
{
lcd.print("DRY-PUMP ON");
}
else
{
lcd.print("SOIL OK-OFF");
}
// ---------------- SERIAL MONITOR ----------------
Serial.println("----------------------------");
Serial.print("Soil Moisture: ");
Serial.println(soilValue);
Serial.print("Temperature: ");
if (isnan(temperature))
{
Serial.println("ERROR");
}
else
{
Serial.print(temperature);
Serial.println(" C");
}
Serial.print("Humidity: ");
if (isnan(humidity))
{
Serial.println("ERROR");
}
else
{
Serial.print(humidity);
Serial.println(" %");
}
Serial.print("Water Surface: ");
Serial.print(tankDistance);
Serial.println(" cm");
if (lowWater)
{
Serial.println("STATUS: LOW WATER - PUMP OFF");
}
else if (soilDry)
{
Serial.println("STATUS: DRY SOIL - PUMP ON");
}
else
{
Serial.println("STATUS: SOIL OK - PUMP OFF");
}
delay(2000);
}Parts list
12 parts, plus the jumper wires. Every one is in the editor's parts bin.
More on the Arduino Uno R3
Carburetor synchronizerA circuit on the Arduino Uno R3, shared on Mokxi. Open it and press Run: it runs in your browser, free.StackerA circuit on the Arduino Uno R3, shared on Mokxi. Open it and press Run: it runs in your browser, free.projek STEMA circuit on the Arduino Uno R3, shared on Mokxi. Open it and press Run: it runs in your browser, free.First blinkThe first circuit on an Arduino Uno: an LED and a 220 ohm resistor on pin 13, blinking once a second, with a sketch that explains every lineArduino Uno blinkFlashes an LED on pin 13 once a second: the smallest thing an Arduino Uno can do, wired on the breadboard beside it.MetronomeThe Uno clicks a beat on a piezo and two buttons walk the tempo between 40 and 240 bpm.