#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define pinLed_Kuning 19
#define pinLed_Hijau 18
#define PB_Hijau 12
#define PB_Kuning 14
#define Buzzer 5
unsigned char Status_PB_Kuning, Status_PB_Hijau;
unsigned long PrevMillis, PrevMillis2;
unsigned int Interval = 150, Interval2 = 500;
unsigned char Counter;
void setup() {
Serial.begin(115200);
pinMode(pinLed_Kuning, OUTPUT);
pinMode(pinLed_Hijau, OUTPUT);
pinMode(PB_Kuning, INPUT);
pinMode(PB_Hijau, INPUT);
pinMode(Buzzer, OUTPUT);
lcd.init();
lcd.backlight();
// Initial LCD display setup
lcd.setCursor(3, 0);
lcd.print("TOLI 5A");
lcd.setCursor(0, 1);
lcd.print("Count:");
}
void loop() {
// Check button press and update counter every Interval
if (millis() - PrevMillis >= Interval) {
PrevMillis = millis();
Status_PB_Kuning = digitalRead(PB_Kuning);
Status_PB_Hijau = digitalRead(PB_Hijau);
// Increment counter and beep based on Counter if PB_Kuning is pressed
if (Status_PB_Kuning == 1) {
digitalWrite(pinLed_Kuning, HIGH);
Counter++;
lcd.setCursor(7, 1);
lcd.print(Counter);
// Buzzer beeps according to Counter
for (int i = 0; i < Counter; i++) {
tone(Buzzer, 1000); // Set the buzzer frequency
delay(200); // Buzzer on duration
noTone(Buzzer); // Turn off buzzer
delay(200); // Pause between beeps
}
} else {
digitalWrite(pinLed_Kuning, LOW);
}
// Reset counter if PB_Hijau is pressed
if (Status_PB_Hijau == 1) {
Counter = 0;
lcd.setCursor(7, 1);
lcd.print(" "); // Clear previous count display
lcd.setCursor(7, 1);
lcd.print(Counter); // Display reset count (0)
}
}
// Blink the green LED at Interval2
if (millis() - PrevMillis2 >= Interval2) {
PrevMillis2 = millis();
digitalWrite(pinLed_Hijau, !digitalRead(pinLed_Hijau));
}
}