#define LED_PIN 26
#define BUTTON_PIN 27
#define V_PIN 4
hw_timer_t * timerled = NULL;
double t;
volatile int cont;
volatile bool timer_on;
IRAM_ATTR void changeState()
{
timer_on = true;
cont++;
}
IRAM_ATTR void ISRled()
{
timerStart(timerled);
}
void setup() {
t=0.0;
cont = 0;
timer_on = false;
timerled = timerBegin(1000000);
timerAttachInterrupt (timerled, &changeState);
timerAlarm(timerled, 250000, true, 0);
timerStop(timerled);
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), ISRled, RISING);
}
void loop() {
double frecuencia = 1/((millis()-t)/1e3);
Serial.print("Frecuencia: ");
Serial.println(frecuencia);
Serial.println(analogRead(V_PIN));
if(timer_on)
{
if(cont <10){
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
}
if(cont == 10)
{
cont = 0;
timerStop(timerled);
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
}
timer_on = false;
}
t=millis();
delay(50); // this speeds up the simulation
}