#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define LEBAR_LAYAR 128 // Lebar layar OLED yang digunakan
#define TINGGI_LAYAR 64 // Tinggi layar OLED yang digunakan
Adafruit_SSD1306 oled(LEBAR_LAYAR, TINGGI_LAYAR, &Wire, -1);
const int pinLEDmerah = 4;
const int pinLEDhijau = 2;
int nilaiDigital;
float kelembapanTanah;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("ESP32 dengan sensor kelembaban tanah");
pinMode(pinLEDmerah , OUTPUT);
pinMode(pinLEDhijau, OUTPUT);
}
void loop() {
nilaiKelembapan=analogRead(34); //membaca nilai tegangan dari sensor pada pin 34
kelembapanTanah = nilaiKelembapan/4095.00 * 100.00; //nilai 0-100%
Serial.print("Nilai Kelembaban tanah = ");
Serial.print(kelembapanTanah);
Serial.println(" %");
if (kelembapanTanah <= 50) {
digitalWrite(pinLEDmerah,1);//jika nilai kelembapan tanah < 50%
digitalWrite(pinLEDhijau,0);//maka lampu merah menyala
}
if (kelembapanTanah > 50){
digitalWrite(pinLEDmerah,0);
digitalWrite(pinLEDhijau,1);
//jika nilai kelembapan tanah >50%
//maka lampu hijau menyala
}
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
oled.clearDisplay(); // clear display
oled.setTextSize(1); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 2); // set position to display (x,y)
oled.println("Nilai Kelembaban tanah = "+kelembapanTanah); // set text
oled.display(); // display on OLED
delay(1000);
}