Untitled
unknown
plain_text
a year ago
1.4 kB
13
Indexable
const int led1Pin = 12;
const int led2Pin = 14;
const int buttonPin = 27;
hw_timer_t *timer = NULL;
volatile int timerInterruptCount = 0;
const long timerInterval = 3500000; //Absen 33
volatile int externalInterruptCount = 0;
volatile unsigned long lastButtonPressTime = 0;
volatile bool led1State = LOW;
volatile bool led2State = LOW;
void IRAM_ATTR onTimer() {
led1State = !led1State;
digitalWrite(led1Pin, led1State);
timerInterruptCount++;
}
void IRAM_ATTR onButtonPress() {
if (millis() - lastButtonPressTime > 50) {
led2State = !led2State;
digitalWrite(led2Pin, led2State);
externalInterruptCount++;
lastButtonPressTime = millis();
}
}
void setup() {
Serial.begin(115220);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
timer = timerBegin(1000000);
timerAttachInterrupt(timer, &onTimer);
timerAlarm(timer, timerInterval, true, 0);
attachInterrupt(digitalPinToInterrupt(buttonPin), onButtonPress, FALLING);
Serial.println("Setup selesai. Menunggu interupsi...");
}
void loop() {
static unsigned long lastPrintTime = 0;
if (millis() - lastPrintTime > 1000) {
Serial.print("Interupsi Internal: ");
Serial.print(timerInterruptCount);
Serial.print(" | Interupsi Eksternal: ");
Serial.println(externalInterruptCount);
lastPrintTime = millis();
}
}Editor is loading...
Leave a Comment