Prova così:
const byte pinLED = 13;
const byte pinB1 = 9;
const byte pinB2 = 8;
const byte pinB3 = 7;
int var=0;
void setup()
{ delay(1000);
Serial.begin(9600);
Serial.println("setup");
pinMode(pinLED, OUTPUT);
pinMode(pinB1, INPUT);
pinMode(pinB2, INPUT);
pinMode(pinB3, INPUT);
}
void loop()
{ if (digitalRead(pinB1)==HIGH)
{ if(var==0) var=1; else var=0; // oppure più sintetico: var=(var==0?1:0);
}
if (digitalRead(pinB2)==HIGH)
{ if(var==1) var=2; else var=0; // oppure più sintetico: var=(var==1?2:0);
}
if (digitalRead(pinB3)==HIGH)
{ if(var==2) var=3; else var=0;
}
if (var==3)
{ Serial.println( F("led acceso") );
digitalWrite(pinLED, HIGH);
delay(5000);
var=0;
}
else
{ Serial.println( F("led spento") );
digitalWrite(pinLED, LOW);
}
delay(100); // per debounce dei pulsanti
Serial.print( F("var: ") ); Serial.println( var );
}
Ti ho aggiunto anche un pò di stampa messaggi verso il pc (serial monitor) per debuggare/verificare cosa succede.