/*======================================================================
PROGRAM INPUT DIGITAL & INPUT ANALOG untuk menguji :
ESP8266 WeMos_D1_Mini, ESP32 WeMos_D1_R32 board, ESP32 DevKitC_V4 board
Tampilan pada LCD dan Serial Monitor
======================================================================*/
#include <LiquidCrystal_I2C.h> //deklarasi library LCD-I2C
LiquidCrystal_I2C lcd(0x27,16,2); //membuat nama objek lcd
int potPin= A0; //pin A0 sbg input pin utk tegangan analog (D1_Mini)
int PB1 = 2; //deklarasi pin 2 terhubung ke PB-1
int PB2 = 4; //deklarasi pin 4 terhubung ke PB-2
int RED = 12; //pendefinisian pin untuk Led12 (merah)
int YEL = 13; //pendefinisian pin untuk Led13 (kuning)
int BLU = 14; //pendefinisian pin untuk Led14 (biru)
int BUZ = 16; //deklarasi pin 16 terhubung ke Buzzer
void setup() {
Serial.begin(115200); //Aktifkan UART utk tampilkan data ke PC
lcd.init(); lcd.backlight();
lcd.setCursor(0,0); lcd.print("Tes Board ESP32");
lcd.setCursor(0,1); lcd.print("input Dig+Analog");
delay(5000); lcd.clear();
lcd.setCursor(0,0); lcd.print("Push PB1 or PB2 ");
pinMode(PB1,INPUT_PULLUP); pinMode(PB2, INPUT_PULLUP);
pinMode(RED, OUTPUT); //Setting pin 12 sebagai Output
pinMode(YEL, OUTPUT); //Setting pin 13 sebagai Output
pinMode(BLU, OUTPUT); //Setting pin 14 sebagai Output
pinMode(BUZ, OUTPUT); //Setting pin 16 sebagai Output
}
void loop() {
int potValue=analogRead(potPin); //baca tegangan dari pin input analog
Serial.print("Data Potensio : ");
Serial.println(potValue);
//=======================================================================
//Cek 3 batas pembacaan Potensio utk menyalakan RED, YEL atau GRE
if(potValue<=1270) {
digitalWrite(BLU, HIGH); digitalWrite(YEL, LOW); digitalWrite(RED, LOW);
}
if(potValue>=1271 && potValue<=2640 ) {
digitalWrite(BLU, LOW); digitalWrite(YEL, HIGH); digitalWrite(RED, LOW);
}
if(potValue>=2641 && potValue<=4095) {
digitalWrite(BLU, LOW); digitalWrite(YEL, LOW); digitalWrite(RED, HIGH);
}
//=======================================================================
//Cek tombol ditekan
if(digitalRead(PB1) == LOW) {
Serial.print("PB1 ditekan ");
lcd.setCursor(0,0); lcd.print("PB1 pressed! ");
digitalWrite(BUZ, HIGH);
while(digitalRead(PB1)==LOW); // tunggu sampai tombol dilepas
digitalWrite(BUZ, LOW);
} else
if (digitalRead(PB2) == LOW) {
Serial.print("PB2 ditekan ");
lcd.setCursor(0,0); lcd.print("PB2 pressed! ");
digitalWrite(BUZ, HIGH);
while(digitalRead(PB2)==0); // tunggu sampai tombol dilepas
digitalWrite(BUZ, LOW);
}
else {
lcd.setCursor(0,0); lcd.print("Push PB1 or PB2 ");
}
//=======================================================================
// Tampilkan analog
lcd.setCursor(0,1); lcd.print("Dat_Analog: ");
lcd.setCursor(12,1); lcd.print(" "); //hapus sisa digit lama
lcd.setCursor(12,1); lcd.print(potValue);
delay(300); //update tiap 300 mS
}