// Pin yang digunakan untuk LED built-in pada ESP32
#define LED_PIN 2
// Pin yang digunakan untuk tombol (active low)
#define BUTTON_PIN 15
volatile bool buttonPressed = false;
// Callback interrupt untuk tombol
void IRAM_ATTR buttonInterrupt() {
buttonPressed = true;
}
// Fungsi task untuk blinking LED
void ledTask(void *pvParameters) {
(void)pvParameters;
pinMode(LED_PIN, OUTPUT);
while (1) {
digitalWrite(LED_PIN, HIGH);
vTaskDelay(pdMS_TO_TICKS(750)); // Delay 750 milidetik
digitalWrite(LED_PIN, LOW);
vTaskDelay(pdMS_TO_TICKS(750)); // Delay 750 milidetik
if (buttonPressed) {
Serial.println("Tombol ditekan");
buttonPressed = false; // Reset the button state
}
}
}
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT_PULLUP);
// Membuat task untuk blinking LED
xTaskCreate(ledTask, "LED Task", 1000, NULL, 1, NULL);
// Menghubungkan interrupt tombol dengan fungsi callback
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), buttonInterrupt, FALLING);
}
void loop() {
// Tidak ada operasi yang dilakukan di loop utama
}