Bonjour Sandro, Mike .J'ai continué. J'ai rajouté les millimètres et j'en est profité pour rajouter les 2 derniers boutons qui était prévu, pour additionner ou soustraire 5 mm au compteur . j'ai compris assez bien , sa marche .
Il reste la derniere étape pour terminer le code , c'est d’appuyé sur un autre bouton (que je dois rajouter d’ailleurs ) pour faire avancé le moteur en rapport avec ce qui est affiché sur l'écran .
Et puis si c'est possible , c'était pas prévu . j'aimerai rajouter quelque chose . Sous la mesure en cm qui est affiché sur l'écran , ce serai un confort d'avoir la dimension en pouce qui s'affiche . Le rapport est de 1 pouce pour 2.54 cm . Je lance le sujet , la mesure est anglaise . Vu la façon de régler la distance , c'est peut être une vrai galère . Voila , si vous avez un avis la dessus , c'est volontier .
#include <AccelStepper.h> AccelStepper stepper (1, 9, 8); #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const int PinBoutonInit = A0; //Bouton qui déplacera le chariot vers la buté à 30 cm const int PinContactBute = A1;// Contact qui stope le chariot à 30 cm const int PinBoutonReglageDistanceCm = A2;//Bouton de reglage distance en Cm const int PinBoutonReglageDistanceMm = A3;//Bouton de reglage distance en Mm const int PinBoutonReglageDistancePlus5Mm = A4;//Bouton de reglage distance + 5 Mm const int PinBoutonReglageDistanceMoins5Mm = A5;//Bouton de reglage distance - 5 Mm float ReglageAffichageDistance (float NouvelleDistance) { if (digitalRead(PinBoutonReglageDistancePlus5Mm ) == 0) { // Bouton + 5 mm NouvelleDistance = NouvelleDistance + 0.5 ; if (NouvelleDistance > 290) { NouvelleDistance = 30;} attendreMs(300); Serial.println(NouvelleDistance); AfficherLaDistance(NouvelleDistance); } if (digitalRead(PinBoutonReglageDistanceMoins5Mm ) == 0) { // Bouton - 5 mm NouvelleDistance = NouvelleDistance - 0.5 ; if (NouvelleDistance < 30) { NouvelleDistance = 290;} attendreMs(300); Serial.println(NouvelleDistance); AfficherLaDistance(NouvelleDistance); } if (digitalRead(PinBoutonReglageDistanceMm ) == 0) { // Bouton réglage des millimetres NouvelleDistance = NouvelleDistance + 0.01 ; if (NouvelleDistance > 290) { NouvelleDistance = 30;} attendreMs(100); Serial.println(NouvelleDistance); AfficherLaDistance(NouvelleDistance); } while (digitalRead(PinBoutonReglageDistanceCm ) == 0) { // J'appuis sur réglage des cm NouvelleDistance = NouvelleDistance + 1 ; // Le compteur s'incrémente de 1 cm if (NouvelleDistance > 290) { NouvelleDistance = 30; } attendreMs(300); // on attend 500 ms sans utiliser la fonction delay() Serial.println(NouvelleDistance); AfficherLaDistance(NouvelleDistance); } return NouvelleDistance; // quand on a fini d'incrémenter on retourne la valeur au reste du programme } void attendreMs (unsigned int attente) { unsigned long InstantouJappuis = millis(); // Variable qui enregistre le déroulement du temps qui passe depuis l'appuis while (millis() - InstantouJappuis < attente ) { // décompte de 500ms en cours } } void AfficherLaDistance (float Distance) { lcd.clear(); lcd.setCursor(0, 0); lcd.print ( " Butée " ); lcd.setCursor(7, 0); lcd.print ( Distance ); lcd.setCursor(13, 0); lcd.print ( " cm " ); } void AfficherInitTermine () { lcd.clear(); lcd.setCursor(0, 0); lcd.print (" Initialisation " ); lcd.setCursor(0, 1 ); lcd.print (" terminée " ); Serial.println ("Initialisation terminée " ); } void AfficherInitEnCours () { lcd.clear(); lcd.setCursor(0, 0); lcd.print (" Initialisation " ); lcd.setCursor(0, 1 ); lcd.print (" en cours " ); Serial.println (" Initialisation en cours " ); } float initMoteur (float InitDistance ) { if (digitalRead(PinBoutonInit) == 0) { AfficherInitEnCours (); stepper.setSpeed(3900); while (digitalRead(PinContactBute) == 1) { stepper.runSpeed(); // on attends la buté } stepper.stop(); // On remet à 0 les consignes de vitesse ... InitDistance = 30.0; Serial.println (" D " ); Serial.println (InitDistance); AfficherInitTermine (); delay(1000); AfficherLaDistance(InitDistance) ; } return InitDistance; // quand on a fini d'initialisé on retourne la valeur au reste du programme } void setup() { Serial.begin(9600); pinMode(A0, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP pinMode(A1, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP pinMode(A2, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP pinMode(A3, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP pinMode(A4, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP pinMode(A5, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP stepper.setMaxSpeed(4000); lcd.begin(16, 2); lcd.print("START PRESS INIT"); } void loop() { static float maDistance = 29; // Variable qui va stocker la distance de consigne maDistance = initMoteur (maDistance); // Permet d'initialisé ma distance sur 30 cm maDistance = ReglageAffichageDistance ( maDistance); // réglage de la distance de 30 à 290 cm }