#define RED 1
#define YELLOW 5
#define GREEN 9
#define BUTTON 26
unsigned long lastMilli = 0;
void setup() {
Serial1.begin(115200);
Serial1.printf("Hello Pico");
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BUTTON, INPUT);
attachInterrupt(digitalPinToInterrupt(BUTTON), button_interrupt, LOW);
// detachInterrupt(digitalPinToInterrupt(BUTTON));
}
void loop() {
// digitalWrite(GREEN, HIGH);
// delay(3000);
// digitalWrite(GREEN, LOW);
// digitalWrite(YELLOW, HIGH);
// delay(500);
// digitalWrite(YELLOW, LOW);
// digitalWrite(RED, HIGH);
// delay(2000);
// digitalWrite(YELLOW, HIGH);
// delay(500);
// digitalWrite(YELLOW, LOW);
// digitalWrite(RED, LOW);
// Serial1.println(digitalRead(RED));
// Serial1.println(digitalRead(BUTTON));
// delay(1);
}
void button_interrupt() {
// unsigned long interruptMilli = millis();
// if (debounce(interruptMilli)) {
// digitalWrite(RED, !digitalRead(RED));
// }
// lastMilli = interruptMilli;
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
// If interrupts come faster than 200ms, assume it's a bounce and ignore
if (interrupt_time - last_interrupt_time > 200)
{
digitalWrite(RED, !digitalRead(RED));
}
last_interrupt_time = interrupt_time;
Serial1.println(last_interrupt_time);
}
bool debounce(unsigned int interruptMilli) {
if(interruptMilli - lastMilli > 200) {
Serial1.println(interruptMilli, lastMilli);
return true;
}
return false;
}