je suis débutant et j'ai acheté un lcd 20x4 lignes avec une interface i2c sur ebay. (la version longue du nom c'est Serial IIC/I2C/TWI 2004 204 20X4 Character LCD Module Display For Arduino Blue)
J'essaye désespérément de le faire afficher hello word et rien a faire.
Sachant que le cablage est relativement simple avec une interface i2c et que je l'ai vérifié 3 fois je pense qu'il s'agit d'un problème de librairie
J'ai trouve une multitude de librairie avec des plus nom barbare les uns que les autre, je ne sais pas laquelle utiliser
quel librairie faut-il utiliser sur mon arduino ethernet ?
PS; je sais pas si ca peut jouer mais je suis sur linux ubuntu
PPS: j'ai bien vérifier le potentiomètre de contraste
LiquidcrystalI2C devrait faire l'affaire
Pour le contraste, quand tu baisses la tension de commande (curseur du potar vers le GND, est-ce que l'ecran a tendance a se noircir ?
quand je bouge le potar, il a bien tendance a se noircir (en blanc car les lettres sont blanches dans ce lcd), mais ce qui bizare c'est que 1ere et la 3eme ligne se fonci plus que la 2eme et la 4eme.
pour le lien quand je compile ce sketch
#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();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("b2cqshop");
lcd.setCursor(0, 1);
lcd.print("Voltage: ");
lcd.setCursor(13, 1);
lcd.print("V");
}
void loop()
{
int val;
float temp;
val=analogRead(0);
temp=val/4.092;
val=(int)temp;//
lcd.setCursor(9, 1);
lcd.print(0x30+val/100,BYTE);
lcd.print(0x30+(val%100)/10,BYTE);
lcd.print('.');
lcd.print(0x30+val%10,BYTE);
delay(100);
}
j'ai ce message d'erreur a la compilation
In file included from test_lcd.cpp:2:0:
/usr/share/arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:81:16: error: conflicting return type specified for ‘virtual void LiquidCrystal_I2C::write(uint8_t)’
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:48:20: error: overriding ‘virtual size_t Print::write(uint8_t)’
test_lcd.cpp: In function ‘void loop()’:
test_lcd.cpp:28:28: error: ‘BYTE’ was not declared in this scope
/usr/share/arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:81:16: error: conflicting return type specified for ‘virtual void LiquidCrystal_I2C::write(uint8_t)’
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:48:20: error: overriding ‘virtual size_t Print::write(uint8_t)’
test_lcd.cpp: In function ‘void loop()’:
test_lcd.cpp:28:28: error: ‘BYTE’ was not declared in this scope
Problème classique, à mon avis la lib est codé pour 0023 et l'ide est en version 1.0.x
Il suffit de remplacer lcd.print(xx, BYTE) par lcd.write(xx) est tout devrais revenir à la normal
Une erreur de compilation ne peut pas être liée au LCD.
La version que tu as récupéré doit être la V1 qui n'est pas pour le dernier IDE
En suivant le lien proprement depuis l'Arduino Playground tu tombe sur la page de l'auteur avec la dernière version qui passe sans problèmes.
pour ceux que ca interesse et qui aurait le même problème que moi
j'ai utilisé la librairie de F Malpartifa qui est visiblement celle qui fonctionne avec le nouvel IDE pour la puce PCF8574T
par contre au préalable j'ai du utiliser un scanner d'adresse I2C que j'ai obtenu ici
dans mon cas, l'adresse est 0x3F
avec ce sketch et la bonne adresse ca a tout de suite fonctionné
/*
** Example Arduino sketch for SainSmart I2C LCD2004 adapter for HD44780 LCD screens
** Readily found on eBay or http://www.sainsmart.com/
** The LCD2004 module appears to be identical to one marketed by YwRobot
**
** Address pins 0,1 & 2 are all permenantly tied high so the address is fixed at 0x27
**
** Written for and tested with Arduino 1.0
** This example uses F Malpartida's NewLiquidCrystal library. Obtain from:
** https://bitbucket.org/fmalpartida/new-liquidcrystal
**
** Edward Comer
** LICENSE: GNU General Public License, version 3 (GPL-3.0)
*/
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x3F // Define I2C Address where the PCF8574A is
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
int n = 1;
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
void setup()
{
lcd.begin (20,4);
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home (); // go home
lcd.print("SainSmart I2C test");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print("F Malpartida library");
lcd.setCursor ( 0, 2 ); // go to the next line
lcd.print("Test By Edward Comer");
lcd.setCursor ( 0, 3 ); // go to the next line
lcd.print("Iteration No: ");
}
void loop()
{
// Backlight on/off every 3 seconds
lcd.setCursor (14,3); // go col 14 of line 3
lcd.print(n++,DEC);
lcd.setBacklight(LOW); // Backlight off
delay(3000);
lcd.setBacklight(HIGH); // Backlight on
delay(3000);
}