Hello all, voila j'ai un probleme avec mon code arduino.
On est censé faire des feu de croisement en projet d'élec, et j'ai rajouté des boutons piétons. Donc quand le premier feu est rouge je fais un digitalRead sur le bouton pieton et ca marche nickel, et quand c'est l'autre feu qui est au rouge, je fais aussi un digitalRead cependant ce dernier me renvoie toujours la valeur HIGH.
Si quelqu'un pouvait l'aider a fixer ce bug ce serait sympas. Merci
Voici le code:
int v1r=2,v1j=3,v1v=4;
int p1r=5,p1v=6;
int v2r=9,v2j=10,v2v=11;
int p2r=8,p2v=7;
int button=12,button2=13;
int tpsvert=6000;
int i=0;
void setup()
{
pinMode(v1r,OUTPUT); //v1r = voie 1 Rouge
pinMode(v2r,OUTPUT); //p2v = pieton 2 vert
pinMode(v1j,OUTPUT);
pinMode(v2j,OUTPUT);
pinMode(v1v,OUTPUT);
pinMode(v2v,OUTPUT);
pinMode(p1r,OUTPUT);
pinMode(p2r,OUTPUT);
pinMode(p1v,OUTPUT);
pinMode(p2v,OUTPUT);
pinMode(button,INPUT);
pinMode(button2,INPUT);
}
void loop()
{
//initialisation
digitalWrite(v1v, HIGH);
digitalWrite(v1r,LOW);
digitalWrite(v1j,LOW);
digitalWrite(v2r,HIGH);
digitalWrite(v2j,LOW);
digitalWrite(v2v,LOW);
digitalWrite(p1r,LOW);
digitalWrite(p2r,HIGH);
digitalWrite(p1v,HIGH);
digitalWrite(p2v,LOW);
i=0;
tpsvert=6000;
do
{
if(digitalRead(button)==HIGH) //Si le bouton est appuyé durant
{ //les 6 secondes, le temps d'attente
tpsvert=3000; //est diminué par 2
}
i=i+250;
delay(250);
}while(i<tpsvert);
digitalWrite(v1v,LOW);//passage voie 1 au jaune
digitalWrite(v1j,HIGH);
digitalWrite(p1v,LOW);//pieton 1 au rouge
digitalWrite(p1r,HIGH);
delay(1000);
digitalWrite(v1j,LOW);//Passage voie 1 au jaune
digitalWrite(v1r,HIGH);
delay(1000);
digitalWrite(v2r,LOW);//Passage voie 2 au vert
digitalWrite(v2v,HIGH);
digitalWrite(p2r,LOW);
digitalWrite(p2v,HIGH);
i=0;
tpsvert=6000; //réinitialisation
do
{
if(digitalRead(button2)==HIGH) /*C'est ici que ca pose probleme*/
{
tpsvert=3000;
}
i=i+250;
delay(250);
}while(i<tpsvert);
i=0;
digitalWrite(v2v,LOW);//Passage orange voie 2
digitalWrite(v2j,HIGH);
digitalWrite(p2v,LOW);
digitalWrite(p2r,HIGH);
delay(1000);
digitalWrite(v2j,LOW);//Passage voie 2 au rouge
digitalWrite(v2r,HIGH);
delay(1000);
}