Bon j’ai vraiment essayé mais je suis nul en syntaxe et je n’y arrive pas.
Pour faire simple
J’ai un carte arduino uno et un carte shield cnc avec 3 stepper.
Je veux afficher un message avec une minuterie et en meme temps faire tourner le stepper x.
A la fin du compte a rebours.
Arrêt du stepper x
Un autre message avec un autre compte a rebours et rotation du stepper y
Arrêt du stepper y
Et enfin
Un autre message avec un compte a rebours et rotation du stepper z
Arrêt du stepper z
Désolé d’insister mais c’est pourtant simple je pense mais je galère.
Si tu peux me remettre de l’ordre dans mon code se serai génial… merci
Je suis horloger et j’essaye de faire une machine pour laver les mécanismes, d’ou ma demande
Voici mon code
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int temps = 30*60; // 30 minutes
const int StepX = 2;
const int DirX = 5;
const int StepY = 3;
const int DirY = 6;
const int StepZ = 4;
const int DirZ = 7;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
lcd.init(); // initialisation de l'afficheur
pinMode(StepX,OUTPUT);
pinMode(DirX,OUTPUT);
pinMode(StepY,OUTPUT);
pinMode(DirY,OUTPUT);
pinMode(StepZ,OUTPUT);
pinMode( DirZ,OUTPUT);
}
void loop()
{
while (temps > 0) // 0n boucle tant que le décompte n'est pas terminé
{
lcd.backlight();
lcd.setCursor(0,3);
int minutes = temps/60;
int secondes = temps%60;
lcd.print("Delai: ");
lcd.print(minutes);
lcd.print(':');
lcd.println(secondes);
delay(1000); // Apnée pendant une seconde...
temps--;
}
digitalWrite(DirX, HIGH); // set direction, HIGH for clockwise, LOW for anticlockwise
digitalWrite(DirY, HIGH);
digitalWrite(DirZ, HIGH);
// affichage du LCD
lcd.backlight();
// Envoi du message
lcd.setCursor(0, 0);
lcd.print(" ---------------- ");
lcd.setCursor(0,1);
lcd.print("Depart du programme");
lcd.setCursor(0, 2);
lcd.print(" de lavage ");
lcd.setCursor(0, 3);
lcd.print(" ---------------- ");
// fin affichage LCD
delay(1000); // delay for 1 second
//-------------------- MOTEUR X------------------------------
// Envoi du message
lcd.clear();
delay(10);
lcd.setCursor(0, 0);
lcd.print("Demarrage programme");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print("Prelavage essence");
lcd.setCursor(0, 3);
lcd.print("Bocal Numero 1/3");
// fin affichage LCD
delay(2000); // delay for 2 second
// Lancement du moteur X
for(int x = 0; x<2000; x++) { // loop for 200 steps
digitalWrite(StepX,HIGH);
delayMicroseconds(500);
digitalWrite(StepX,LOW);
delayMicroseconds(500);
}
// Fin Lancement moteur
delay(2000); // delay for 2 second
//---------------------- MOTEUR Y-----------------------------
// Envoi du message
lcd.clear();
delay(10);
lcd.setCursor(0, 0);
lcd.print("Programme");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print("Lavage essence");
lcd.setCursor(0, 3);
lcd.print("Bocal Numero 2/3");
// fin affichage LCD
delay(2000); // delay for 2 second
// Lancement du moteur Y
for(int x = 0; x<800; x++) { // loop for 200 steps
digitalWrite(StepY,HIGH);
delayMicroseconds(500);
digitalWrite(StepY,LOW);
delayMicroseconds(500);
}
// Fin Lancement moteur
delay(2000); // delay for 2 second
//------------------------MOTEUR Z-------------------------------
// Envoi du message
lcd.clear();
delay(10);
lcd.setCursor(0, 0);
lcd.print("Programme");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print("Fin lavage essence");
lcd.setCursor(0, 3);
lcd.print("Bocal Numero 3/3");
// fin affichage LCD
delay(2000); // delay for 2 second
// Lancement du moteur Z
for(int x = 0; x<4000; x++) { // loop for 400 steps
digitalWrite(StepZ,HIGH);
delayMicroseconds(500);
digitalWrite(StepZ,LOW);
delayMicroseconds(500);
}
// Fin Lancement moteur
delay(2000); // delay for 1 second
// Envoi du message
lcd.clear();
delay(10);
lcd.setCursor(0, 0);
lcd.print("Fin du programme");
lcd.setCursor(0,1);
lcd.print("");
lcd.setCursor(0, 2);
lcd.print("");
lcd.setCursor(0, 3);
lcd.print("");
// fin affichage LCD
exit(0);
}