#define LED 2
volatile bool ledState = LOW;
unsigned long previousMillis = 0;
const unsigned long interval = 1000; // Interval waktu dalam milidetik (1 detik)
void toggleLED() {
ledState = !ledState;
digitalWrite(LED, ledState);
}
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600); // Inisialisasi komunikasi serial dengan baud rate 9600
// Konfigurasi interrupt timer
noInterrupts();
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 31250; // Timer akan terpicu setiap 1 detik (dengan prescaler 256)
TCCR1B = (1 << WGM12) | (1 << CS12); // Prescaler 256 dan mode CTC (Clear Timer on Compare Match)
TIMSK1 |= (1 << OCIE1A);
interrupts();
}
void loop() {
// Kode lainnya dapat ditambahkan di sini jika diperlukan
}
ISR(TIMER1_COMPA_vect) {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
toggleLED();
}
Serial.print(currentMillis);
Serial.print(" - LED ");
Serial.println(ledState == HIGH ? "HIDUP" : "MATI");
}