#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows
#define buttonPin 2 // Pin yang terhubung ke push button
#define ledPinRed 12 // Pin yang terhubung ke bagian merah LED RGB
#define ledPinGreen 14 // Pin yang terhubung ke bagian hijau LED RGB
#define ledPinBlue 27 // Pin yang terhubung ke bagian biru LED RGB
int buttonState = 0;
int lastButtonState = 0;
int buttonPressCount = 0;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(buttonPin, INPUT);
pinMode(ledPinRed, OUTPUT);
pinMode(ledPinGreen, OUTPUT);
pinMode(ledPinBlue, OUTPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPressCount++;
if (buttonPressCount > 3) {
buttonPressCount = 0;
digitalWrite(ledPinRed, LOW);
digitalWrite(ledPinGreen, LOW);
digitalWrite(ledPinBlue, LOW);
lcd.setCursor(0, 0);
lcd.print("OFF ");
}
switch (buttonPressCount) {
case 1:
// Mode merah
digitalWrite(ledPinRed, HIGH);
digitalWrite(ledPinGreen, LOW);
digitalWrite(ledPinBlue, LOW);
lcd.setCursor(0, 0);
lcd.print("Red ");
break;
case 2:
// Mode hijau
digitalWrite(ledPinRed, LOW);
digitalWrite(ledPinGreen, HIGH);
digitalWrite(ledPinBlue, LOW);
lcd.setCursor(0, 0);
lcd.print("Green");
break;
case 3:
// Mode biru
digitalWrite(ledPinRed, LOW);
digitalWrite(ledPinGreen, LOW);
digitalWrite(ledPinBlue, HIGH);
lcd.setCursor(0, 0);
lcd.print("Blue ");
break;
}
}
}
lastButtonState = buttonState;
delay(50); // Debouncing
}