[Résolu] Afficheur LCD et I2C_LCD

Bonsoir

J'utilise actuellement un shield DFR LCD_Keypad sur une carte Arduino ATmega2560.
Je souhaite mettre en oeuvre un afficheur déporté du type shield I2C_LCD.

Pour tester ces fonctionnalités j'utilise le code suivant :

/*
   Affichage_LCDs.ino
   
   Afficchage "Hello word" en simultané sur LCD_Keypad et I2C_LCD
     - afficheur LCD_Keypad  DFRobot.com   
     - afficheur I2C_LCD à l'adresse 0x27 (39 Dec)
     
  Status sketch : NOK     
*/

// afficheur LCD_Keypad
#include <LiquidCrystal.h>
#include <DFR_Key.h>

// afficheur I2C
#include <Wire.h>                   // I2C
#include <LiquidCrystal_I2C.h>      // afficheur I2C

int tempo = 200;


// afficheur LCD_Keypad
//Pin assignments for DFRobot LCD Keypad Shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);



// afficheur I2C_LCD
// initialise afficheur I2C
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
   


   
void setup() {

  
  // afficheur LCD_Keypad
  lcd.begin(16, 2);                // initialize the LCD_Keypad
  

  
  // afficheur I2C
  lcd.init();                      // initialize the I2C_lcd
  
}


void loop() {   
  
  // affiche sur LCD Keypad
  lcd.clear();
  delay(tempo);
  lcd.setCursor(0, 0);
  lcd.print("Hello, world!");
  

  
  // affiche sur I2C_LCD
  lcd.clear();
  delay(tempo);
  lcd.backlight();
  lcd.print("Hello, world!");  
 
  
  delay(2000);
}

Ce programme est censé afficher le texte clignotant suivant "Hello, world!" .

En sélectionnant la partie de code propre à chaque afficheur, le fonctionnement de chaque afficheur est correct.

Par contre si je souhaite utiliser les 2 afficheurs simultanément, le compilateur affiche les messages d'erreur indiquant un conflit de bibliothèque.

C:\DOCUME~1\Pierre\LOCALS~1\Temp\build271406947852352415.tmp\Affichage_LCDs.cpp -o C:\DOCUME~1\Pierre\LOCALS~1\Temp\build271406947852352415.tmp\Affichage_LCDs.cpp.o 
Affichage_LCDs.ino:30:22: error: conflicting declaration 'LiquidCrystal_I2C lcd'
Affichage_LCDs.ino:24:15: error: 'lcd' has a previous declaration as 'LiquidCrystal lcd'
Affichage_LCDs.ino: In function 'void setup()':
Affichage_LCDs.ino:44:12: error: no matching function for call to 'LiquidCrystal::init()'
Affichage_LCDs.ino:44:12: note: candidate is:
In file included from Affichage_LCDs.ino:12:0:
C:\Program Files\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:60:8: note: void LiquidCrystal::init(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
   void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
        ^
C:\Program Files\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.h:60:8: note:   candidate expects 12 arguments, 0 provided
Affichage_LCDs.ino: In function 'void loop()':
Affichage_LCDs.ino:62:7: error: 'class LiquidCrystal' has no member named 'backlight'
Erreur lors de la compilation.

Je ne sais pas comment traiter ce problème, d'où mes questions :

1°) Peut-on utiliser un LCD parallele avec un LCD I2C ?
2°) Les bibliothèques utilisées sont-elles bien les bonnes ?
3°) Une personne aurait-elle une idée pour résoudre ce problème

D'avance Merci pour votre support
Pierre

slt je pense que tu déclare tes deux écrans avec le même nom "lcd"

fait plutôt :

LiquidCrystal lcd1(8, 9, 4, 5, 6, 7);  // pour l'écran fixe

LiquidCrystal_I2C lcd2(0x27,16,2); // l'écran à distance

puis ensuite utiliser lcd1 ou lcd2 pour chaque écrans à afficher et à initialiser ...

Bonjour

Ok c'est bien cela le pb.
J'ai corrigé et c'est OK

Merci pour ton aide. :slight_smile: :slight_smile:

Tu peux donc passer ce post en [RESOLU] non? :slight_smile:

Post Resolu