Programme de synchronisation moteur et vérin

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