#include <utils.h>
#define ledPin 13
#define btnPin 12
int count;
volatile bool btnState;
volatile unsigned long lastPressed;
int ledDelays[3] = {1000,500,200};
void setup() {
// initialize pins, variables, interrupts and serial
pinMode(btnPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
count = 0;
btnState = false;
lastPressed = 0;
attachInterrupt(digitalPinToInterrupt(btnPin), btnPressHandler, FALLING);
Serial.begin(9600);
}
void btnPressHandler() {
unsigned long now = micros();
if(now - lastPressed >= 100000) {
btnState = true;
lastPressed = micros();
}
}
void loop() {
if(btnState) {
count++;
btnState = false;
Serial.print("Blink Duration: ");
Serial.println(ledDelays[count%3]);
}
int delayTime = ledDelays[count%3];
delay(delayTime);
digitalWrite(ledPin, HIGH);
delay(delayTime);
digitalWrite(ledPin, LOW);
delay(10);
}
Loading
st-nucleo-c031c6
st-nucleo-c031c6