//Belajar LCD menampilkan data Sensor PIR dengan ESP32 
#include <LiquidCrystal_I2C.h>

int KolomLCD = 16;
int BarisLCD = 2;

// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
LiquidCrystal_I2C lcd(0x27, KolomLCD, BarisLCD); 

const int PIRSensor = 14;
const int LED1 = 15;

int Pirstate = 0;
int val = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  // Memulai LCD
  lcd.init();
  // Menyalakan LCD backlight                      
  lcd.backlight();

  pinMode(PIRSensor, INPUT);
  pinMode(LED1, OUTPUT);

}

void loop() {

val = digitalRead(PIRSensor);  // Baca nilai Input
  if (val == HIGH) {            // Cek apakah nilai input HIGH
    digitalWrite(LED1, HIGH);  // Lampu Menyala
    if (Pirstate == LOW) {
      lcd.setCursor(0, 0);
      // Menampilkan Text 
      lcd.print("Ada Gerakan!!");
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      Pirstate = HIGH;
    }   
  } 
  else 
  {
    digitalWrite(LED1, LOW); // Lampu Mati 
    if (Pirstate == HIGH){
      lcd.setCursor(0, 0);
      // Menampilkan Text 
       lcd.print("Tidak ada Gerakan");
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      Pirstate = LOW;
      lcd.clear(); 
    }
  }
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
pir1:VCC
pir1:OUT
pir1:GND
led1:A
led1:C
r1:1
r1:2
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL