Temporizador de Lavado de Manos Sin Contacto con Alertas Musicales
Componentes y suministros
| Arduino UNO | ×1 |
| Caja ProtoStax para Arduino | ×1 |
| Caja ProtoStax para Protoboards/Placas personalizadas | ×1 |
| Kit de apilamiento horizontal ProtoStax | ×1 |
| Sensor ultrasónico HC-SR04 genérico | ×1 |
| Kit ProtoStax para sensor ultrasónico HC-SR04 | ×1 |
| Display 7 segmentos 4 dígitos 0.56" I2C (Adafruit) - Azul | ×1 |
| Zumbador piezoeléctrico Adafruit PS1240 | ×1 |
| Protoboard sin soldadura (medio) | ×1 |
Aplicaciones y servicios en línea
- Arduino IDE
Sobre el proyecto
El lavado de manos siempre ha sido clave en prevención de enfermedades, y cobró mayor relevancia durante la pandemia de COVID-19. El CDC recomienda frotarse las manos durante 20 segundos.
Este temporizador musical se activa al pasar la mano frente al sensor ultrasónico, muestra la cuenta regresiva en display 7 segmentos y reproduce una melodía de 20 segundos de una lista preprogramada (rotativa). Incluye: Cumpleaños Feliz, Do-Re-Mi (Sonrisas y lágrimas), We Will Rock You (Queen) y Tema de Jeopardy. Puedes añadir tus propias melodías transcribiendo partituras.
Paso 1 - Esquemático
Usa Arduino Uno, display 7 segmentos I2C, sensor HC-SR04 y zumbador piezo. Ver esquemático adjunto.
Paso 2 - Planificación y montaje
Usé cajas ProtoStax apilables (soportan Arduino, Raspberry Pi y protoboard). Elegí caja para Arduino y para protoboard. El sensor ultrasónico va en pared lateral accesible (kit ProtoStax para HC-SR04).
Primero apilé horizontalmente las bases de Arduino y protoboard para prototipar. Luego pueblé componentes según esquemático. El sensor HC-SR04 se fija en la pared lateral que encaja en la ranura de la base.
Paso 3 - Programación y pruebas
Desarrollé el código en la plataforma de prototipado. Video de pruebas muestra el funcionamiento (¡incluso se oye el "ping" ultrasónico en la grabación!). Tras confirmar todo, cerré la caja con paredes laterales, conectores y tapas.
Entendiendo el código
Inicialización de componentes
Adafruit_7segment matrix = Adafruit_7segment();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
matrix.begin(0x70);
Bucle principal (alto nivel)
- Leer sensor ultrasónico para detectar activación.
- Si se activa: guardar tiempo actual, iniciar cuenta regresiva (20 seg), seleccionar siguiente melodía (round-robin), iniciar reproducción.
if (distance < 10 && !startMusic) {
startMusic = 1;
countDown = 20;
currentTime = millis();
melodyNum = (melodyNum + 1) % NUM_MELODIES;
}
¡Mira mamá, sin delay()!
Dos tareas simultáneas: actualizar cuenta regresiva y reproducir melodía con tiempos correctos. No se puede usar delay().
La función tone() es no bloqueante (usa Timer2). Usamos millis() y variables locales para medir tiempo transcurrido, permitiendo otras operaciones mientras suena la nota.
Transcribir música fácilmente - Notas enteras, corcheas, etc.
Estructura Note asocia frecuencia y duración relativa. Macros para duraciones:
typedef struct Note { int frequency; float duration; } Note;
#define NOTE_WHOLE 1
#define NOTE_HALF 0.5f
#define NOTE_QUARTER 0.25f
#define NOTE_EIGHTH 0.125f
#define NOTE_SIXTEENTH 0.0625f
#define DOTTED(X) (X * 1.5f)
Ejemplo: Cumpleaños Feliz transcrito nota por nota con duraciones relativas. La melodía incluye array de notas, número de notas y duración de nota entera en ms.
typedef struct Melody { Note *notes; int numNotes; int wholeNoteDurationMs; } Melody;
Melody melodies[] = { {melody, MELODY_LENGTH(melody), 1250}, ... };
En el bucle, al iniciar temporizador y música, se usa esa info para reproducir notas. Entre notas, se actualiza cuenta regresiva y display. La melodía suena completa aunque pasen los 20 segundos (cuenta se vuelve negativa). Si la melodía es muy corta, repite hasta completar 20 seg y fin de canción.
Llevar el proyecto más lejos
- Transcribe tu canción favorita usando macros
NOTEyDOTTED. Comenta otras melodías para ahorrar memoria SRAM. - Las melodías consumen SRAM (llegué a 96% con 4 canciones, fallaba display). Mueve arrays
NoteyMelodya PROGMEM (memoria Flash). Resultado: 76% → 22% SRAM, permitiendo muchas más canciones. Avanzado: requiere leer progmem para acceder a structs.
¡Comparte tus ideas de extensión!
Código
Repositorio GitHub: ProtoStax Touchless Musical Handwash Timer
Esquemáticos

Proceso de manufactura
- Mejores Prácticas Comprobadas para Inspeccionar Estaciones de Lavado de Manos
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Entender el Watchdog Timer: Cómo evita bloqueos del microcontrolador
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
- Construye un Temporizador Regresivo Fiable con Arduino y Pantalla de 7 Segmentos SparkFun