bonsoir
j'ai un petit projet qui coince un peux et j'aurai besoin d'aide vue que je suis un petit bleu en arduino.
le projet consiste a commander 2 piston a air avec un bouton de démarrage et un switch, le tous avec bien sur un arduino.
A l'allumage de l'arduino ,le piston 1 monte et le piston 2 ce rétracte, on va dire que c 'est la position zéro.
puis, on appui sur le bouton de démarrage du cycle ( bouton 1 sur pin 2), le piston 1 commence sa
descente jusqu'à ce qu'il touche le switch ( bouton 2 sur pin 3) ,qui lui (switch) va actionner le piston 2 qui
va en mouvement de pousser (sortie) jusqu'à sa limite , après 500 ms le piston 1 remonte et après 500
ms le piston 2 se rétracte fin du cycle ,on attend l'appui sur le bouton 1 démarrage.
mon problème avec le code que je joins c'et qu'il marche une fois sur deux,
- une fois sa marche
- une fois le piston 1 ne descend pas jusqu'au switch mais le piston 2 pousse
- une fois la boucle se répété sans l'utilisation du bouton 1 de démarrage du cycle .
bref c 'est pas sa.
sa serais gentille de bien vouloir me dire ce qui ne va pas dans le programme, merci d'avance.
#define RELAY1 6 //piston 1 descente
#define RELAY2 7 // piston 1 monter
#define RELAY3 8 // piston 2 pousser
#define RELAY4 9 // piston 2 retour
const int buttonPin2 = 2; // bouton poussoir de demarrage du cycle
const int buttonPin3 = 3; // swith demarrage piston 2 pousser
void setup()
{
pinMode(buttonPin2, INPUT_PULLUP); // utilisation pulpUp interne
pinMode(buttonPin3, INPUT_PULLUP); // utilisation pulpUp interne
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
digitalWrite(RELAY1,HIGH);
digitalWrite(RELAY2,LOW); // RAZ piston 1 position monter
digitalWrite(RELAY3,HIGH);
digitalWrite(RELAY4,LOW); // RAZ piston 2 position retour
delay(2000);
}
void loop()
{
if (digitalRead(buttonPin2) == LOW) // Attente du bouton poussoir de demarrage du cycle
{
exe(); // activation du bouton de demarrage
}
digitalWrite(RELAY1,HIGH); // position initial des deux pistons
digitalWrite(RELAY2,LOW); // position initial des deux pistons
digitalWrite(RELAY3,HIGH); // position initial des deux pistons
digitalWrite(RELAY4,LOW); // position initial des deux pistons
}
void exe(){
digitalWrite(RELAY1,LOW); // mouvement du piston 1 en descente
while(1){
if (digitalRead(buttonPin3) == LOW) // activation du suitch ...
{
digitalWrite(RELAY3,LOW); //mouvement piston 2 en pousser
delay(500);
digitalWrite(RELAY1,HIGH); //fixation piston 1 en bas
delay(500);
digitalWrite(RELAY2,LOW); // mouvement piston 1 ver le haut
delay(1000);
digitalWrite(RELAY3,HIGH); //fixation piston 2 en pousser
digitalWrite(RELAY4,LOW); // mouvement piston 2 en retour
delay(2000);
return;
}
}
}