Salut Fabien,
il se trouve que quelque chose ne tourne pas rond ds ton code ^^.
Ton programme ne rentrera jamais dans les 2nd conditions car les valeurs changent uniquement hors des 1er conditions.
Est ce que tu peux tester un petit truc ?
const int TempoAtteinte = 43;
const int Detecteurluminosite = 41;
const int Detecteurhaut = 45;
const int Detecteurbas = 47;
const int Marche1 = 2;
const int Marche2 = 3;
const int Marche3 = 4;
const int Marche4 = 5;
const int Marche5 = 6;
const int Marche6 = 7;
const int Marche7 = 8;
const int Marche8 = 9;
const int Marche9 = 38;
const int Marche10 = 40;
const int Marche11 = 42;
const int Marche12 = 44;
const int Marche13 = 46;
const int Marche14 = 48;
const int Marche15 = 50;
const int Marche16 = 52;
const int Deptempo = 39;
int Etat_det_luminosite = 0;
int Tempo_atteinte = 0;
int Etat_det_haut = 0;
int Etat_det_bas = 0;
void setup()
{
pinMode(Marche1, OUTPUT);
pinMode(Marche2, OUTPUT);
pinMode(Marche3, OUTPUT);
pinMode(Marche4, OUTPUT);
pinMode(Marche5, OUTPUT);
pinMode(Marche6, OUTPUT);
pinMode(Marche7, OUTPUT);
pinMode(Marche8, OUTPUT);
pinMode(Marche9, OUTPUT);
pinMode(Marche10, OUTPUT);
pinMode(Marche11, OUTPUT);
pinMode(Marche12, OUTPUT);
pinMode(Marche13, OUTPUT);
pinMode(Marche14, OUTPUT);
pinMode(Marche15, OUTPUT);
pinMode(Marche16, OUTPUT);
pinMode(Deptempo, OUTPUT);
pinMode(TempoAtteinte, INPUT);
pinMode(Detecteurluminosite, INPUT);
pinMode(Detecteurhaut, INPUT);
pinMode(Detecteurbas, INPUT);
}
void loop()
{
Etat_det_luminosite = digitalRead(Detecteurluminosite);
Etat_det_haut = digitalRead(Detecteurhaut);
Etat_det_bas = digitalRead(Detecteurbas);
Tempo_atteinte = digitalRead(TempoAtteinte);
if (Etat_det_bas==HIGH&&Etat_det_luminosite==LOW)
{
digitalWrite(39, HIGH);
delay(50);
digitalWrite(39, LOW);
delay(40);
digitalWrite(2, HIGH);
delay(40);
digitalWrite(3, HIGH);
delay(50);
digitalWrite(4, HIGH);
delay(60);
digitalWrite(5, HIGH);
delay(70);
digitalWrite(6, HIGH);
delay(80);
digitalWrite(7, HIGH);
delay(90);
digitalWrite(8, HIGH);
delay(100);
digitalWrite(9, HIGH);
delay(110);
digitalWrite(38, HIGH);
delay(120);
digitalWrite(40, HIGH);
delay(130);
digitalWrite(42, HIGH);
delay(140);
digitalWrite(44, HIGH);
delay(150);
digitalWrite(46, HIGH);
delay(160);
digitalWrite(48, HIGH);
delay(170);
digitalWrite(50, HIGH);
delay(180);
digitalWrite(52, HIGH);
while (Tempo_atteinte != HIGH && Etat_det_haut != HIGH) {
Etat_det_haut = digitalRead(Detecteurhaut);
Tempo_atteinte = digitalRead(TempoAtteinte);
delay(0.1);
}
//on ajoute un while qui check jusqu'à un changement de valeur et on enlève le if.
digitalWrite(2, LOW);
delay(40);
digitalWrite(3, LOW);
delay(50);
digitalWrite(4, LOW);
delay(60);
digitalWrite(5, LOW);
delay(70);
digitalWrite(6, LOW);
delay(80);
digitalWrite(7, LOW);
delay(90);
digitalWrite(8, LOW);
delay(100);
digitalWrite(9, LOW);
delay(110);
digitalWrite(38, LOW);
delay(120);
digitalWrite(40, LOW);
delay(130);
digitalWrite(42, LOW);
delay(140);
digitalWrite(44, LOW);
delay(150);
digitalWrite(46, LOW);
delay(160);
digitalWrite(48, LOW);
delay(170);
digitalWrite(50, LOW);
delay(180);
digitalWrite(52, LOW);
}
//On enlève aussi le crochet du if qui ne sert plus a rien ici.
if (Etat_det_haut==HIGH&&Etat_det_luminosite==LOW)
{
digitalWrite(39, HIGH);
delay(50);
digitalWrite(39, LOW);
delay(40);
digitalWrite(52, HIGH);
delay(40);
digitalWrite(50, HIGH);
delay(50);
digitalWrite(48, HIGH);
delay(60);
digitalWrite(46, HIGH);
delay(70);
digitalWrite(44, HIGH);
delay(80);
digitalWrite(42, HIGH);
delay(90);
digitalWrite(40, HIGH);
delay(100);
digitalWrite(38, HIGH);
delay(110);
digitalWrite(9, HIGH);
delay(120);
digitalWrite(8, HIGH);
delay(130);
digitalWrite(7, HIGH);
delay(140);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(5, HIGH);
delay(160);
digitalWrite(4, HIGH);
delay(170);
digitalWrite(3, HIGH);
delay(180);
digitalWrite(2, HIGH);
// On enlève le if et on remplace par une boucle semblable à celle ci-dessus
while(Tempo_atteinte != HIGH && Etat_det_bas != HIGH) {
Etat_det_bas = digitalRead(Detecteurbas);
Tempo_atteinte = digitalRead(TempoAtteinte);
delay(0.1);
}
digitalWrite(52, LOW);
delay(40);
digitalWrite(50, LOW);
delay(50);
digitalWrite(48, LOW);
delay(60);
digitalWrite(46, LOW);
delay(70);
digitalWrite(44, LOW);
delay(80);
digitalWrite(42, LOW);
delay(90);
digitalWrite(40, LOW);
delay(100);
digitalWrite(38, LOW);
delay(110);
digitalWrite(9, LOW);
delay(120);
digitalWrite(8, LOW);
delay(130);
digitalWrite(7, LOW);
delay(140);
digitalWrite(6, LOW);
delay(150);
digitalWrite(5, LOW);
delay(160);
digitalWrite(4, LOW);
delay(170);
digitalWrite(3, LOW);
delay(180);
digitalWrite(2, LOW);
// On enlève aussi le crochet du if .
}
}
J'ai modifié ça à la va-vite dans le forum sans essayer de compiler le code et sans le tester ^^ dis moi si il y a un problème