//----------------------------------------------------------
// Variables Globales
int led_estado = 0;
int pote_valor = 0;
hw_timer_t* timer = NULL; // Variable para el timer de HW
//----------------------------------------------------------
// Definición de constantes
#define PIN_LED 2 // GPIO 2 (digital) -> LED
#define PIN_POT 34 // GPIO 34 (analógico) -> POTENCIÓMETRO
#define SERIAL_SPEED 9600 // Velocidad del puerto serie
// Definir la frecuencia del temporizador (puedes ajustarlo a 1MHz, 5MHz, etc.)
#define FRECUENCIA 1000000 // 1 MHz en este caso
#define TIEMPO_TIMER 500000 // Cada 1 segundo (en microsegundos)
//----------------------------------------------------------
// Handler del timer por HW
void IRAM_ATTR onTimer()
{
// Realiza la acción cuando se cumple el tiempo determinado
led_estado = !led_estado;
digitalWrite(PIN_LED, led_estado);
}
//----------------------------------------------------------
// Setup
void setup()
{
// Inicia consola serie
Serial.begin(SERIAL_SPEED);
// Configura pin digital como salida -> LED
pinMode(PIN_LED, OUTPUT);
// Inicializa estado del LED
digitalWrite(PIN_LED, led_estado); // Asegura que el LED esté apagado
// Inicializa el temporizador con una frecuencia de 1 Hz (una interrupción cada 1 segundo)
timer = timerBegin(FRECUENCIA); // Nueva API: solo se especifica la frecuencia
// Asocia la función de interrupción al temporizador
timerAttachInterrupt(timer, &onTimer);
// Configura la alarma del temporizador: 1,000,000 microsegundos (1 segundo), repetitiva, sin límite de repeticiones
timerAlarm(timer, TIEMPO_TIMER, true, 0);
}
//----------------------------------------------------------
// Loop
void loop()
{
// Lee constantemente el valor del potenciómetro
pote_valor = analogRead(PIN_POT);
// Solo a modo informativo, muestra el estado del LED
Serial.print("LED: ");
Serial.print(led_estado);
Serial.print(" ");
// Solo a modo informativo, muestra el valor del potenciómetro
Serial.print("POT: ");
Serial.println(pote_valor);
delay(500); // Evita saturar la consola serie
}
//----------------------------------------------------------