Bonjour,
j'ai crée une boucle ( programme pour un stepper qui fonctionne parfaitement)
for (int t=0; t<s; t++);
j'aimerais pouvoir récupérer la valeur de t pour pouvoir l'afficher sur un LCD à chaque passage dans la boucle
ex: afficher 1 quand t vaut 1
afficher 2 quand t vaut 2
et ainsi de suite jusque la valeur de s
je n'arrive pas à trouver la bonne procédure malgré de nombreuse recherches.
ok pour etre plus clair voici qq explications.
J'ai donc écrit un programme qui déplace un chariot un certain nombre de fois lors de l'appui sur un bouton et quand la séquence est terminée le chariot revient à sa position initiale.
Ce programme qui tourne sur UNO n'est surement parfait mais il fait ce que j'ai besoin.
// Include the Arduino Stepper Library
#include <Stepper.h>
// Number of steps per output rotation
const int stepsPerRevolution = 200;
// Create Instance of Stepper library
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
const int BP1 = A0; // BP1 sur Pin A0 arduino pour démarrer séquence
const int led = 12; // led en pin 12
const int Cam = 2; // appareil photo en Pin 2
const int Stack = 10; // nombre de déplacements, A MODIFIER SELON DESIRS
const int Pas = 25; // valeur du pas, A MODIFIER SELON DESIRS
int Etat_bouton1 = 0;// déclaration et initiation variable Etat_bouton
i
void setup()
{
// set the speed at 70 rpm:
myStepper.setSpeed(70);
pinMode(led, OUTPUT);// la pin 12 est définie comme sortie pour signaler séquence
pinMode(Cam, OUTPUT);// la pin 2 est définie comme sortie pour l'appareil photo
pinMode(BP1, INPUT_PULLUP);// la pin 0 est définie comme entrée avec GND
}
void loop()
{
Etat_bouton1 = digitalRead(BP1); //lecture de l'état logique BP1
if (Etat_bouton1 == LOW) {
for (int t=0; t<Stack; t++) // incrémenation jusque 10
{
digitalWrite(led, HIGH); // allume la led pour controler l'appui du bouton
delay(600); // temps de stabilisation de l'appareil photo
digitalWrite(Cam, HIGH); // déclenche appareil photo
delay (500);// shutter delay
digitalWrite(Cam, LOW);
delay(200); // pour éviter flou de bougé
digitalWrite(led, LOW);
myStepper.step(Pas);// avance de 25 pas = 0.4mm
delay(1500);// stabilisation
}
myStepper.step(Stack*-Pas);// retour au départ
}
}
Ce que j'aimerais c'est pouvoir utiliser un arduino MEGA avec un un afficheur LCD, avec <LiquidCrystal.h> pour afficher la valeur de chaque état de la boucle " for" donc chaque déplacement du chariot
je suis conscient que certaine entrées et sorties devront etre modifié pour s'accommoder des pins utilisées par l'afficheur.
j'ai essayé ceci mais ça ne fonctionne pas
Etat_bouton1 = digitalRead(BP1); //lecture de l'état logique BP1
if (Etat_bouton1 == LOW) {
for (int t=0; t<S; t++);{// incrémenation jusque 10
Donc tu as un afficheur "texte" et tu veux utiliser la librairie LiquidCrystal. Donc tu regardes ici. Tu vois des exemples et surtout sur la droite de la page la doc des méthodes de LiquidCrystal.
Il y a une méthode print() qui fonctionne exactement comme la méthode print() de Serial (voir l'exemple dans le bas de la page). Donc le passage de l'un à l'autre est simplissime.
ce qui cloche c'est le ; qui traine avant l'accolade ouvrante de la boucle for. c'est vu par le compilateur comme cela:
for (int t=0; t<S; t++); // compter jusqu'à S mais ne rien faire d'autre. Sera viré par le compilo
lcd.setCursor(0,0);
lcd.print("Déplacement N°:");
lcd.setCursor(10,0);
lcd.print( t+1 ); // <<<=== Erreur car t est inconnu ici puisqu'on n'est pas dans la boucle
l'autre truc qui cloche c'est que ça va compter super vite et donc vous n'avez pas le temps de voir défiler cela sur l'écran (et pas la peine de ré-écrire "Déplacement N°:" à chaque fois)