Go Down

Topic: [solve]quel librairie pour lcd l2c (Read 2201 times) previous topic - next topic

fandz

Sep 15, 2012, 10:32 am Last Edit: Jan 19, 2013, 03:24 pm by fandz Reason: 1
Bonjour,

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

barbudor

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 ?
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Artouste

bonjour
meme avis que barbudor
regarde là, il semble que ce soit ton afficheur avec un peu de doc et code
http://www.sainsmart.com/sainsmart-iic-i2c-twi-serial-2004-20x4-lcd-module-shield-for-arduino-uno-mega-r3.html

fandz

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

Code: [Select]
#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
Code: [Select]
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

Artouste




j'ai ce message d'erreur a la compilation
Code: [Select]
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


probleme de version d'IDE/lib ?


skywodd


probleme de version d'IDE/lib ?

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 ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

fandz

je confirme, l'ide est en 1.0.1

par contre, ca ne resout pas le probleme de changer en write

barbudor

quel est le nouveau message d'erreur ?
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

fandz

#8
Sep 15, 2012, 03:35 pm Last Edit: Sep 15, 2012, 03:36 pm by fandz Reason: 1
ca donne ca
Code: [Select]
/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)'



le loop donne ca avec les modifs
Code: [Select]
void loop()
{
   int val;
   float temp;
    val=analogRead(0);
   temp=val/4.092;
   val=(int)temp;//
   lcd.setCursor(9, 1);
   lcd.write(0x30+val/100);
   lcd.write(0x30+(val%100)/10);
   lcd.print('.');
   lcd.write(0x30+val%10);
   delay(100);
}


par contre, ne faut-il pas une librairie adapté a ma version d'ide

j'ai pris celle donnée dans le lien de Artouste

fandz

personne n'a d'idée

est-ce possible que ce soit le LCD qui soit défectueusement?

barbudor

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.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

fandz

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é
Code: [Select]
/*
** 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);
}

Go Up