Buenas Arduinian@s:
Hice un pequeño código donde el pulsador es de tipo togle (palanca), es decir, si pulso el pulsador el Led se mantiene encendido, si lo vuelvo a pulsar, el Led se queda apagado. Hay otro pulsador para el ventilador.
El codigo es este para el Teensy ++ 2.0:
int Pulsador_1 = PIN_B0; // Pulsador conectado a GND o masa.
int Pulsador_2 = PIN_B1; // Pulsador conectado a GND o masa.
int Led = PIN_D0; // Led.
int Ventilador = PIN_D1; // Ventilador 12 Vdc.
// int Led_Teensy = PIN_D6; // Led naranja que incorpora Teensy ++ 2.0.
int Estado_1 = 0; // Estado de la variable.
int Estado_2 = 0;
int Estado_Led = 0; // Estado del led.
int Estado_Ventilador = 0;
int Estado_Anterior_1 = 1; // Inicia Teensy con valor 0, el Led encendido, 1, empieza Led apagado.
int Estado_Anterior_2 = 0; // El ventilador desactivado en este caso. Por temas de polaridad con el L293D.
void setup()
{
pinMode(Led, OUTPUT); // Salida para el Led pin 0 del Teensy ++ 2.0.
pinMode(Ventilador, OUTPUT);
pinMode(Pulsador_1, INPUT); // Entrada del pulsador 1.
pinMode(Pulsador_2, INPUT);
}
void loop()
{
// Pulsador Led.
Estado_1 = digitalRead(Pulsador_1); // Lee el estado del botón.
if ((Estado_1 == HIGH) && (Estado_Anterior_1 == LOW))
{
Estado_Led = 1 - Estado_Led;
delay(20);
}
Estado_Anterior_1 = Estado_1;
if (Estado_Led == 1)
{
digitalWrite(Led, HIGH);
}
else
{
digitalWrite(Led, LOW);
}
// **************************************************************
// Pulsador Ventilador.
Estado_2 = digitalRead(Pulsador_2); // Lee el estado del botón.
if ((Estado_2 == HIGH) && (Estado_Anterior_2 == LOW))
{
Estado_Ventilador = 1 - Estado_Ventilador;
delay(20);
}
Estado_Anterior_2 = Estado_2;
if (Estado_Ventilador == 1)
{
digitalWrite(Ventilador, HIGH);
}
else
{
digitalWrite(Ventilador, LOW);
}
}
Como puede ver en el vídeo de abajo, funciona de maravilla. Cuando apago Teensy ++ 2.0 o le quito el cable USB que lo alimenta,los estados de las salidas del Led y ventilador no se quedan guardados en la EEPROM interna del AVR.
¿Cuál es la mejor manera de programarlo?
PD: Quizás se pueda optimizar el código del On/Off de los pulsadores mejor que hice arriba. Puedes ayudar en esto si lo deseas para mejorar el código antes de meternos en la EEPROM.