Hello,
I have a problem.
my stack displays just the first letter of my words.
where can the problem come from?
merci
Arduino nano
LCD 16x2 + i2c
Hello,
I have a problem.
my stack displays just the first letter of my words.
where can the problem come from?
merci
Arduino nano
LCD 16x2 + i2c
Could you post a sample of the lines used to display the words please ?
notice: you posted in the french part of the forum
Bonsoir
sur un forum francophone pourquoi causer étranger ?
pour faire travailler nos méninges ?
pour nous faire admirer ta maitrîse de l'anglais ?
C'est peut être un mec perdu ?
J'aurais du le rediriger : ICI
oui je suis perdu pauvre moi XD désoler pour le dérangement je pensais être sur un autre forum arduino.
le code en question est celui-ci :
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Poutine");
lcd.setCursor(2,1);
lcd.print("Staline");
}
void loop()
{
}
Pourquoi deux fois lcd.init();?
Important : quelle librairie est utilisée ?
Je pense que l'erreur était de mettre à la fois Poutine et Staline sur un même écran : l'esprit de ce dernier ne l'a pas supporté et hante dorénavant le display. La solution, s'il est encore temps, tient plutôt de l'exorcisme à mon avis...
En admettant que la librairie utilisée soit NewLiquidCristal :
Les constructeurs de la librairie :
LiquidCrystal_I2C (uint8_t lcd_Addr);
LiquidCrystal_I2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol);
LiquidCrystal_I2C( uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs);
LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t backlighPin, t_backlighPol pol);
LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 );
LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol);
Le code de Wilfried :
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
Le constructeur correspondant à son instanciation :
LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t backlighPin,
t_backlighPol pol = POSITIVE)
Ce qui revient à dire : adresse=0x27, backlight=16, pol=2
Et ensuite :
lcd.init(); // initialize the lcd
A aucun moment on ne donne à la librairie le nombre de colonnes et de lignes.
Ce qu'il faut faire :
LiquidCrystal_I2C lcd(0x27);
//dans setup:
lcd.begin(16,2);
Oui, mais si c'est Arduino-LiquidCrystal-I2C-library de fdebrabander, le constructeur est :
LiquidCrystal_I2C(uint8_t lcd_addr, uint8_t lcd_cols, uint8_t lcd_rows, uint8_t charsize = LCD_5x8DOTS);
Par contre, la méthode init n'existe pas, c'est begin()
Exemple :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
// initialize the LCD
lcd.begin();
}
void loop()
{
...
Oui mais imagine que tu aies les deux librairies installées ?
Tu compiles un exemple de la lib de fdebrabander, le compilateur compile peut être avec le LiquidCrystal_I2C.h de Francisco Malpartida NewLiquidCrystal.
Les deux portent le même nom LiquidCrystal_I2C.h.
Tu te prend une erreur de compilation, tu appelles lcd.init() en croyant bien faire.
Plus d'erreur de compilation mais ça ne marche pas.
Explications : LCD-i2c-incompatibility
Il faut donc savoir quelle(s) bibli(s) est(sont) installée(s). Il en existe peut-être encore d'autres avec le même nom pour le fichier .h et qu'on a pas identifiées...
Le LiquidCrystal_I2C c'est la jungle.
Je n'ai jamais vu un merdier pareil.
J'utilise uniquement la librairie de fdebrabander et je n'ai installé que celle-là, et surtout aucune autre.
Moi j'ai laissé tomber ces displays au profit des OLED...