// Definisikan pin untuk push button dan LED
const int buttonPin = 2; // Pin untuk push button
const int led1Pin = 10; // Pin untuk LED 1
const int led2Pin = 11; // Pin untuk LED 2
// Variabel untuk menyimpan status tombol
int buttonState = 0;
int lastButtonState = LOW; // Variabel untuk menyimpan status tombol pada loop sebelumnya
// Variabel untuk menyimpan waktu terakhir tombol ditekan
unsigned long lastDebounceTime = 0;
// Waktu debouncing dalam milidetik
unsigned long debounceDelay = 50;
// Variabel untuk menyimpan apakah sedang dalam mode strobo
bool strobeMode = false;
// Variabel untuk melacak apakah lampu sedang menyala atau tidak
bool lightsOn = false;
void setup() {
// Atur pin sebagai input atau output
pinMode(buttonPin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
}
void loop() {
// Baca status tombol
int reading = digitalRead(buttonPin);
// Memeriksa apakah status tombol berubah
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
// Memeriksa apakah sudah melewati waktu debouncing
if ((millis() - lastDebounceTime) > debounceDelay) {
// Jika status tombol berbeda dengan sebelumnya
if (reading != buttonState) {
buttonState = reading;
// Jika tombol ditekan
if (buttonState == HIGH) {
// Ubah status lampu
lightsOn = !lightsOn;
// Jika lampu menyala
if (lightsOn) {
// Nyalakan lampu strobo
strobeMode = true;
} else {
// Matikan lampu strobo
strobeMode = false;
// Matikan kedua LED
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
}
}
}
}
// Jika sedang dalam mode strobo
if (strobeMode) {
// Nyalakan kedua LED
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, HIGH);
delay(100); // Atur delay sesuai dengan kecepatan strobo yang diinginkan
// Matikan kedua LED
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
delay(100); // Atur delay sesuai dengan kecepatan strobo yang diinginkan
}
// Simpan status tombol untuk loop selanjutnya
lastButtonState = reading;
}