[Programmation] Arduino + LCD I2C [Résolu]
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 58

Arduino + LCD I2C [Résolu]



  1. #1
    Jeremy08440

    Arduino + LCD I2C [Résolu]


    ------

    Bonjour à tous,

    Je suis tout nouveau dans l'apprentissage de l'Arduino et je viens de me lancer dans la partie affichage LCD.
    J'ai câblé un afficheur LCD 1602 I2C couplé à un programme, mon souci est que l'écran n'affiche que des rectangles blancs.

    Voici une photo :
    Nom : IMG_20240126_131350_resized_20240126_011406751.jpg
Affichages : 302
Taille : 300,5 Ko

    Ainsi que le code :

    Code:
    #include <Wire.h> //On importe les bibliothèques pour l'écran LCD I2C
    #include <LiquidCrystal_I2C.h>
    
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    
    void setup() {
      lcd.init();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Hello");
    }
    
    void loop() {
      
    }
    Auriez-vous des pistes de réflexion pour trouver une cause de défaillance ?

    Un grand merci par avance !

    -----

  2. #2
    niala72bis

    Re : Arduino + LCD I2C

    Bonjour,

    le monde Arduino c'est fait pour des bidouilleurs, c'est lourd et assez sombre, juste pour un truc vite fait sur un coin de table..

    Prendre une librairie truc-much faite par on ne sait qui nécessiterait de bien comprendre comment l'utiliser (ce que fait une fonction, comment on passe les divers paramètres même si leurs noms ont un sens...) et c'est souvent une usine à gaz.

    En fait dans un projet en cours sur ma table, j'avais essayé d'éplucher ça mais finalement je préfère reprendre la doc des circuits intégrés, à priori un contrôleur Hitachi HD44780 et un driver I2C PCF8574, et réaliser mes fonctions en C, d'ailleurs dans mes diverses réalitions j'ai déjà des briques similiraires.

    De toute façon là j'utilise un PIC16Fxxx, donc une architecture très allégée, qui nécessite un certain savoir faire pour bien optimiser l'ensemble.

    Pour revenir au diagnostic, il faut mettre les mains dans le cambouis en blouse blanche, à savoir oscilloscope à mémoire, ou analyseur logique, de préférence avec option protocole I2C. Décoder toutes les trames avec la doc du driver LCD.
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  3. #3
    umfred

    Re : Arduino + LCD I2C

    tu as lu la doc de ton écran ?
    tu es sûr de l'adresse i2c de ton écran ?

    tu as un script sur https://playground.arduino.cc/Main/I2cScanner/ qui permet de scanner et identifier l'adresse d'élements en i2c

  4. #4
    jiherve

    Re : Arduino + LCD I2C

    bonjour
    dans la doc (est ce la bonne ?) on lit çà:
    //----- Adressage matériel -----
    // En cas de non fonctionnement, mettez la ligne 8 en
    // commentaire et retirez le commentaire à la ligne 9.
    LiquidCrystal_I2C lcd(0x27, 20, 4);
    //LiquidCrystal_I2C lcd(0x3F,20,4);
    JR
    l'électronique c'est pas du vaudou!

  5. A voir en vidéo sur Futura
  6. #5
    Seb.26

    Re : Arduino + LCD I2C

    Sur le PCB de ton écran, tu as des jumper soudé ou non soudés pour définir l'adresse de ton LCD (ce qui te permet d'en mettre plusieurs sur un même bus).

    Donc tu peux déjà éssayé les 2 ou 3 adr connues pour ton modèle d'écran et si ça marche pas : le script qui cherche toutes les adr. est très pratique (et il fonctionne !).

    Fais aussi attention au potentiomètre qui gère le contraste, parfois on ne voit rien à cause de lui.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. #6
    paulfjujo

    Re : Arduino + LCD I2C

    bonjour,

    il faut aussi vérifier le straps d'adressage I2C sur le module pigback PF8754 (à l'arriere du LCD)
    verifier aussi si c'est un PCF8754 ( de 0x20 à 0x27) ou PCF8754A
    ..car pas la meme base d'adresse I2C !



    oups..moins rapide que Seb.26
    Dernière modification par paulfjujo ; 26/01/2024 à 14h26.

  8. #7
    umfred

    Re : Arduino + LCD I2C

    En tout cas, on est tous raccord pour demander qu'il vérifie l'adressage de l'écran

  9. #8
    jiherve

    Re : Arduino + LCD I2C

    re
    et aussi le branchement des fils SCL,SDA , bon, normalement si le soft est bien fait il devrait couiner!
    JR
    l'électronique c'est pas du vaudou!

  10. #9
    Pascal071

    Re : Arduino + LCD I2C

    bonjour
    oui, vérifier avant tout le branchement SDA (A4) et SCL (A5)
    et la connectique, le lcd i2c n'aime pas les mauvais contacts sur SDA-SCL
    ensuite un coup de scanner pour vérifier l'adresse (0x27 en général)
    umfred: https://playground.arduino.cc/Main/I2cScanner/

    Cdlt

  11. #10
    Janpolanton

    Re : Arduino + LCD I2C

    Bonjour,
    Moi je dirais trop de contraste.
    A régler avec le petit ajustable sur le PCB de l'afficheur.

  12. #11
    niala72bis

    Re : Arduino + LCD I2C

    Trois documents importants :

    I2C_1602_LCD.pdf
    pcf8574.pdf
    HD44780.pdf
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  13. #12
    Jeremy08440

    Re : Arduino + LCD I2C

    Merci pour toutes vos réponses, j'ai dans un premier temps fait un test scanner.
    Résultat du test :
    Nom : Sans titre.png
Affichages : 237
Taille : 1,2 Ko

    C'est déjà étrange qu'il ne trouve pas l'écran.

  14. #13
    gienas
    Modérateur

    Re : Arduino + LCD I2C

    Bonjour à tous

    Citation Envoyé par Janpolanton Voir le message
    … A régler avec le petit ajustable sur le PCB de l'afficheur.
    +1

    Je reste très optimiste. Le réglage se trouve sur la petite carte additionnelle qui convertit le I2C en pins de l’afficheur.

    Elle comporte le potentiomètre à régler pour le contraste. Si en les éteignant il n’y a pas le message, il faut vérifier le câblage.

    Le scanner, celui qu’on trouve sur le net marche très bien et affiche le résultat sur l’écran ordinateur. S’il ne trouve pas de I2C c’est qu’il y a une erreur hardware: erreur de câblage, composant HS …



    PS: on est autorisé à ne pas aimer, mais ce n’est pas une raison pour le dénigrer. Arduino permet des "miracles" pour quelqu’un qui n’y connaît rien et qui l’annonce.
    Dernière modification par gienas ; 26/01/2024 à 17h11.

  15. #14
    jiherve

    Re : Arduino + LCD I2C

    Re
    question sans doute idiote: n'y a t il pas une librairie à charger pour activer l'I²C ou celle du LCD le fait elle?
    Car sur un Atmel il y a un bon bout de soft pour utiliser l'interface TWI
    JR
    l'électronique c'est pas du vaudou!

  16. #15
    umfred

    Re : Arduino + LCD I2C

    Citation Envoyé par jiherve Voir le message
    Re
    question sans doute idiote: n'y a t il pas une librairie à charger pour activer l'I²C ou celle du LCD le fait elle?
    Car sur un Atmel il y a un bon bout de soft pour utiliser l'interface TWI
    JR
    ce sont les 2 librairies mises en include: le Wire.h configure l'i2c et gère l'i2c et LiquidCrystal_I2C.h pour l'écran

  17. #16
    Jeremy08440

    Re : Arduino + LCD I2C

    Je viens de vérifier mon câblage :
    GND : GND
    VCC : 5V
    SDA : pin 4
    SCL : pin 5

    et cela ne fonctionne toujours pas :/

  18. #17
    Janpolanton

    Re : Arduino + LCD I2C

    Et le réglage de contraste?

  19. #18
    umfred

    Re : Arduino + LCD I2C

    Citation Envoyé par Jeremy08440 Voir le message
    Je viens de vérifier mon câblage :
    GND : GND
    VCC : 5V
    SDA : pin 4
    SCL : pin 5

    et cela ne fonctionne toujours pas :/
    attention SDA sur A4 et SCL sur A5 sur les uno r3, r4, et nano, sur d'autres ça change https://www.arduino.cc/reference/en/...nication/wire/ donc bien vérifier que ce sont les bonnes pins (elles sont dispo des 2 côtés de la cartes)

  20. #19
    Jeremy08440

    Re : Arduino + LCD I2C

    Et le réglage de contraste?
    oui j'ai fait un réglage contraste et je n'ai toujours rien (c'est bien le potar sur la carte de l'I2C ?)

  21. #20
    Forhorse

    Re : Arduino + LCD I2C

    J'ai copié colle ton code dans l'IDE Arduino et déjà y a un probleme à la compilation :
    Compilation error: 'class LiquidCrystal_I2C' has no member named 'init'
    Tout projet flou conduit à une connerie précise !

  22. #21
    Forhorse

    Re : Arduino + LCD I2C

    avec
    Code:
     lcd.begin();
    chez moi ça fonctionne, j'ai bien "Hello" qui s'affiche son mon LCD
    Tout projet flou conduit à une connerie précise !

  23. #22
    niala72bis

    Re : Arduino + LCD I2C

    Je travaille en ce moment sur ce même ensemble, mais hors du monde Arduino, par conviction et religion déjà.

    Je ne pense pas que ce soit un problème de contraste. Par contre il y a une seule ligne de 16 qui est allumée, de façon régulière. Donc le paramètre nombre de lignes soit n'est pas bon dans le programme donc incompris. Et tous les caractères sont identiques et inconnus donc également pas interprétés correctement.

    En priorité vérifier SDA et SCL, et ensuite voir le paramètrage dans le logiciel
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  24. #23
    Forhorse

    Re : Arduino + LCD I2C

    Non sur ces afficheurs c'est l'état avant initialisation.
    D'ailleurs j'ai utilisé exactement le même code sur un 4x20 sans rien modifier* (donc avec la "mauvaise" déclaration) et ça fonctionne tout pareil.
    Et si tu veux savoir à quoi correspond chaque paramètres de chaque fonction appelé dans la librairie, il suffit de faire un clic droit dans l'IDE (Arduino ou Visual Studio Code) au niveau de l'appel et de choisir "go to définition" et hop l’éditeur t'ouvre le fichier d'interface de la librairie et tu peux voir le code de celle-ci... c'est pas une boite noire et les outils sont là pour comprendre ce que ça fait.
    Et si tu penses faire mieux, ou que pour des raisons d'optimisation tu veux virer toutes les fonctions dont tu n'as pas besoin, libre à toi de copier-coller le code pour faire ta propre librairie sur mesure.

    * Hormis le lcd.init() remplacé par lcd.begin() bien entendu.
    Dernière modification par Forhorse ; 26/01/2024 à 20h55.
    Tout projet flou conduit à une connerie précise !

  25. #24
    niala72bis

    Re : Arduino + LCD I2C

    Oh d'abord si je ne suis pas serré en taille de code je fais un init complet sans regarder les conditions de reset, généralement ça ne coûte pas plus cher.

    Ensuite je fais des boucles de test soit au scope soit à l'analyseur logique.

    Et lcd.begin(); il fait quoi ??? encapsulation ou autruche ?
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  26. #25
    Forhorse

    Re : Arduino + LCD I2C

    dans LiquidCrystal_I2C.h

    Code:
    /**
    	 * Set the LCD display in the correct begin state, must be called before anything else is done.
    	 */
    	void begin();
    dans LiquidCrystal_I2C.cpp

    Code:
    void LiquidCrystal_I2C::begin() {
    	Wire.begin();
    	_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
    
    	if (_rows > 1) {
    		_displayfunction |= LCD_2LINE;
    	}
    
    	// for some 1 line displays you can select a 10 pixel high font
    	if ((_charsize != 0) && (_rows == 1)) {
    		_displayfunction |= LCD_5x10DOTS;
    	}
    
    	// SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
    	// according to datasheet, we need at least 40ms after power rises above 2.7V
    	// before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50
    	delay(50); 
    
    	// Now we pull both RS and R/W low to begin commands
    	expanderWrite(_backlightval);	// reset expanderand turn backlight off (Bit 8 =1)
    	delay(1000);
    
    	//put the LCD into 4 bit mode
    	// this is according to the hitachi HD44780 datasheet
    	// figure 24, pg 46
    
    	// we start in 8bit mode, try to set 4 bit mode
    	write4bits(0x03 << 4);
    	delayMicroseconds(4500); // wait min 4.1ms
    
    	// second try
    	write4bits(0x03 << 4);
    	delayMicroseconds(4500); // wait min 4.1ms
    
    	// third go!
    	write4bits(0x03 << 4); 
    	delayMicroseconds(150);
    
    	// finally, set to 4-bit interface
    	write4bits(0x02 << 4); 
    
    	// set # lines, font size, etc.
    	command(LCD_FUNCTIONSET | _displayfunction);  
    	
    	// turn the display on with no cursor or blinking default
    	_displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;
    	display();
    	
    	// clear it off
    	clear();
    	
    	// Initialize to default text direction (for roman languages)
    	_displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;
    	
    	// set the entry mode
    	command(LCD_ENTRYMODESET | _displaymode);
    	
    	home();
    }
    Encore une fois, tout est là si on veut se donner la peine de regarder.
    Je ne vois pas le but de dénigrer l'environnement Arduino avec des motifs fallacieux.
    Tout projet flou conduit à une connerie précise !

  27. #26
    Pascal071

    Re : Arduino + LCD I2C

    bonsoir

    perso, une fois chargé la lib. LiquidCrystal_I2C.h
    et déclaré LiquidCrystal_I2C lcd(0x27, 16, 2);
    Code:
    void setup() {
      lcd.init();          // init lcd
      lcd.backlight();  // retroeclairage ON
      // suite du setup
    }
    Dernière modification par Pascal071 ; 26/01/2024 à 22h43.

  28. #27
    umfred

    Re : Arduino + LCD I2C

    Citation Envoyé par Pascal071 Voir le message
    bonsoir

    perso, une fois chargé la lib. LiquidCrystal_I2C.h
    et déclaré LiquidCrystal_I2C lcd(0x27, 16, 2);
    Code:
    void setup() {
      lcd.init();          // init lcd
      lcd.backlight();  // retroeclairage ON
      // suite du setup
    }
    Il manque un bout de la réponse, non ? genre l'info de savoir si ça marche ou pas ?

  29. #28
    Pascal071

    Re : Arduino + LCD I2C

    bonjour
    je voulais dire avec lcd.init() ça fonctionne

  30. #29
    Seb.26

    Re : Arduino + LCD I2C

    Problème de bus donc (ou écran HS suite mauvaise manip ?)

    un peu de lecture :
    https://learn.adafruit.com/scanning-...esses/overview

    PS: tu as bien les 2 résistances sur le bus ?!!!

    Tu as quoi comme carte Arduino ?
    Dernière modification par Seb.26 ; 29/01/2024 à 11h26.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  31. #30
    niala72bis

    Re : Arduino + LCD I2C

    Pourquoi DEUX résistances sur le bus ?

    Le signal SCL est toujours généré par le maître I2C, donc un port en structure totem-pôle il me semble.
    Par contre OUI pour SDA il faut une pull-up, car il n'y en a pas sur le petit module adaptateur avec le PCF8574.
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. [Programmation] Arduino bricolage [Résolu]
    Par Henrix dans le forum Électronique
    Réponses: 105
    Dernier message: 26/10/2023, 12h35
  2. [Numérique] [RESOLU] Problème de TIMER PWM - IRremote sur ARDUINO UNO (RGB LED)
    Par horror484 dans le forum Électronique
    Réponses: 0
    Dernier message: 08/06/2020, 12h56
  3. [Programmation] [Arduino] communication FTP qui n'aboutit pas [Résolu]
    Par Pollux32 dans le forum Électronique
    Réponses: 10
    Dernier message: 10/12/2019, 10h53
  4. [Energie] Piloter un esc via arduino ? [Résolu]
    Par JulienDu10 dans le forum Électronique
    Réponses: 5
    Dernier message: 13/01/2017, 16h47
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...