Bonjour moa26
Oui, il démarre, j'ai ajouté des print à ton programme, avec tu verras que ton programme démarre bien:
// Définition des broches
const int boutonMarche = 6;
const int boutonArret = 7;
const int finCourseHaut = 2;
const int finCourseBas = 3;
const int finCourseSortie = 4;
const int finCourseEntree = 5;
const int relaisMoteurHaut = 8;
const int relaisMoteurBas = 9;
const int relaisVerinSortie = 10;
const int relaisVerinEntree = 11;
bool enMarche = false;
void setup() {
Serial.begin(115200);
// Initialisation des broches
pinMode(boutonMarche, INPUT_PULLUP);
pinMode(boutonArret, INPUT_PULLUP);
pinMode(finCourseHaut, INPUT_PULLUP);
pinMode(finCourseBas, INPUT_PULLUP);
pinMode(finCourseSortie, INPUT_PULLUP);
pinMode(finCourseEntree, INPUT_PULLUP);
pinMode(relaisMoteurHaut, OUTPUT);
pinMode(relaisMoteurBas, OUTPUT);
pinMode(relaisVerinSortie, OUTPUT);
pinMode(relaisVerinEntree, OUTPUT);
// Assurez-vous que tout est arrêté au démarrage
digitalWrite(relaisMoteurHaut, LOW);
digitalWrite(relaisMoteurBas, LOW);
digitalWrite(relaisVerinSortie, LOW);
digitalWrite(relaisVerinEntree, LOW);
delay(500);
Serial.println("Démarrage");
}
void loop() {
if (digitalRead(boutonMarche) == LOW) {
enMarche = true;
Serial.println("En marche true");
}
if (digitalRead(boutonArret) == LOW) {
enMarche = false;
arreterTout();
Serial.println("Arrêt tout");
}
if (enMarche) {
Serial.println("En marche");
// Retour à la position initiale
retourPositionInitiale();
// Début de la séquence
while (enMarche) {
// Moteur vers le bas
digitalWrite(relaisMoteurBas, HIGH);
while (digitalRead(finCourseBas) == HIGH && enMarche) {
if (digitalRead(boutonArret) == LOW) {
enMarche = false;
arreterTout();
}
}
digitalWrite(relaisMoteurBas, LOW);
// Vérin sort
digitalWrite(relaisVerinSortie, HIGH);
while (digitalRead(finCourseSortie) == HIGH && enMarche) {
if (digitalRead(boutonArret) == LOW) {
enMarche = false;
arreterTout();
}
}
digitalWrite(relaisVerinSortie, LOW);
// Attente de 10 secondes
delay(10000);
// Vérin rentre
digitalWrite(relaisVerinEntree, HIGH);
while (digitalRead(finCourseEntree) == HIGH && enMarche) {
if (digitalRead(boutonArret) == LOW) {
enMarche = false;
arreterTout();
}
}
digitalWrite(relaisVerinEntree, LOW);
// Moteur vers le haut
digitalWrite(relaisMoteurHaut, HIGH);
while (digitalRead(finCourseHaut) == HIGH && enMarche) {
if (digitalRead(boutonArret) == LOW) {
enMarche = false;
arreterTout();
}
}
digitalWrite(relaisMoteurHaut, LOW);
// Attente de 20 secondes
delay(20000);
}
}
}
void arreterTout() {
Serial.println("arreterTout");
digitalWrite(relaisMoteurHaut, LOW);
digitalWrite(relaisMoteurBas, LOW);
digitalWrite(relaisVerinSortie, LOW);
digitalWrite(relaisVerinEntree, LOW);
}
void retourPositionInitiale() {
Serial.println("retourPositionInitiale");
// Moteur vers le haut jusqu'à fin de course haut
digitalWrite(relaisMoteurHaut, HIGH);
while (digitalRead(finCourseHaut) == HIGH) {
Serial.println("\tAttente finCourseHaut");
}
digitalWrite(relaisMoteurHaut, LOW);
Serial.println("\t\tFinCourseHaut atteint");
// Vérin rentre jusqu'à fin de course entrée
digitalWrite(relaisVerinEntree, HIGH);
while (digitalRead(finCourseEntree) == HIGH) {
// Attendre jusqu'à ce que le fin de course entrée soit atteint
}
digitalWrite(relaisVerinEntree, LOW);
}
Dans le moniteur tu dois avoir:
En marche
retourPositionInitiale
Attente finCourseHaut
Attente finCourseHaut
Attente finCourseHaut
Attente finCourseHaut
...
Attente finCourseHaut
Attente finCourseHaut
Attente finCourseHaut
Attente finCourseHaut
Attente finCourseHaut
FinCourseHaut atteint
A+
Cordialement
jpbbricole