Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Problème] Ecran LCD piloté par Arduino

Scrolling et limitations de caractères

Sujet résolu
    27 avril 2013 à 22:19:00

    Bonsoir, je travaille actuellement sur un système de serrure codée (+ ouverture automatisée d'une porte) pour mon cours d'ISN (informatique) en terminale.

    J'utilise comme matériel un écran LCD  16x2 et une carte Arduino (qui sera remplacée par un Atmega sur plaque proto) pour la partie affichage.

    Mon problème est le suivant : Je souhaite afficher ce message à l'écran "Choisissez le nombre de caractères pour votre code ". (ce message est sans doute optimisable, c'est juste pour les tests)

    Évidemment, ce message est bien plus long que 16 caractères. Je me dis donc que je vais faire un scrolling afin d'afficher le texte petit à petit.

    J'étudie le code d'exemple de scrolling fourni par l'IDE d'arduino et je me rends compte que même lorsque le message ("Hello World" pour l'exemple)

    n'est pas affiché à l'écran, celui-ci navigue sur une ligne virtuelle en dehors de l'écran.

    Je tente donc l'approche suivante afin d'afficher l'intégralité de mon message sur la première ligne :

      lcd.print("Choisissez le nombre de caracteres pour votre code ");
    
      delay(3000);
    
      for(char i = 0; i < 34; i++){
        delay(250);
        lcd.scrollDisplayLeft();
        
      }


    A ce moment-là, je me dis que les 16 premiers caractères vont s'afficher, et que les autres, invisibles à l'écran mais bien réels dans le programme, vont défiler par la suite.

    Mon problème est que j'obtiens ceci lors de l'initialisation (pendant les 3 secondes de la tempo).

    ligne 1 de l'écran : "Choisissez le no"

    ligne 2 de l'écran : "votre code"

    Ainsi, le scrolling se poursuit sur les 2 lignes (principe de la commande "scrollDisplayLeft") alors que je souhaitais voir le message uniquement sur la première ligne. J'obtiens ceci a la fin, ce qui est cohérent par rapport au code, et qui ne pose donc pas de problème à ce niveau là:

    ligne 1 de l'écran :" pour Choisissez"

    ligne 2 de l'écran : "      votre code"

    Ma question est donc la suivante :

    Y a-t-il une limite de caractères sur une ligne "virtuelle" ? (je dis virtuelle pour inclure les caractères en dehors de la ligne physique de l’afficheur LCD)

    Avez-vous une solution pour remédier à ce problème ?

    Merci d'avance pour l'attention que vous pourrez porter à ce message.

    -
    Edité par Flat 28 avril 2013 à 12:15:19

    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2013 à 16:01:30

      Je me rapel avoir eu des soucis similaires, mais je ne me souviens plus comment je l'avais contré...

      Sinon je viens de trouver ca... ça à l'air de répondre au problème (je n'ai pas testé)

      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

        28 avril 2013 à 17:33:59

        J'ai bossé sur le problème cette après-midi, je me suis rendu compte que la limitation de caractères ne provient pas de la

        ligne mais bien de la mémoire du circuit de l'afficheur (en tout cas c'est ce que j'ai pu observer).

        j'ai donc réussi a contourner le problème avec cette méthode :

          lcd.print("Choisissez le nombre de caracteres de ");
          delay(3000);
          for(char i = 0; i < 22; i++){
            delay(250);
            lcd.scrollDisplayLeft();
          }
          lcd.clear();
          lcd.print("e caracteres de ");
          lcd.setCursor(15,0);
          lcd.print(" votre code");
          for(char i = 0; i < 10; i++){
            delay(250);
            lcd.scrollDisplayLeft();
          }
          lcd.clear();
          lcd.print("es de votre code");

        En fait je nettoie la mémoire et je ré affiche uniquement les caractères visibles à l'écran. Le temps d’exécution est

        suffisamment rapide pour que la persistance rétinienne fasse son travail.

        La méthode que tu m'a donné fonctionne par contre il doit y avoir un petit bug dans le code car le programme fait un va et

        vient d'une case lorsqu'il termine d'afficher le programme. Cela dis, la méthode reste inintéressante, je la garde en

        réserve, merci pour ton aide.

        -
        Edité par Flat 28 avril 2013 à 17:47:42

        • Partager sur Facebook
        • Partager sur Twitter

        [Problème] Ecran LCD piloté par 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