Community project · Arduino Uno R3
projek STEM
By Tania Humaira (@tania-humaira)
A circuit on the Arduino Uno R3 by Tania Humaira (@tania-humaira), shared on Mokxi. Open it and press Run: it runs in your browser, free.
Runs in your browser. Free · 3 remixes · 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 · uno2
// Pin LCD (4-bit mode) - Menggunakan pin yang sudah berhasil jalan
const int RS = 12;
const int EN = 11;
const int D4 = 5;
const int D5 = 4;
const int D6 = 3;
const int D7 = 2;
// Pin Sensor Kelembapan Tanah & Relay Pompa
const int pinSensor = A0;
const int pinRelay = A3;
// Batas kelembapan tanah
const int batasKering = 400;
void sendNibble(byte nibble) {
digitalWrite(D4, (nibble >> 0) & 0x01);
digitalWrite(D5, (nibble >> 1) & 0x01);
digitalWrite(D6, (nibble >> 2) & 0x01);
digitalWrite(D7, (nibble >> 3) & 0x01);
digitalWrite(EN, HIGH);
delayMicroseconds(1);
digitalWrite(EN, LOW);
delayMicroseconds(100);
}
void sendByte(byte data, byte isData) {
digitalWrite(RS, isData);
sendNibble(data >> 4);
sendNibble(data & 0x0F);
}
void lcdCommand(byte cmd) {
sendByte(cmd, LOW);
delay(2);
}
void lcdWriteChar(char c) {
sendByte(c, HIGH);
}
void lcdWriteString(const char* str) {
while (*str) {
lcdWriteChar(*str++);
}
}
void lcdInit() {
pinMode(RS, OUTPUT);
pinMode(EN, OUTPUT);
pinMode(D4, OUTPUT);
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
delay(50);
sendNibble(0x03);
delay(5);
sendNibble(0x03);
delayMicroseconds(150);
sendNibble(0x03);
sendNibble(0x02);
lcdCommand(0x28);
lcdCommand(0x0C);
lcdCommand(0x06);
lcdCommand(0x01);
delay(2);
}
void setup() {
pinMode(pinSensor, INPUT);
pinMode(pinRelay, OUTPUT);
digitalWrite(pinRelay, LOW);
lcdInit();
// Test Teks Awal saat Dinyalakan
lcdCommand(0x80);
lcdWriteString("Sistem Otomatis");
lcdCommand(0xC0);
lcdWriteString("Penyiram Siap...");
delay(2000);
lcdCommand(0x01); // Clear Layar
}
void loop() {
// Baca nilai sensor kelembapan tanah
int nilaiTanah = analogRead(pinSensor);
// --- BARIS 1: Status Kelembapan Tanah ---
lcdCommand(0x80);
lcdWriteString("Tanah: ");
if (nilaiTanah > batasKering) {
lcdWriteString("Kering ");
} else {
lcdWriteString("Lembab ");
}
// Konversi angka ke teks dengan kapasitas buffer memori yang aman
char buffer[10];
itoa(nilaiTanah, buffer, 10);
lcdWriteString("(");
lcdWriteString(buffer);
lcdWriteString(") ");
// --- BARIS 2: Status Pompa ---
lcdCommand(0xC0);
if (nilaiTanah > batasKering) {
digitalWrite(pinRelay, HIGH);
lcdWriteString("Status: Menyiram");
} else {
digitalWrite(pinRelay, LOW);
lcdWriteString("Status: Diam ");
}
delay(500);
}Parts list
4 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.First blinkA 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.