Bonjours ou bonsoir a vous
j'ai un petit problème avec mon code voici les détaille
2 moteur :
1 moteur pour le mode brassage
1 moteur pour la fonction avance et recule (Fonction recule nom programmer pour l'instant).
3 Bouton :
1 Bouton S3_Cycle.
1 Bouton S1_Depart.
1 Bouton S2_Fin.
le programme devrais faire
si bouton S1_départ est activer et que bouton S3_Cycle est activé
Apelle Fonction ModeCycle (effectue 2 fois la Boucle)
appelle Fonction Brassage (effectue 2 fois la Boucle)
Départ du moteur Avant
Arrêt du moteur quand S2_Fin est Activé, Fait une pause, départ du Moteur_Avant.
Arrêt du moteur quand S1_Départ est Activé.
ont fait la boucle ModeCycle.
quand la boucle est terminer le moteur devrais s'arrêter sur le bouton S1_Départ.
mon problème je n'arriver pas a faire arrêter le moteur sur S1_Depart. il tourne toujours.
Voici mon Code :
//.:: Moteur::
const int Moteur_Avant = 9;
const int Moteur_Bras = 3;
const int Moteur_Direction = 2;//.:: Bouton::
const int S1_Depart = 4;
const int S2_Fin = 5;
const int S3_Cycle = 6;boolean BrassageOK = false;
void setup()
{
//.:: Moteur::
pinMode(Moteur_Avant, OUTPUT);
pinMode(Moteur_Bras, OUTPUT);
pinMode(Moteur_Direction, OUTPUT);//.::Bouton:::::
pinMode(S1_Depart, INPUT_PULLUP);
pinMode(S2_Fin, INPUT_PULLUP);
pinMode(S3_Cycle, INPUT_PULLUP);digitalWrite(Moteur_Avant, HIGH);
digitalWrite(Moteur_Direction, HIGH);
digitalWrite(Moteur_Bras, HIGH);Serial.begin(9600);
}void loop()
{
//.:: Départ Cycle::
if ((digitalRead(S3_Cycle) == LOW) && (digitalRead(S1_Depart) == LOW))
{
//.::Appelle Fonction ModeCycle::
ModeCycle();
}
}//.:: Fonction ModeCycle::
void ModeCycle()
{
int Var1 = 0;
while(Var1 < 2)
{
//.:: Si S1_Depart est Active et Brassage false::
if ((digitalRead(S1_Depart) == LOW) && (BrassageOK == false))
{
//.:: Arret du moteur avant::
digitalWrite(Moteur_Avant, HIGH);
//.:: Appelle Focntion Brassage::
Brassage();
}
//.:: Si S2_Fin est Active::
if ((digitalRead(S2_Fin) == LOW) && (BrassageOK == true))
{
//.:: Arret du moteur avant::
digitalWrite(Moteur_Avant, HIGH);
delay(1000);
//.:: Demarrage du moteur avant::
digitalWrite(Moteur_Avant, LOW);
BrassageOK = false;
Var1++;
}
}
}//.:: Fonction Brassage::
void Brassage()
{
int Var2 = 0;
//.:: Effectue deux cycle de brassage::
while(Var2 < 2)
{
digitalWrite(Moteur_Bras, LOW);
delay(300);
digitalWrite(Moteur_Bras, HIGH);
delay(700);
Var2++;
}
BrassageOK = true;
//.:: Démarage du Moteur_Avant::
digitalWrite(Moteur_Avant, LOW);
}