#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat LCD I2C dan ukuran
const int ledPin1 = 13; // Pin untuk LED
const int ledPin2 = 12; // Pin untuk LED
const int ledPin3 = 11; // Pin untuk LED
const int ledPin4 = 10; // Pin untuk LED
const int ledPin5 = 9; // Pin untuk LED
const int button1Pin = 2; // Pin untuk tombol 1
const int button2Pin = 3; // Pin untuk tombol 2
boolean runningState = false; // Status LED running
boolean flipFlopState = false; // Status LED flip-flop
boolean button1Pressed = false; // Tombol 1 ditekan
boolean button2Pressed = false; // Tombol 2 ditekan
void setup() {
lcd.init();
lcd.backlight();
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
lcd.setCursor(0, 0);
lcd.print("Tekan Button 1");
lcd.setCursor(0, 1);
lcd.print("atau Button 2");
}
void loop() {
button1Pressed = digitalRead(button1Pin) == LOW;
button2Pressed = digitalRead(button2Pin) == LOW;
if (button1Pressed && !runningState) {
runningState = true;
ledRunning();
} else if (runningState && !button1Pressed) {
runningState = false;
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tekan Button 1");
lcd.setCursor(0, 1);
lcd.print("atau Button 2");
}
if (button2Pressed && !flipFlopState) {
flipFlopState = true;
ledFlipFlop();
} else if (flipFlopState && !button2Pressed) {
flipFlopState = false;
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tekan Button 1");
lcd.setCursor(0, 1);
lcd.print("atau Button 2");
}
}
void ledRunning() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LED Running");
for (int i = 0; i < 5; i++) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
delay(500);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
delay(500);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
delay(500);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
delay(500);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, HIGH);
delay(500);
}
}
void ledFlipFlop() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LED Flip-Flop");
for (int i = 0; i < 50; i++) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
delay(500);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin1, LOW);
delay(500);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
delay(500);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin3, LOW);
delay(500);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin4, LOW);
delay(500);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
delay(500);
}
}