récupérer valeur pour l'afficher

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.

Cordialement

for (int t=0; t<s; t++);

Cette ligne ne fait rien ! Essaye:

for (int t=0; t<s; t++)
{
   Serial.println ( t );
}

"pour pouvoir l'afficher sur un LCD", pas sur la console.

electronn2002:
j'aimerais pouvoir récupérer la valeur de t pour pouvoir l'afficher sur un LCD

Tu n'as pas l'impression qu'elle est un peu vague ta description de l'afficheur?

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

lcd.setCursor(0,0); lcd.print("Déplacement N°:");
lcd.setCursor(10,0); lcd.print( t+1 );

Qu'est-ce qui cloche ?

Merci pou vos conseils

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.

    for (int t=0; t<S; t++);{// incrémenation jusque 10

lcd.setCursor(0,0); lcd.print("Déplacement N°:");
    lcd.setCursor(10,0); lcd.print( t+1 );




Qu'est-ce qui cloche ?

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)

Merci pour vos conseils qui m'ont permis d'arriver au resultat escompté.

Je vais maintenant m'atteler à la tache de pouvoir régler la valeur de la bouce for avec une roue codeuse type KY-040

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.