Bonjour,
J'ai decouvert l'Arduino depuis peu en remettant en route mon train electrique pour mon fils que j'aimerai controler automatiquement.
Je bute deja sur un probleme que je n'arrive pas à resoudre et qui parait pourtant trés simple
Pour contrôler le tout, j' utilise des boutons poussoirs pour ne pas avoir de commutateurs qui gardent une position physique.
mon but: un "tronçon de voie" a 3 états : arret(3), en attente pour arret(2) et marche(1)
je veux qu'a chaque pression sur le bouton poussoir, je change d'état, hors, à chaque fois le code "if"s'execute" plusieurs fois jusqu'a ce que je sois à l'état 3. lorsque je ré-appuie sur le bouton "if" se rejoue 3 fois.
A chaque fois, j'affiche dans le serial "fin de switch", donc je pense que c'est bien un probleme sur mon code if.
Merci beaucoup !!
int pinBoutonTroncon1=2; //variable des pins ou sont branchés les boutons
int pinBoutonTroncon2;
int pinBoutonTroncon3;
int pinBoutonTroncon4;
int pinTroncon1=2; //pin des sorties vers relais des troncons
int pinTroncon2;
int pinTroncon3;
int pinTroncon4;
int troncon1=1; //etat des troncons :
int troncon2=0; //etat 1 : train passe, feu vert
int troncon3=0; //etat 2 : voie alimentée, feu rouge, detecteur de mouvement
int troncon4=0; //etat 3 : voie coupée, feu rouge
int pinFeuRougeT1=3; // feu rouge
int pinFeuVertT1;
void setup() {
Serial.begin(9600);
pinMode(pinBoutonTroncon1,INPUT);
pinMode(pinBoutonTroncon1,INPUT);
pinMode(pinBoutonTroncon1,INPUT);
pinMode(pinBoutonTroncon1,INPUT);
pinMode(pinTroncon1,OUTPUT);
pinMode(pinTroncon1,OUTPUT);
pinMode(pinTroncon1,OUTPUT);
pinMode(pinTroncon1,OUTPUT);
pinMode(pinFeuRougeT1,OUTPUT);
} //Fin Void setup
void loop() {
boolean b1=digitalRead(pinBoutonTroncon1); //surveillance du bouton 1
if (b1==1) {
delay(100);
b1=0;
Serial.println(b1);
troncon1++;
if (troncon1==4) {troncon1=1;}
Serial.print("Bouton troncon 1 enfoncé . Etat actuel :");
Serial.println(troncon1);
switch(troncon1){
case 1:
// passage à l etat 2 : la voie passe toujours et le feu doit passer au rouge, la led rouge doit clignoter, la verte doit s'eiteindre
Serial.println("passage à l etat 2");
digitalWrite(pinTroncon1, HIGH );
digitalWrite(pinFeuRougeT1, HIGH);
digitalWrite(pinFeuVertT1, LOW);
break;
case 2:
// passage à 2 etat 3 : le train s'arrete et le feu reste au rouge, la led est rouge
Serial.println("passage à l état 3");
digitalWrite(pinTroncon1, LOW);
digitalWrite(pinFeuRougeT1, HIGH);
digitalWrite(pinFeuVertT1, LOW);
break;
case 3:
// passage à 3 etat 1 : la voie passe et le feu passe au vert, la led doit rouge doit s'éteindre et la verte s'allumer
Serial.println("passage à l état 1");
digitalWrite(pinTroncon1, HIGH);
digitalWrite(pinFeuRougeT1, LOW);
digitalWrite(pinFeuVertT1, HIGH);
break;
}//fin de switch
Serial.println("fin du switch");
}//fin de if
b1=0;
}
// fin void loop