Recuperer les information saisit sur l'ecran lcd

Bonjour à vous tous, j'ai un projet dont le but est d'envoyer par mail à chaque 12H les donnes saisit par l'utilisateur .J'ai commencé ce projet il y a une semaine ,J'ai creé une affichage (sur un ecran lcd 16x2) qui demande à l'utilisateur de saisir 3 donnes differents , dés que j'ai saisis la première données ,mon curseur (lcd) reste sur la première position et il ne peut pas deplacer sur la deuxième position pour écrire les donnés suivant.
j'utilise un clavier matricielle 4x3

Et donc… vous avez une question ?

1 Like

oui ,comment puis je faire deplacer le curseur de saisir si je voulais ecrire sur la case de presssion P[bar] après avoir saisi sur la case de temperature t??

Je pense qu'il faudrait que tu lises ça avant tout

Bonjour dzibie

Pour autant que ton affichage s'appelle lcd et que tu aies lcd.cursor();, pour positionner ton curseur, c'est lcd.setCursor(10,1);

Cordialement
jpbbricole

1 Like

oui , mais ça marche pas si je click sur un boutton , pour que je puisse passer à l'autre coté pour remplir l'autre cage

Bonjour dzibie
Mets ton programme en ligne en indiquant l'endroit

Cordialement
jpbbricole

#include <Key.h>
#include <Keypad.h>


#include <LiquidCrystal.h>

LiquidCrystal lcd (23, 22, 24, 25, 26, 27);
char m[16];
char mobile[16];
int nbr1;
int nbr2;
char val;
char lettrenombre [3];

int compteur = 0;
const int interruption = 21;
const int Binit = 37;
const int LED = 38;
const char key[4][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {' ', '0', '.'}};
byte p[4] = {28, 29, 30, 31};
byte pinc[3] = {32, 33, 34};
boolean etatBinit;
int nbrfinal;
char ao[16];
char br[16];
char tp[16];
char pr[16];
int temperature;
int pression;
int masse;
const int btT = 35;
const int btP = 36;
const int btM = 39;
char volatile stat = HIGH;
Keypad kep = Keypad(makeKeymap(key), p, pinc, 4, 3);
int valold;
bool etatP = digitalRead(btP);
bool etatM = digitalRead(btM);
bool etatT = digitalRead(btT);

void setup() {

  Serial.begin(9600);
  pinMode(Binit, INPUT);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, HIGH);
  lcd.begin(16, 2);
  pinMode(btP, INPUT_PULLUP);
  pinMode(btT, INPUT_PULLUP);
  pinMode(btM, INPUT_PULLUP);
  char  message [10];
  affichagePermanentDonnes(returnM(), returnT(), returnP());
}


void affichagePermanentDonnes(int m, int t, int p) {
  lcd.home();
  lcd.display();
  lcd.setCursor(0, 0);
  sprintf(br, "Br[KG]:%d", m);
  lcd.print(br);
  lcd.setCursor(11, 0);
  sprintf(tp, "t:%d", t);
  lcd.print(tp);
  lcd.setCursor(3, 1);
  sprintf(pr, "P[bar]:%d", p);
  lcd.print(pr);

}
void saisitD() {
  int k;
  if (digitalRead(btM) == LOW) {
    while (kep.getKey() != ' ' || kep.getKey() != '.')
    {
      delay(1);
      Nouvnombre(7, 0);
      if ((digitalRead(btT) == LOW))
      {
        delay(1);
        nbrT(returnold());

        delay(1);
        Nouvnombre(13, 0);
        break;
      } else if (digitalRead(btT) == LOW) {

        delay(1);
        // nbrM(k);

        delay(1);
        Nouvnombre(10, 1);
        break;
      }


    }

  } else if (digitalRead(btT) == LOW) {
    while (kep.getKey() != ' ' || kep.getKey() != '.') {
      delay(1);
      Nouvnombre(13, 0);
    }
  } else if (digitalRead(btP) == LOW) {
    while (kep.getKey() != ' ' || kep.getKey() != '.') {
      delay(1);
      Nouvnombre(10, 1);
      if ((digitalRead(btM) == LOW))
      {
        delay(1);
        break;
        Nouvnombre(7, 0);

      } else if ((digitalRead(btP) == LOW)) {

        delay(1);
        break;
        Nouvnombre(13, 0);
      }



    }
  }
}
void loop() {
  saisitD();

}

Bonjour dzibie

Oupsss.. mets ton code entre les balises, c'est l'icône image

A+
jpbbricole

1 Like

Bonjour dzibie

cd.setCursor(x,z); est bien placé.
As-tu mis lcd.cursor(); dans setup()?
Ici une description des fonctions de l'affichage LCD,

A+
jpbbricole

oui , alors dois je l'effacer??

Commencez par éditer votre post et mettre le code entre balises SVP.

1 Like

je l'ai modifié

Toujours pas à en #8

  • sélectionner la partie du texte qui correspond au code
  • appuyez sur l’icône </> dans la barre d’outils pour indiquer que c’est du code

(Assurez vous aussi d’indenter le code correctement dans l’IDE avant de le copier pour le coller ici. Cela se fait en pressant ctrlT sur PC ou cmdT sur un Mac)

1 Like

c'est fait :slightly_smiling_face:

Bonjour dzibie

Tu n'as pas de lcd.cursor();, dans setup().

Cordialement
jpbbricole

1 Like

Tu noteras qu'il n'a jamais été dit qu'il n'y avait pas de curseur mais plutôt que celui-ci ne se déplaçait pas.

@dzibie , Il n'y a rien qui te choque dans les tests?

      if ((digitalRead(btT) == LOW))
      {
        delay(1);
        nbrT(returnold());

        delay(1);
        Nouvnombre(13, 0);
        break;
      } else if (digitalRead(btT) == LOW) {

        delay(1);
        // nbrM(k);

        delay(1);
        Nouvnombre(10, 1);
        break;
      }

Le code est incomplet ce qui n'aide pas à sa compréhension.

1 Like

merci, le problème est reglé . J'ai oublié de mettre lcd.setCursor() dans la methode setup();

Bonjour fdufnews

Il n'a jamais été dit, aussi, qu'il était visible, pour la simple et bonne raison que sans cette commande
lcd.cursor();,
Il n'y a pas de curseur.

Cordialement
jpbbricole

1 Like