#define pulsador 32
#define led 14
#define pinPot 4
double t;
volatile bool pulsado = false;
volatile bool timer_activado = false;
volatile int counter = 0;
const uint32_t frequency = 1000000; //1MHz
const uint8_t max_counter = 10;
hw_timer_t*timer = NULL;
void IRAM_ATTR leerPulsador() {
digitalWrite(led, LOW);
counter = 0;
timerStart(timer);
}
void IRAM_ATTR TimerOn() {
counter++;
timer_activado = true;
}
void setup() {
Serial.begin(115200);
pinMode(pulsador, INPUT_PULLUP); // configures pulsador as an input with a PULL-UP resistor
pinMode(led, OUTPUT);
attachInterrupt(digitalPinToInterrupt(pulsador), leerPulsador, FALLING);
timer = timerBegin(frequency);
timerAttachInterrupt(timer, &TimerOn);
timerAlarm(timer, 500000, true, 0);
timerStop(timer);
}
void loop() {
if (timer_activado) {
if(counter < max_counter) {
digitalWrite(led, !digitalRead(led));
}
else if (counter == max_counter) {
digitalWrite(led, !digitalRead(led));
counter = 0;
timerStop(timer);
}
timer_activado = false;
}
int v = analogRead(pinPot); //Lee el valor analógico que hay en el pin 4 y lo guarda en v
double frecuencia = 1.0/((millis()-t)/1e3);
Serial.print("Frecuencia: ");
Serial.println(frecuencia);
Serial.println(v);
t = millis();
delay(50); //20Hz
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4