Guarar los valores de los Led en la EEPROM.

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.

Debes utilizar PROGMEM
http://arduino.cc/es/Reference/PROGMEM

No te funciono lo que te puse?

http://forum.arduino.cc/index.php?topic=201162.15

Buenas:

Gracias a los dos.

No he probado ninguno por motivos que en navidades estoy en el trabajo a full, no tengo tiempo, estos días tendré vacaiones y los pruebo, les comentaré si funcionan o no las dos partes que me han presentado.

Gracias de nuevo.