Sincèrement, je n'ai pas tout lu, mais on voit que tu as bien bossé.
Il reste quelques choses à changer ou vérifier.
Il est toujours bon d'initialiser des variables dans un programme, sinon on ne maîtrise pas forcément leur valeur. Mais il faut leur donner une valeur : cette instruction (et les autres similaires) ne passera pas à la compilation
EB_b = ;
Donc fais plutôt :
EB_b = 0;
Un test c'est
if (condition)
{
suite d'instructions;
}
Donc, cette ligne n'est pas bonne :
if (Bp1State == HIGH)&&(Bp2State == HIGH)&&(TfState = HIGH)&&(EB_bState = HIGH)
La condition en entier doit être entre parenthèses :
if ((Bp1State == HIGH)&&(Bp2State == HIGH)&&(TfState = HIGH)&&(EB_bState = HIGH))
ou bien
if (Bp1State == HIGH && Bp2State == HIGH && TfState = HIGH && EB_bState = HIGH)
Vérifie si les autres tests sont bons...
Enfin, lorsque tu fais un while, il faut prévoir de sortir de la boucle. Dans celui-ci :
while (ToState == LOW)
{
// Moteur trappe sens horaire
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 180); // plage vitesse 0~255
digitalWrite(EA_B, HIGH);
}
Comme tu ne modifies pas la valeur de ToState, s'il entre dans la boucle il n'en sortira jamais. Il faut que tu relises la valeur de ToState à la fin :
while (ToState == LOW)
{
// Moteur trappe sens horaire
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 180); // plage vitesse 0~255
digitalWrite(EA_B, HIGH);
ToState = digitalRead(To); // <-- mise à jour de ToState pour voir si on sort du while
}
Du coup tu n'as plus besoin de le lire après le while, ni de le tester à HIGH puisqu'il y est déjà (condition de sortie du while)
Même chose à l'étape 4 :
//ETAPE 4 DU GRAFCET
EB_bState = digitalRead(EB_b)
while (EB_bState == LOW)
{
// Moteur élévateur sens antihoraire
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 180); // plage vitesse 0~255
}
EB_bState = digitalRead(EB_b); // <-- passer cette ligne avant l'accolade fermante
D'ailleurs, il manque un point virgule ici:
//ETAPE 4 DU GRAFCET
EB_bState = digitalRead(EB_b)
et le même quelques lignes plus bas : vérifie que les points-virgules sont tous là où il le faut.
Enfin, étapes 17 et 18, vérifie ces lignes :
//ETAPE 17 DU GRAFCET
digitalRead (EB_b);
et
//ETAPE 18 DU GRAFCET
digitalRead (TfState);
Ca doit être
EB_bState = digitalRead(EB_b);
et
TfState = digitalRead (TfState);
Bonne continuation !