#include <Arduino.h>
#define BUTTON 12
#define LED1 21
#define LED2 18
volatile bool buttonPressed = false;
volatile unsigned long buttonPressStartTime = 0;
unsigned long elapsedTime;
unsigned long lastPrintTime = 0;
bool x = false;
bool y = false;
bool estado = LOW;
void buttonInterrupt() {
if (digitalRead(BUTTON) == HIGH) {
buttonPressed = true;
buttonPressStartTime = millis();
} else {
buttonPressed = false;
}
}
void setup() {
Serial.begin(115200);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(BUTTON, INPUT);
attachInterrupt(digitalPinToInterrupt(BUTTON), buttonInterrupt, CHANGE);
}
void loop() {
if (buttonPressed) {
elapsedTime = millis() - buttonPressStartTime;
unsigned long currentTime = millis();
if (currentTime - lastPrintTime >= 20){
Serial.println(elapsedTime);
lastPrintTime = currentTime;
}
}
if (elapsedTime >= 20 && buttonPressed == LOW && y == false ){
digitalWrite(LED1, HIGH);
y = true;
elapsedTime = 0;
}
if (elapsedTime >= 20 && elapsedTime < 1000 && buttonPressed == LOW && y == true){
digitalWrite(LED1, LOW);
y= false;
elapsedTime = 0;
}
if (elapsedTime >= 3000 && buttonPressed == LOW && x == false ){
digitalWrite(LED2, HIGH);
x = true;
elapsedTime = 0;
}
if (elapsedTime >= 3000 && buttonPressed == LOW && x == true){
digitalWrite(LED2, LOW);
x = false;
elapsedTime = 0;
}
}