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 :

Ecran LCD JM162E


Sujet :

Arduino

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 12
    Par défaut Ecran LCD JM162E
    Salut à tous.
    Je suis nouveau sur le forum et sur Arduino.
    J'ai 26 ans, je suis technicien de maintenance et je vis dans le 76 (seine maritime).

    Voila mon soucis,j'ai récupéré un écran lcd JM162E, l'écran est semblable à celui que on retrouve un peu partout pour l'arduino(160A2) mais il est plus grand.
    Quand je le connecte, en mode 4 bites, l'écran affiche des carrés sur la première ligne.Le réglage de contraste ne se fait pas non plus ( j'utilise un potar )
    Mon programme est fait pour afficher l'heure.

    Datasheet de l'écran en question
    https://www.yumpu.com/en/document/vi...2e-kentec-gmbh

    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
    53
     
    #include <LiquidCrystal.h> //on inclut la librairie
     
    // initialise l'écran avec les bonnes broches
     
    LiquidCrystal lcd(11,10,5,4,3,2);
     
    int heures,minutes,secondes;
    char message[16] = "";
     
    void setup()
    {
        lcd.begin(16, 2); // règle la taille du LCD : 16 colonnes et 2 lignes
     
        //changer les valeurs pour démarrer à l'heure souhaitée !
        heures = 24;
        minutes = 59;
        secondes = 5;
    }
     
    void loop()
    {
        // gérer le temps qui passe...
        if(secondes == 0) //une minutes est atteinte ?
        {
            secondes = 60; //on recompte à partir de 0
            minutes--;
        }
        if(minutes == 0) //une heure est atteinte ?
        {
            minutes = 0;
            heures--;
        }
        if(heures == 24) //une journée est atteinte ?
        {
            heures = 0;
        }
     
        //met le message dans la chaine à transmettre
        sprintf(message,"    %2d:%2d:%2d",heures,minutes,secondes);
     
        lcd.home();           //met le curseur en position (0;0) sur l'écran
     
        lcd.write(message);   //envoi le message sur l'écran
     
        delay(1000);          //attend une seconde
        //une seconde s'écoule...
        secondes--;
    lcd.setCursor(2,1);        //place le curseur aux coordonnées (2,1)
     
     
     
    }
    Cablage:
    http://images.google.fr/imgres?imgur...sJCsMQ9QEIIjAC
    Si i y a besoin d'info supplémentaires, n'hésité pas

    Merci

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    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 253
    Par défaut
    Salut,
    Je n'ai pas de Arduino cependant à quel endroit tu règles ton afficheur LCD en mode 4 bits ?
    Page 13 de ta doc, tu as un registre "Function Set" et dedans il y a un bit (DL) à mettre à 0 pour être en mode 4 bits. Je ne vois pas où tu le fais dans ton soft ?

    Pour le réglage du contraste on peut voir ton montage (schéma pour faire le réglage) ?

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 12
    Par défaut
    Pour moi quand tu mets un bit a 0, c'est que tu ne doit pas mettre de tension sur la borne qui va bien, non?

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    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 253
    Par défaut
    Citation Envoyé par skylines89
    Pour moi quand tu mets un bit a 0, c'est que tu ne doit pas mettre de tension sur la borne qui va bien, non?
    C'est mettre la broche au GND (masse) c'est différent de pas de tension (en l'air)

    J'ai lu la doc de Arduino sur le constructeur de la fonction LiquidCrystal https://www.arduino.cc/en/Reference/...talConstructor
    Ton programme a bien configuré l'afficheur en 4 bits au travers de "LiquidCrystal lcd(11,10,5,4,3,2);" si tu étais en 8 bits tu aurais eu 10 chiffres en paramètre..... je comprends mieux maintenant


    Alors maintenant, pour ton programme, c'est tout a fait normal que tu n'écris jamais rien sur la deuxième ligne car ton code fait que tu n'écris rien sur la seconde ligne ! Tu ne fais que mettre le curseur sur la seconde ligne mais c'est tout. Du coup au prochain tour de boucle tu refais lcd.home(); qui te remets sur la première ligne puis tu fais lcd.write(message); pour écrire sur la première ligne etc...

    Essaye ça pour voir (j'ai modifié que la fin de ton programme) :
    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
    15
    16
     
    [...]
      sprintf(message,"    %2d:%2d:%2d",heures,minutes,secondes);
     
        lcd.home();           //met le curseur en position (0;0) sur l'écran 
     
        lcd.write(message);   //envoi le message sur l'écran !!!!!!!!!!!!!!!!!!!!!!!! sur la première ligne !!!!!!!!!!
     
        delay(1000);          //attend une seconde
     
        secondes--;
        lcd.setCursor(2,1);        //place le curseur aux coordonnées (2,1)
     
        lcd.write("ligne 2"); // j'écris sur la ligne 2 la phrase "ligne 2"
     
    [...]


    Pour le contraste, tu es sur de ton câblage réel ? Le potard est de quelle valeur ?

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 12
    Par défaut
    Au niveau de l'écran:


    Les carres clignotent en revenant en faisant des nuances de noir
    Le potentiometre est un 10 Kohm
    Référence B103(au dos du potentiometre.

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    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 253
    Par défaut
    D'accord, j'ai 4 questions :

    - Tu as un Arduino UNO ?
    - As tu un afficheur LCD chez toi, je veux dire un que tu as déjà réussi a faire fonctionner (pour valider le soft) ?
    - Peux tu prendre une photo où je peux voir ton potentiomètre, où il est relié etc... le câblage réel en gros (même celui entre Arduino et l'afficheur) ?
    - Est ce que tu as un voltmètre chez toi ?


    En parlant de soft, il faut le simplifier pour éviter d'avoir des problèmes de soft et d'afficheur car bien souvent on ne s'en sort plus.
    Ce simple programme est largement suffisant pour faire un test.
    (Je n'ai pas de Arduino donc je te fais confiance pour les broches utilisées... à dire vrai, si j'ai bien un Arduino UNO sauf que je ne le programme pas avec le logiciel Arduino, je le programme directement en C sans aucune bibliothèque)
    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
    15
    16
    17
    18
    #include <LiquidCrystal.h> //on inclut la librairie
     
    // initialise l'écran avec les bonnes broches
    LiquidCrystal lcd(11,10,5,4,3,2);
     
    void setup()
    {
        lcd.begin(16, 2); // règle la taille du LCD : 16 colonnes et 2 lignes
    }
     
    void loop()
    {
        lcd.home();           //met le curseur en position (0;0) sur l'écran
        lcd.print("TEST LIGNE 1");   
        lcd.setCursor(2,1);        //place le curseur aux coordonnées (2,1)
        lcd.print("TEST LIGNE 2");  
     
    }

  7. #7
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 12
    Par défaut
    Alors j'ai testé le soft avec un écran lcd, il marche et tout mes branchements fonctionnement.
    Donc je pense que l'écran doit avoir un problème

    J'ai un multimètre à la maison et j'ai placé une led entre la masse et la broche milieu du potentiomètre
    J'ai bien une variation de l'intensité lumineuse

  8. #8
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    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 253
    Par défaut
    Ok, c'est la où je voulais en venir mais tu avais déjà vérifié.

    Je pense aussi que l'écran à un problème.

    Ps : pour moi le contrôleur JM162E est un contrôleur standard donc ton soft était compatible.

  9. #9
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 12
    Par défaut
    Sur les bornes de l'écran, il y a plusieurs choses que je ne comprends pas:
    VSS= 5v
    VDD=GRD
    VO=contraste donc il faut applique une tension comprise entre 0 et 5 V donc si je mets le VO sur GRD ,j'ai le contrast max et +5 V on a le contrast mini(on ne vois plus rien).
    RS= La sélection du registre. C'est quoi un registre?
    R/W: pour lire ou écrire, je suppose que si on avait un système pour écrire sur l'écran on pourrait transmettre des infos a l'arduino,et dans ce cas il faudrait basculé cette entrée a 1 ou 0 soit pour écrire ou pour lire.
    E=enable, pour active l'écriture dans un registre.

    Après on a les bornes pour les données soit sur 4 bits ou 8 bites.

    Et enfin l'anode et la cathode de la DEL de rétro-éclairage.

    J'ai bon??

  10. #10
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    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 253
    Par défaut
    Citation Envoyé par skylines89 Voir le message
    VSS= 5v GND (0V)

    VDD=GRD +5V

    VO=contraste donc il faut applique une tension comprise entre 0 et 5 V donc si je mets le VO sur GRD ,j'ai le contrast max et +5 V on a le contrast mini(on ne vois plus rien).

    RS= La sélection du registre. C'est quoi un registre? Sélection Registre ou Donnée, quand RS est à 0 on accède via les bornes de données à des registres. Un registre est un emplacement mémoire (adresse fixe et connue) et la valeur que tu mets dans ce registre permet de faire du réglage/config. Dans la doc, "Function Set" est un registre. Par exemple l'état du bit DL, par exemple (sachant que c'est toi qui le met dans l'état ou tu veux : 0 ou 1), permet de faire passer l'afficheur en mode 4 ou 8 bits. Le bit N, toujours dans le registre "Function Set" permet de passer l'afficheur en mode 1 ou 2 lignes. Quand tu regardes la doc tu verras que tu as un bon nombre de registres pour faire pas mal de config. Autre exemple, tu as un registre qui s'appelle "Return Home", lui quand tu regardes la doc, tu n'as même pas besoin d'écrire une valeur dedans, il te suffit d'aller sur son adresse pour qu'il remette le curseur à la position de départ.
    A contrario, si tu mets RS à 1, ton afficheur comprend que tu veux écrire des caractères et non plus faire des réglages. Tu es en mode "Données".


    R/W: pour lire ou écrire, je suppose que si on avait un système pour écrire sur l'écran on pourrait transmettre des infos a l'arduino,et dans ce cas il faudrait basculé cette entrée a 1 ou 0 soit pour écrire ou pour lire.

    E=enable, pour active l'écriture dans un registre. Ou des données !

    Après on a les bornes pour les données soit sur 4 bits ou 8 bites.

    Et enfin l'anode et la cathode de la DEL de rétro-éclairage.

    J'ai bon?? Oui
    Si tu veux essayer, un bon moyen est de te servir d'un afficheur LCD sans aucune bibliothèque de Arduino. Juste toi, le langage C et la datasheet de l'afficheur !

  11. #11
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 12
    Par défaut
    Jvai regardé la datasheet et voir ce que je comprends et ce que je peux faire.
    Pour le moment, je me contente de mixer des morceaux de programme pris sur le net pour en faire des programmes pour des applications sympa.
    Cette aprem, j'ai fais une commande de servo moteur avec un potar et un renvois d'information d'angle sur un lcd.
    Comme ça j'apprends en identifiant les fonctions dont j'ai besoin
    je fait varier des informations pour voir ce qui change ou non.




  12. #12
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    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 253
    Par défaut
    +1
    C'est un très bon début et tu as tous mes encouragements !
    La lecture d'une datasheet permet aussi de comprendre ce que font les bibliothèques de Arduino.

    Dans Arduino, beaucoup de bibliothèque ont été conçu pour justement que tu n'ais pas à lire trop de datasheet (ceux sont des couches d'abstraction du hard) et pour que tu te concentres sur le soft.

    Tout dépend donc jusqu'à quel point tu veux maîtriser ton projet final.

    Continue

  13. #13
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 12
    Par défaut
    Merci a toi
    Je ferme le topic.

    A plus tard peu être


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choix d'un écran LCD
    Par Tex-Twil dans le forum Périphériques
    Réponses: 9
    Dernier message: 23/11/2006, 22h43
  2. [Ecran] [LCD] Un écran flou
    Par Pedro dans le forum Périphériques
    Réponses: 5
    Dernier message: 13/09/2006, 16h19
  3. [Ecran LCD] Portable Asus
    Par Maxoo dans le forum Composants
    Réponses: 18
    Dernier message: 24/07/2006, 12h28
  4. Ecran LCD pour ps2 ?
    Par sorry60 dans le forum Périphériques
    Réponses: 6
    Dernier message: 03/01/2006, 18h49
  5. [HARDWARE] [Ecran LCD] Recherche écran tactile 7" in dash
    Par l.sage dans le forum Périphériques
    Réponses: 4
    Dernier message: 27/09/2004, 23h43

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