comando swich


ciao ragazzi innanzitutto posto il codice

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:

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