IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Scroller un texte sur un écran LCD


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut Scroller un texte sur un écran LCD
    Bonjour !
    Depuis quelques semaines je suis sur un projet de faire une librairie pour Arduino. Cette librairie à pour but de permettre à l'utilisateur de créer un menu.
    Dans ce mode de création de menu j'ai un champ de texte contrôlé par une télécommande IR (haut et bas pour changer de lettre, gauche et droite pour déplacer le curseur)

    J'aimerai que lorsque que le curseur soit à droite de l'écran et qu'on appui sur la touche de droite, le texte se décale d'un cran.
    Exemple:

    Texte complet: damien abcdef
    damien abc -> amien bcd
    amien bcd -> mien cde

    Bref, vous avez compris.

    Mon texte est gardé en mémoire sous forme de chiffres dans un tableau.

    Par exemple, pour le texte "ABC", charInt[2] contiendra 3 (le 2e caractères est 2e lettre de l'lalphabet)

    Comment faire pour transformer le nouveau tableau en char* ?
    Il me faut un char* pour l'écrire sur l'écran.

    J'espère que vous comprendrez :p

    Merci d'avance !
    Cordialement.

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonjour,

    en espérant que cela pourra t'aider :
    http://www.arduino.cc/en/Tutorial/LiquidCrystalScroll

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    La librairie qui contrôle l'écran a été fait par moi, j'en ai pas pris une sur internet.
    Le lien vers lequel tu me redirige et un lien qui parle d'un include.

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par LDami Voir le message
    La librairie qui contrôle l'écran a été fait par moi, j'en ai pas pris une sur internet.
    Le lien vers lequel tu me redirige et un lien qui parle d'un include.
    En fait, je me suis dit que tu pourrais t'en inspirer Après, tout dépend du genre d'écran que tu vas utiliser.


    Je pense que l'idée proposée par Vincent répondra à ta question.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    En fait j'utilise cette écran: http://www.avdweb.nl/Article_files/A...a-5110-LCD.jpg
    84*48px, donc 10 colonnes, 7 lignes.

    Je souhaite faire de cette façon:
    Une variable globale qui contient le texte complet en chiffres. (Exemple: "ABC" sera: 1, 2, 3 dans le tableau)
    Une variable globale qui contient le texte affiché avant défilement. (char* qui contient les lettres)
    Une variable qui contient le nouveau texte après défilement. (char* qui contient les lettres)

    Voici le code actuel:
    http://pastebin.com/hr02CJWE
    Je ne comprend pas pourquoi, mais ma boucle for ne fonctionne plus, genre le print "MoveText: boucle for" ne s'affiche pas...

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int index; index < 10; index++)
    tu oublies d'initialiser ta variable index !

    Qu'est-ce que curseurPos ?
    Pour ta variable decalage comment gères-tu les extremum (decalage > index et decalage < 0) ?

  7. #7
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Citation Envoyé par LDami Voir le message
    J'aimerai que lorsque que le curseur soit à droite de l'écran et qu'on appui sur la touche de droite, le texte se décale d'un cran.
    Exemple:

    Texte complet: damien abcdef
    damien abc -> amien bcd
    amien bcd -> mien cde

    Bref, vous avez compris.
    Je suis peut être le seul mais je n'ai pas bien compris. Tu souhaites qu'une fois l'écran rempli, que l'affichage se décale à droite au fur et a mesure que tu appuis sur la flèche droite de la télécommande ?
    Si je reprends ton exemple, je pense que ça donne plutôt ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    /* Texte complet : "damien abcdefghijklmnopqrstuvwxyz" 
     * sur un afficheur 1 ligne de 16 caractères ça donne : "damien abcdefghi" 
     */
     
    "damien abcdefghi" 
    appui sur le bouton [->] de la télécommande
     
    "amien abcdefghij" 
    appui sur le bouton [->] de la télécommande
     
    "mien abcdefghijk"  
    appui sur le bouton [->] de la télécommande
     
    "ien abcdefghijkl"
    Est ce que c'est ça que tu souhaites ? Car j'ai un peu de mal a comprendre la démarche et la logique dans l'exemple que tu donnes.


    Citation Envoyé par LDami Voir le message
    Comment faire pour transformer le nouveau tableau en char* ?
    Il me faut un char* pour l'écrire sur l'écran.
    En C, il n'y a pas de différence entre un tableau de "char" et un pointeur sur "char*".
    Par exemple :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    char tableau [33] = {'d', 'a', 'm', ...., 'x', 'y', 'z'};
     
    void decalage_text (char *le_text, int longueur_text, int nombre_de_caractere_a_decaler) 
    {
     ...
    }
     
    void main (void) 
    {
       decalage_text(tableau, 33, 1); 
       // je passe en paramètre le tableau, 
       // sa longueur pour contrôle interne anti debordement, 
       // et le nombre de caractère a décaler
    }

    Je pense que tu es confronté a un problème d'algorithme que tu peux régler avec un buffer tournant, voir ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
       Zone d'affichage de 16 caractères max sur le LCD
     
       +----------------------------------------------+
       |d  a  m  i  e  n     a  b  c  d  e  f  g  h  i|
       +----------------------------------------------+
     
        ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^ 
        |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
     
       [d][a][m][i][e][n][ ][a][b][c][d][e][f][g][h][i][j][k]
     
    ************************************************************
     
    Appui sur la bouton [->] de la télécommande = Permuter le tableau (buffer tournant)
     
     1) état initial 
       [d][a][m][i][e][n][ ][a][b][c][d][e][f][g][h][i][j][k]
     
     
     2) sortir le premier élément et le mémoriser
       [ ][a][m][i][e][n][ ][a][b][c][d][e][f][g][h][i][j][k]
     
        d
     
     
     3) échanger tous les éléments de mon tableau vers la gauche
       l'élément 0 est remplacé par l'élément 1 ainsi de suite
       [a][m][i][e][n][ ][a][b][c][d][e][f][g][h][i][j][k][ ]
     
     
     
     4) remettre l'élement mémorisé a l'étape 2 au fond du tableau
       [a][m][i][e][n][ ][a][b][c][d][e][f][g][h][i][j][k][ ]
     
    						       d
     
     
     5) raffraichir l'affichage avec le nouveau tableau
     
     
     
       Zone d'affichage de 16 caractères max sur le LCD
     
       +----------------------------------------------+
       |a  m  i  e  n     a  b  c  d  e  f  g  h  i  j|
       +----------------------------------------------+
     
        ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^ 
        |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
     
       [a][m][i][e][n][ ][a][b][c][d][e][f][g][h][i][j][k][d]

    Citation Envoyé par LDami Voir le message
    La librairie qui contrôle l'écran a été fait par moi, j'en ai pas pris une sur internet.
    Ca c'est très bien !

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/07/2011, 12h07
  2. Réponses: 3
    Dernier message: 29/10/2010, 10h24
  3. Longueur d'une chaine Text sur l'écran
    Par GSXRider dans le forum C#
    Réponses: 2
    Dernier message: 20/02/2008, 09h23
  4. Alignement d'un texte sur des écrans de taille différent
    Par Kuchiki Byakuya dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 05/02/2007, 19h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo