Hola de nuevo,
Tampoco te creas que yo llevo mucho tiempo con Arduino, empece hace unos tres meses. Pero a base de mucho leer, rebanarme los sesos y pedir socorro en algún momento dado XD me voy defendiendo.
Yo me compre el libro del que aquí se habla:
http://forum.arduino.cc/index.php?topic=145725.0
La verdad es que va bastante bien ya que empieza desde 0 (con decirte que empieza desde la ley de Ohm XD). Ademas, hay un ejemplo como el código que yo te he puesto.
El único "pero" que le encuentro al libro es que los ejemplos suelen ser solo de lo que se esta explicando en ese momento, no hay ejemplos de "miniproyectos" por así decirlo.
Y si no en youtube hay bastantes tutoriales que también empiezan desde 0.
Yo te recomiendo las dos cosas XD
Las llaves son como las paréntesis de las ecuaciones en matemáticas (por verlo de alguna manera) siempre que abres una tienes que cerrarla, yo lo que hago para no liarme es siempre que abro una llave la cierro también y escribo en el medio así seguro que no me la dejo sin poner jejejeje.
En cuanto a tu código si quieres controlar cuatro luces con cuatro pulsadores es escribir cuatro veces lo mismo, y para el apagado general lo que puedes hacer es poner a 0 el contador:
boolean estadoActual1=0; //Guarda el estado actual del botón1
boolean estadoUltimo1=0; //Guarda el último estado del botón1
boolean contador1=0; //Guarda las veces que se pulsa el botón1
boolean estadoActual2=0; //Guarda el estado actual del botón2
boolean estadoUltimo2=0; //Guarda el último estado del botón2
boolean contador2=0; //Guarda las veces que se pulsa el botón2
boolean estadoActual3=0; //Guarda el estado actual del botón3
boolean estadoUltimo3=0; //Guarda el último estado del botón3
boolean contador3=0; //Guarda las veces que se pulsa el botón3
boolean estadoActual4=0; //Guarda el estado actual del botón4
boolean estadoUltimo4=0; //Guarda el último estado del botón4
boolean contador4=0; //Guarda las veces que se pulsa el botón4
void setup()
{
pinMode(4, OUTPUT); //Donde esta conectado el LED1
pinMode(5, OUTPUT); //Donde esta conectado el LED2
pinMode(6, OUTPUT); //Donde esta conectado el LED3
pinMode(7, OUTPUT); //Donde esta conectado el LED4
pinMode(8, INPUT); //Donde esta conectado el pulsador1
pinMode(9, INPUT); //Donde esta conectado el pulsador2
pinMode(10, INPUT); //Donde esta conectado el pulsador3
pinMode(11, INPUT); //Donde esta conectado el pulsador4
pinMode(12, INPUT); //Donde esta conectado el pulsador5
}
void loop()
{
//Leo el nuevo estado actual del botón1
estadoActual1=digitalRead(8);
//Si este cambia respecto al estado justo anterior...
if (estadoActual1 != estadoUltimo1){
if (estadoActual1 == HIGH){
contador1 = contador1 +1;
}
}
//Guardo el estado actual para la siguiente comprobación
estadoUltimo1=estadoActual1;
if (contador1 % 2 == 0)
{
digitalWrite (4,LOW);
}
else
{
digitalWrite(4,HIGH);
}
//Leo el nuevo estado actual del botón2
estadoActual2=digitalRead(9);
//Si este cambia respecto al estado justo anterior...
if (estadoActual2 != estadoUltimo2){
if (estadoActual2 == HIGH){
contador2 = contador2 +1;
}
}
//Guardo el estado actual para la siguiente comprobación
estadoUltimo2=estadoActual2;
if (contador2 % 2 == 0)
{
digitalWrite (5,LOW);
}
else
{
digitalWrite(5,HIGH);
}
//Leo el nuevo estado actual del botón3
estadoActual2=digitalRead(10);
//Si este cambia respecto al estado justo anterior...
if (estadoActual3 != estadoUltimo3){
if (estadoActual3 == HIGH){
contador3 = contador3 +1;
}
}
//Guardo el estado actual para la siguiente comprobación
estadoUltimo3=estadoActual3;
if (contador3 % 2 == 0)
{
digitalWrite (6,LOW);
}
else
{
digitalWrite(6,HIGH);
}
//Leo el nuevo estado actual del botón4
estadoActual2=digitalRead(11);
//Si este cambia respecto al estado justo anterior...
if (estadoActual4 != estadoUltimo4){
if (estadoActual4 == HIGH){
contador4 = contador4 +1;
}
}
//Guardo el estado actual para la siguiente comprobación
estadoUltimo4=estadoActual4;
if (contador4 % 2 == 0)
{
digitalWrite (7,LOW);
}
else
{
digitalWrite(7,HIGH);
}
if(digitalRead(12)==HIGH){
contador1 == 0;
contador2 == 0;
contador3 == 0;
contador4 == 0;
}
}
Se podría simplificar usando algún que otro "for", pero te lo dejo así por que se vera mas claro.
(Por cierto esta sin probar)
Un saludo