Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide fonctionnement écran lcd 16x2

Sujet résolu
    31 août 2018 à 21:59:15

    Bonjour, je me suis achète un kit avec AliExpress d'électronique, ce kit comprenais un écran lcd 16x2 avec un "adapteur" (1602 I2C), j'ai donc voulu l'utiliser sur mon Polulu AStar 32U4 mais quand j'essaye d'afficher des caractères rien ne s'affiche pourtant la blacklight fonctionne parfaitement et mes branchements semblent correcte..

    /*
    ** Example Arduino sketch for SainSmart I2C LCD Screen 16x2
    ** based on https://bitbucket.org/celem/sainsmart-i2c-lcd/src/3adf8e0d2443/sainlcdtest.ino
    ** by
    ** Edward Comer
    ** LICENSE: GNU General Public License, version 3 (GPL-3.0)
    
    ** This example uses F Malpartida's NewLiquidCrystal library. Obtain from:
    ** https://bitbucket.org/fmalpartida/new-liquidcrystal 
    
    ** Modified - Ian Brennan ianbren at hotmail.com 23-10-2012 to support Tutorial posted to Arduino.cc
    
    ** Written for and tested with Arduino 1.0
    **
    ** NOTE: Tested on Arduino Uno whose I2C pins are A4==SDA, A5==SCL
    
    */
    #include <Wire.h>
    #include <LCD.h>
    #include <LiquidCrystal_I2C.h>  // F Malpartida's NewLiquidCrystal library
    
    
    #define I2C_ADDR    0x3f  // Define I2C Address for controller
    #define BACKLIGHT_PIN  15
    #define En_pin  6
    #define Rw_pin  5
    #define Rs_pin  4
    #define D4_pin  11
    #define D5_pin  12
    #define D6_pin  13
    #define D7_pin  14
    
    #define  LED_OFF  0
    #define  LED_ON  1
    LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
    
    void setup() 
    {
      lcd.begin (16,2);  // initialize the lcd
    // Switch on the backlight
      lcd.setBacklightPin(BACKLIGHT_PIN,NEGATIVE);
      lcd.setBacklight(LED_ON);
    }
    
    void loop()  
    {
    
    // Reset the display 
      lcd.clear();
      delay(1000);
      lcd.home();
     
    // Print on the LCD
      lcd.backlight();  
      lcd.setCursor(0,0); 
      lcd.print("Hello, world!");
      delay(8000);
    }
    

    • Partager sur Facebook
    • Partager sur Twitter
      31 août 2018 à 22:45:03

      L'adresse i2c est la bonne?
      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2018 à 12:32:09

        Et si tu règle le contraste avec  la vis sur l'interface I2C!!!

        Je te dit ça, c'est 2 truc simple sur lesquels je me suis fait avoir

        • Partager sur Facebook
        • Partager sur Twitter
          2 septembre 2018 à 12:42:33

          J'ai essayé et quand je change le contraste sur la première ligne les carrés sont blancs..
          • Partager sur Facebook
          • Partager sur Twitter
            2 septembre 2018 à 13:04:36

            Juste pour être sûr que l'adresse i2c est correcte (par défaut elle est à 0x27 sur la plupart des modules, les 3 ponts de soudure A0 A1 et A2 ne sont pas connectés), quand tu écris que la backlight fonctionne, tu veux dire que tu peux l'allumer et l'éteindre par le code ?
            • Partager sur Facebook
            • Partager sur Twitter
              2 septembre 2018 à 13:27:20

              Sur le mien, l'adresse est 0x3f
              • Partager sur Facebook
              • Partager sur Twitter
                2 septembre 2018 à 13:51:51

                Pour l'adresse c'est sûr et oui je peut allumer via le code..
                • Partager sur Facebook
                • Partager sur Twitter
                  2 septembre 2018 à 15:32:37

                  En fait, 0x27 c'est pour le PCF8754 et 0x3F pour le PCF8574A, la seule différence entre les 2 puces étant l'adresse (comme ça on peut en mettre 8 de chaque type sur le même bus i2c).

                  Mais c'est bizarre que ça fonctionne, le pcf8574a n'a que 8 sorties, donc tes définitions de broches devraient être en 0 et 7. J'imagine que le 15 est pris pour la broche 7 (3 bits de poids faibles de 15), donc le backlight est sur la broche 7.

                  En supposant que c'est une variante commune du module i2c décrite là: https://arduino-info.wikispaces.com/LCD-Blue-I2C (I2C LCD DISPLAY VERSION 2) avec la backlight sur la broche 7 avec une polarité négative, ça devrait correspondre à:

                  #define En_pin  4
                  #define Rw_pin  5
                  #define Rs_pin  6
                  #define D4_pin  0
                  #define D5_pin  1
                  #define D6_pin  2
                  #define D7_pin  3
                  



                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 septembre 2018 à 16:29:19

                    Malheureusement ça n'as rien changé :/

                    Mon écran lcd est défini sur 16 broches...

                    Vss, vdd, vo, rs, rw, e, d0, d1, d2, d3, d4, d5, d6, d7, A, K

                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 septembre 2018 à 18:36:38

                      Presque tous les écrans sont comme ça, ce qui change c'est la façon dont ces broches sont connectées aux sorties P0-P7 du PCF8574(A)

                      Tu peux essayer de suivre les pistes pour déterminer l'ordre des broches, ou utiliser un multimètre en mode continuité (la broche du backlight, A ou K, n'est pas directement connectée, mais passe par un transistor, donc une fois que tu auras déterminé toutes les autres, celle qui reste sera celle du backlight).

                      Mais avant ça, tu peux essayer l'ordre le plus courant: 

                      LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 

                      en supprimant la ligne lcd.setBacklightPin(BACKLIGHT_PIN,NEGATIVE);

                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 septembre 2018 à 18:52:21

                        Toujours rien malheuresement...

                        Et les broches sont "droite" pour moi l'ordre reste le même.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 septembre 2018 à 19:19:53

                          EliottDonatien a écrit:

                          Et les broches sont "droite" pour moi l'ordre reste le même.

                          Je parlais de l'ordre dans lequel les broches de l'adaptateur I2C sont connectées à la puce qui se trouve sur cet adaptateur. Tu dois repérer les broches P0 à P7 sur la puce: puis déterminer à quelle broche de l'écran elles sont connectées. Par exemple, si P3 est connectée à EN, alors il faut remplacer le #define correspondant dans ton code par ça:
                          #define En_pin  3 



                          • Partager sur Facebook
                          • Partager sur Twitter
                            2 septembre 2018 à 22:11:30

                            OK avec ce site https://arduino-info.wikispaces.com/LCD-Blue-I2C j'ai réussi à avoir quelque chose de fonctionnel...

                            Merci pour votre aide ^_^

                            -
                            Edité par EliottDonatien 3 septembre 2018 à 0:34:21

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Aide fonctionnement écran lcd 16x2

                            × 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