ciao ragazzi innanzitutto posto il codice
spiego in breve.
1)ho 2 pulsanti start e motorino e 2 led engine e ignition
2)alla pressione start si accende il led ignition e rimane acceso solo se entro 3 secondi io prema il pulsante motorino che allo stesso tempo accende il led engine.nel caso in cui non prema il secondo pulsante il tutto torna allo stato di spento.
3) alla seconda pressione di start tutto torna spento.
adesso controllando tramite seriale il codice che vi ho postato, entra sempre dentro else if del case1 anche se la variabile statoengine è su 0. potete aiutarmi?
code: [select]
switch (statoengine) {
case 0:
if (digitalread(start)) { //destra nero 6
digitalwrite(ignition, high); //giallo 7
timer = millis();
statoengine++;
break;
}
case 1:
if (digitalread(motorino)) { //sinistra rosso 4
digitalwrite(engine, high);//rosso 8
delay(3000);
digitalwrite(engine, low);//rosso 8
statoengine++;
}
else if (millis() - timer > 3000) {
digitalwrite(ignition, low); //giallo 7
break;
}
case 2:
if (digitalread(start)) { //destra nero 6
digitalwrite(engine, low);//rosso 8
digitalwrite(ignition, low);//giallo 7
statoengine = 0;
break;
}
}
delay(10);
}
spiego in breve.
1)ho 2 pulsanti start e motorino e 2 led engine e ignition
2)alla pressione start si accende il led ignition e rimane acceso solo se entro 3 secondi io prema il pulsante motorino che allo stesso tempo accende il led engine.nel caso in cui non prema il secondo pulsante il tutto torna allo stato di spento.
3) alla seconda pressione di start tutto torna spento.
adesso controllando tramite seriale il codice che vi ho postato, entra sempre dentro else if del case1 anche se la variabile statoengine è su 0. potete aiutarmi?
metti il break nel case 0 e negli altri case:
ciao
duecce
code: [select]
switch (statoengine) {
case 0:
if (digitalread(start)) { //destra nero 6
digitalwrite(ignition, high); //giallo 7
timer = millis();
statoengine++;
break;
}
break;
case 1:
if (digitalread(motorino)) { //sinistra rosso 4
digitalwrite(engine, high);//rosso 8
delay(3000);
digitalwrite(engine, low);//rosso 8
statoengine++;
}
else if (millis() - timer > 3000) {
digitalwrite(ignition, low); //giallo 7
break;
}
break;
case 2:
if (digitalread(start)) { //destra nero 6
digitalwrite(engine, low);//rosso 8
digitalwrite(ignition, low);//giallo 7
statoengine = 0;
break;
}
break;
}
delay(10);
}
ciao
duecce
Arduino Forum > International > Italiano > Generale (Moderator: leo72) > comando swich
arduino
Comments
Post a Comment