// Pin LED
const int led1Pin = 16;
const int led2Pin = 17;
const int led3Pin = 18;
// Pin tombol
const int buttonPin = 14;
// Variabel untuk deteksi tombol ditekan (edge detection)
bool lastButtonState = HIGH; // Kondisi awal tombol (belum ditekan, pull-up)
int currentStep = 0; // Menyimpan langkah/step saat ini (0-5)
// Untuk debounce sederhana
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(buttonPin, INPUT_PULLUP);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
// Pastikan semua LED mati di awal
updateLEDs();
}
void loop() {
bool reading = digitalRead(buttonPin);
// Deteksi transisi dari HIGH ke LOW (tombol baru ditekan)
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// Jika benar-benar terjadi penekanan baru (falling edge)
if (reading == LOW && lastButtonState == HIGH) {
currentStep++;
if (currentStep > 5) {
currentStep = 0; // Tekan keenam = kembali ke awal (loop)
}
updateLEDs();
}
}
lastButtonState = reading;
}
void updateLEDs() {
// Matikan semua LED dulu
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
switch (currentStep) {
case 0: // Tekan pertama = hanya LED 1 nyala
digitalWrite(led1Pin, HIGH);
break;
case 1: // Tekan kedua = hanya LED 2 nyala
digitalWrite(led2Pin, HIGH);
break;
case 2: // Tekan ketiga = hanya LED 3 nyala
digitalWrite(led3Pin, HIGH);
break;
case 3: // Tekan keempat = semua LED nyala
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, HIGH);
digitalWrite(led3Pin, HIGH);
break;
case 4: // Tekan kelima = semua LED mati
// sudah dimatikan di atas, tidak perlu apa-apa
break;
case 5: // Tekan keenam = akan direset jadi currentStep 0 di loop()
break;
}
}Loading
esp32-devkit-c-v4
esp32-devkit-c-v4