J'ai un écran LCD 1602 qui fonctionne bien seul. Cependant, je voulais libérer certaines broches en utilisant un contrôleur LCD I2C / IIC que j'ai acheté séparément.
Bien que le contrôleur semble communiquer avec mon Arduino UNO à la bonne adresse, je ne parviens pas à afficher le texte. Par défaut (pas de code), il semble que l'écran LCD aura 1 ligne de 16 "carrés" pleins. Lors de l'utilisation de l'adresse 27 dans mon code, l'écran LCD passera à 2 lignes de 16 carrés (voir photo ci-dessous). Le code demande également que le rétroéclairage clignote 3 fois, ce qui fonctionne. Cependant, je ne peux obtenir que 2 lignes de carrés. (Le code complet est au bas de cette question).
J'utilise la bibliothèque LiquidCrystal_I2C de F Malpartida, qui semble être couramment utilisée.
Existe-t-il une meilleure bibliothèque que je devrais utiliser?
Je me demande si ce sont juste les mauvaises broches utilisées dans le code. Tous les croquis que je vois en ligne utilisent les épingles suivantes:
// addr,en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// Set the LCD I2C address
Mais tous les 1602 LCD que je vois en ligne ont les mêmes broches que les miennes, comme vous pouvez le voir sur ma photo ci-dessous:
Ces broches semblent être standard:
Pour encore plus de confusion, les broches de la carte LCD commencent par 1 à gauche, mais les broches du code par défaut semblent commencer par 0! J'ai donc essayé de changer les broches du code en chiffres sur la carte LCD. L'écran LCD ne se transforme plus en 2 lignes de carrés et ne clignote plus le rétro-éclairage. J'ai ensuite essayé de soustraire 1 de chaque broche (pour commencer à 0), même résultat. J'ai ensuite essayé d'utiliser les broches par défaut moins 1, même résultat. Les broches par défaut sont donc plus correctes?! Qu'est-ce que je fais mal?
Quelqu'un d'autre a-t-il réussi à faire fonctionner l'un de ces contrôleurs I2C, et si oui, comment?
Code complet:
/* YourDuino.com Example Software Sketch
16 character 2 line I2C Display
Backpack Interface labelled "YwRobot Arduino LCM1602 IIC V1"
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
#include <LiquidCrystal_I2C.h>
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 2 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++) {
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0
lcd.setCursor(0,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0,1);
lcd.print("HI!YourDuino.com");
delay(8000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.clear();
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Use Serial Mon");
lcd.setCursor(0,1);
lcd.print("Type to display");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
}/* --(end main loop )-- */