/****************************************************************
Manuel Córdoba Ramos 06/11/24
Tema 6. Problema 1: Pérdida de datos
Cada vez que se pulse el botón, debe cambiar el estado del LED
En este caso deben utilizarse interrupciones
****************************************************************/
#define POT_IN 4
#define LED_PIN 33
#define BUTTON_IN 27
// Variables
double t;
double freq;
// Manejadores de interrupciones
void IRAM_ATTR ISR_Boton(void){
digitalWrite(LED_PIN,!digitalRead(LED_PIN));
}
void setup() {
Serial.begin(9600);
Serial.println("Reading the potenciometer!");
// I/O configuration
pinMode(POT_IN, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_IN, INPUT_PULLUP);
// Interrupciones
attachInterrupt(digitalPinToInterrupt(BUTTON_IN),&ISR_Boton,FALLING);
// Inicialización de variables
t = 0.0;
freq = 0.0;
}
void loop() {
Serial.println("Lectura analogica:");
Serial.println(analogRead(POT_IN));
freq = 1/double((millis()-t)/1000);
t = millis();
Serial.println("Frecuencia:");
Serial.println(freq);
delay(20);
}