Ejemplo paso a paso para los que empiezan con Arduino
Vamos a simular un sistema de alarma de forma que leo por una entrada y cuando detecto 0 voltios, ejecuto una acción sobre una salida indicando que tengo una alarma, por ejemplo una sirena, un SMS o enciendo una luz de emergencia.
La entrada será el pin digital 7 y la salida el led integrado en arduino accesible desde el pin digital 13.
Pasos a realizar
Paso/Commit | Tarea | Errores Detectados | Código |
---|---|---|---|
1 | Leer el pin digital 7 y si es 0 enciendo el led integrado en el pin 13, sino lo apago | Se ve parpadear o reducir la luminosidad del led cuando el pin está al aire no conectado a GND o 5V | Código Paso 1 |
2 | Poner el pin 7 en modo INPUT_PULLUP | Ahora si no hay nada conectado está apagado y poner el pin 7 a masa se enciende el led | Código Paso 2 |
3 | Simulando la lectura de un relé, sacar por puerto serie ALARMA cuando ponga GND el pin 7 | Manda alarma continuamente no al detectar un cambio en el estado | Código Paso 3 |
4 | Añadir una variable con el estado de alarma y compararlo el estado anterior para madar ALARMA o RECUPERACION ALARMA | Se observan rebotes | Código Paso 4 |
5 | Añadir un delay de 100ms al final del loop | ¡¡FUNCIONA!! | Código Paso 5 |
Conclusión
Cuando quiero detectar cambios de estado debo guardar en una variable el estado y comparar con el estado actual y cuando hay un cambio ejecuto la acción correspondiente.
No es necesario hacer digitalWrite en cada loop, es mejor hacerlo cuando se detecte el cambio de estado que lo dispara
Código
Ver https://github.com/jecrespo/PrimerosPasosArduino
Pasos dados y cambios en el código
Ver: https://github.com/jecrespo/PrimerosPasosArduino/commits/master