L9: El timer
Categorías:
Etiquetas:
El timer
Qué vas a aprender en esta lección
En esta lección trabajaremos:
- Qué es un timer o temporizador.
- Diferencia entre esperar dentro del bucle principal y usar un evento periódico.
- Cómo ejecutar bloques cada cierto tiempo.
- Cómo activar y desactivar un temporizador.
- Uso de variables para recordar el estado entre un salto del timer y el siguiente.
Requisitos previos
Para poder seguir esta lección debes haber completado la Lección 1: Mi primer proyecto, la Lección 3: El diodo LED (2), la Lección 6: El puerto serie y la Lección 8: El pulsador (2).
Explicación teórica
En las primeras lecciones usamos el bloque esperar para crear pausas. Por ejemplo, encendíamos un LED, esperábamos un segundo, lo apagábamos y esperábamos otro segundo.
Eso funciona bien para programas sencillos. Pero a veces queremos que algo ocurra cada cierto tiempo sin llenar el bucle principal de esperas. Para eso podemos usar un timer o temporizador.
Un timer es como una alarma que se repite. Le indicamos un intervalo de tiempo y, cada vez que se cumple, ejecuta unos bloques.
¡Quiero saber más!
Esperar no es lo mismo que temporizar
Cuando usamos un bloque esperar, el programa se queda parado durante ese tiempo antes de pasar al siguiente bloque. Es parecido a decir:
No hagas nada durante un segundo.
En cambio, un temporizador funciona como un evento:
Cada segundo, avísame y ejecuta esta parte.
Esto se parece mucho a lo que hicimos con el pulsador en la lección anterior. El pulsador lanzaba un evento cuando cambiaba a ON u OFF. El timer lanza un evento cuando llega el momento programado.
Un evento periódico
Decimos que el timer es periódico porque se repite una y otra vez. Si configuramos un timer de 1 segundo:
- Pasa 1 segundo -> salta el timer.
- Pasa otro segundo -> salta otra vez.
- Pasa otro segundo -> vuelve a saltar.
Mientras el timer esté habilitado, seguirá generando eventos.
Variables y estado
Un timer suele necesitar una variable para recordar qué pasó la última vez. Por ejemplo, si queremos que un LED parpadee:
- Si el LED estaba apagado, lo encendemos.
- Si estaba encendido, lo apagamos.
Para saber qué toca hacer, el programa necesita recordar el estado anterior. Esa información se guarda en una variable.
Igual que con las interrupciones del pulsador, conviene que los bloques dentro de un evento de timer sean claros y no demasiado largos. El timer sirve para marcar el ritmo, no para meter dentro un programa enorme.
Parte Práctica
Necesitas los siguientes materiales:
- Placa de desarrollo ESP32.
- Placa de expansión BatSTEM.
- Cable de conexion USB.
- Placa de prototipos.
- LED rojo.
- Resistencia de 100 Ohm.
- Cables de conexión.
Esquema electrónico
Usaremos un LED externo conectado al pin GPIO4 con una resistencia de protección de 100 Ohm.

Diagrama de conexión
Puedes reutilizar el montaje del LED externo de las lecciones 3 y 4.

Conexión de los componentes en la placa de prototipos
Paso a paso
- Conecta GND de la placa de expansión a la línea azul de la placa de prototipos.
- Conecta el pin GPIO4 a una línea libre de la placa de prototipos.
- Coloca la resistencia de 100 Ohm en serie con el LED.
- Conecta el cátodo del LED a GND.
- Conecta la placa al ordenador con el cable USB.
Código
Parpadeo usando un timer
Construye y ejecuta el siguiente sketch:

Paso a paso
- En configuración, añade un bloque “LED con nombre”.
- Llámalo MiLED y selecciona el pin GPIO4.
- Crea una variable llamada EstadoLED con valor inicial 0.
- Añade un bloque “temporizador con nombre”.
- Llámalo Parpadeo.
- Configúralo para que salte cada 1 segundo y se inicie automáticamente.
- Añade un bloque “cuando Parpadeo salta”.
- Dentro del evento, usa un bloque si…si no:
- Si EstadoLED es igual a 0, pon MiLED a 100 y pon EstadoLED a 1.
- Si no, pon MiLED a 0 y pon EstadoLED a 0.
Cuando ejecutes el sketch, el LED cambiará de estado cada segundo.
El bucle principal no tiene que hacer el parpadeo. El ritmo lo marca el temporizador.
Activar y desactivar un timer
También podemos controlar si un timer está activo. En este ejemplo, un pulsador desactiva el temporizador al presionarlo y lo vuelve a activar al soltarlo.

Paso a paso
- Mantén el LED, la variable EstadoLED y el temporizador Parpadeo del ejercicio anterior.
- Añade un Botón/interruptor con nombre llamado MiBoton conectado al pin GPIO4 o a otro pin libre si tu montaje usa GPIO4 para el LED.
- Añade el evento “cuando MiBoton cambie a ON”.
- Dentro de ese evento, usa el bloque “poner timer Parpadeo a deshabilitado”.
- Añade el evento “cuando MiBoton cambie a OFF”.
- Dentro de ese evento, usa el bloque “poner timer Parpadeo a habilitado”.
Al presionar el botón, el parpadeo se pausa. Al soltarlo, el parpadeo continúa.
Si haces este segundo ejercicio con un LED externo, usa pines distintos para el LED y para el pulsador. Por ejemplo, LED en GPIO16 y pulsador en GPIO4.
¡Quiero saber más!
¿Por qué usamos una variable?
El timer salta cada segundo, pero no sabe por sí solo si el LED está encendido o apagado. La variable EstadoLED guarda esa información.
En este sketch usamos:
- 0 para indicar apagado.
- 1 para indicar encendido.
Cada vez que salta el timer, el programa mira la variable, hace lo contrario y actualiza la variable para la próxima vez.
Temporizadores y botones
Un temporizador y un botón pueden trabajar juntos:
- El timer marca el ritmo.
- El botón decide si ese ritmo está activo o no.
Esta combinación aparece en muchos proyectos: alarmas, señales luminosas, juegos, contadores y sistemas automáticos que se pueden pausar.
Ejercicios adicionales o retos
- Cambia el tiempo del timer a 500 milisegundos para que el parpadeo sea más rápido.
- Cambia el tiempo del timer a 2 segundos para que el parpadeo sea más lento.
- Añade el puerto COM y escribe EstadoLED cada vez que salte el temporizador.
- Usa un LED RGB y cambia entre rojo y azul en cada salto del timer.
- Crea dos temporizadores: uno para un LED y otro para otro LED, con tiempos distintos.
Pistas para los retos
- Si quieres usar milisegundos, selecciona milisegundos en el bloque del temporizador.
- Para escribir en el puerto COM, configura primero el puerto a 115200 bps. El monitor COM funciona siempre a esa velocidad.
- Para alternar colores, puedes usar una variable parecida a EstadoLED.
- Si usas dos temporizadores, ponles nombres diferentes para no confundirte.
Resumen de lo aprendido
- Hemos aprendido qué es un timer.
- Hemos usado un temporizador para ejecutar bloques cada cierto tiempo.
- Hemos visto que un timer funciona como un evento periódico.
- Hemos usado una variable para recordar el estado del LED.
- Hemos activado y desactivado un timer desde un pulsador.
- Hemos comparado el uso de esperar con el uso de temporizadores.
Próximos pasos
- Ya puedes combinar entradas, salidas, variables, puerto COM, interrupciones y temporizadores para construir proyectos más completos.
Soluciones a ejercicios adicionales
Mostrar
Enviar EstadoLED al monitor COM
Para ver el estado en el monitor COM:
- Añade “configurar el puerto COM a 115200 bps” en configuración.
- Dentro de “cuando Parpadeo salta”, añade “escribir EstadoLED en el puerto COM” después de cambiar la variable.
Así podrás comprobar en el ordenador si el programa está alternando entre 0 y 1.