Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme affichage lcd + arduino

    17 décembre 2012 à 8:15:06

    Bonjour à tous.Je veut afficher un texte qui deffile sur mon écran lcd.J'ai donc codé le programme suivant

    #include "LiquidCrystal.h" //ajout de la librairie
    #include<stdio.h>
    #include<string.h>
    
    //Vérifier les broches !
    LiquidCrystal lcd(11,10,9,8,7,6,5,4,3,2); //liaison 8 bits de données
    
    #define TAILLE_MAX 50
    
    void setup() 
    {
      lcd.begin(16, 2);
      lcd.setCursor(14,0);
      lcd.leftToRight();  //indique que le texte doit être déplacer vers la gauche
      lcd.autoscroll();   //rend automatique ce déplacement
       int nb_elements = 0;
      char tableau[TAILLE_MAX]="Bonjour je test le programme ";
      nb_elements= strlen(tableau);
      ajouter_element(tableau, &nb_elements);
      int i;
       for(i=0; i<nb_elements -1; i++)
      {
        lcd.print(tableau[i]);
        delay(100);
      }
    lcd.print(".");
    
    }
    
    
     
    void ajouter_element(char tab[], int* nb)
    {
            /*
            ajout d'un élément en tab[*nb]
            vérifier qu'on a pas dépasser la limite TAILLE_MAX
            */
            (*nb)++;
    }
     
    
    void loop() {}
    


    Le texte défile bien sur la premiere ligne de l'afficheur sauf les dernier caractéres qui sont sur la deuxieme lignes de l'ecran.Je ne comprend pas pourquoi :(
    • Partager sur Facebook
    • Partager sur Twitter
      17 décembre 2012 à 14:37:03

      Bon depuis ce matin que j'essaie de poster, rééssayons...

      - Que veux tu faire avec la fonction ajouter_element
      - Pourquoi n'utilises tu pas simplement pas la fonction lcd.write pour envoyer tout ton texte en une seule fois ?
      • Partager sur Facebook
      • Partager sur Twitter
        17 décembre 2012 à 14:47:54

        Salut,

        Alors je veux envoyer du texte déffilant sur mon afficheur.Mais je veux que la taille tableau s'adapte à la taille de mon texte.Si je met tab[50] = "balabla" , l'afficheur va bien envoyer "balabla" mais aussi une suite de caractére jusqu'au caractére a l'indice 50.
        • Partager sur Facebook
        • Partager sur Twitter
          17 décembre 2012 à 15:01:43

          Tu peux déjà essayer un code plus simple et voir si tout marche comme tu veux :)

          (et je vois toujours pas le but de la fonction, car elle touche pas au tableau, elle se contente d'incrémenter la variable nb)

          void setup() 
          {
            lcd.begin(16, 2);
            lcd.setCursor(14,0);
            lcd.leftToRight();  //indique que le texte doit être déplacer vers la gauche
            lcd.autoscroll();   //rend automatique ce déplacement
            int nb_elements = 0;
            char tableau[TAILLE_MAX]="Bonjour je test le programme ";
          lcd.write(tableau);
          
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            17 décembre 2012 à 15:13:04

            La fonction sert pour autre chose.
            Le code que tu ma donner ne va pas faire défiller le text ? si ?
            • Partager sur Facebook
            • Partager sur Twitter
              17 décembre 2012 à 15:25:28

              Je pense que c'est ta string qui est mal initialisée.

              Tu peux faire comme ça :
              char tableau[TAILLE_MAX]="Bonjour je test le programme ";
              

              Mais dans ce cas là, n'oublie pas le caractère de fin de chaîne '\0'.
              Et c'est certainement pour ça que ton strlen foire, car celui-ci recherche ce '\0' pour te renvoyer la taille. S'il ne le voit pas, il te renvoie n'importe quoi.</span>

              Erreur de ma part, je pensais qu'on pouvait pas faire comme ça, mais en fait si...


              Sinon tu peux déclarer de cette manière :

              char *tableau = "Bonjour je test le programme "
              

              Qui va te rajouter automatiquement le caractère de fin de chaîne après ta string.

              Après si tu veux changer le texte, et que tu ne sais pas la taille à l'avance, il te faudra utiliser les malloc (allocation de mémoire dynamique).

              En espérant t'avoir aidé.

              Cordialement.
              • Partager sur Facebook
              • Partager sur Twitter
                17 décembre 2012 à 15:27:32

                Ok je vais essayer tout ca en rentrant.

                Merci de ton aide.
                • Partager sur Facebook
                • Partager sur Twitter
                  17 décembre 2012 à 15:43:33

                  La première écriture (avec les []) rajoute aussi le caractère de fin de chaine (il est "sous-entendu" à cause des double guillemets qui définissent une chaîne de caractère).


                  Mais je viens de relire le premier post. Les caractères défilent bien sur la première ligne c'est ca ? (mais dès que tu arrives à plus de caractères que la largeur peut en contenir ca "bug" ?)
                  Je suis pas sur qu'on pourra y remédier, car le problème vient je pense du controleur dans le LCD qui pourra pas gérer ca correctement (il fait "déborder" les caractères en trop sur la seconde ligne)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 décembre 2012 à 10:33:56

                    Ce que je comprend pas c'est qu'il fait bien déffiler la phrase sur la premiere ligne de l'ecran "Bonjour je test le progra" et il ce met à écrire sur la deuxieme ligne "mme"
                    J'ai beau chercher je ne trouve pas :(
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 décembre 2012 à 11:10:22

                      Comme je te disais plus tôt, ce n'est pas la faute de ton programme, mais c'est plutôt une limite du matériel (ou de la librairie, j'ai pas cherché). Quand la première ligne est pleine, si tu ne replaces pas ton curseur il continue sur la seconde
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 décembre 2012 à 11:54:18

                        Donc il faudrait que je déplace mon curseur ?
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Probleme affichage lcd + arduino

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown