incompatibilité entre RTClib et I2C_LCD

bonjour .

je suis en train de mettre en place un systeme d’arrosage, avec mesure temp et humid … .

j’ai un soucis pour installer RTClib pour l’ajouter au reste de mon programme qui tourne correctement.

qd je mets la ligne " #include <RTClib.h> " , j’ai une serie de messages d’erreurs qui s’affichent pendant la compilation qui ne se finit pas .

je ne comprends pas pourquoi . j’ai essayé de changer l’adresse de l’ecran, car mon programme fonctionnait avec un ecran plus simple, en 4lignes de 20 caractères. mais cela fait pareil .

j’utilise la RTC DS3231
ecran LCD 128*64 pixels
arduino nano origine

donc , quand je dé-commente la ligne 16, je suis en panne … .

merci pour votre aide.

/*    je n'arrive pas a compilier si j'enlève // devant la ligne 20 ... 
 *  j'ai besoin de ce rtc pour la commande d'electrovanne a heures fixes .. 
 * 
 *
 */
//For details of the function useage, please refer to "I2C_LCD User Manual". 
//You can download the "I2C_LCD User Manual" from I2C_LCD WIKI page: http://www.seeedstudio.com/wiki/I2C_LCD

//The usage of LCD.print() is same to the Serial.print().
//For more informations about print, please visit: http://www.arduino.cc/en/Serial/Print

#include <Wire.h>
#include <I2C_LCD.h>
#include "DHT.h"
#include <OneWire.h>
//#include <RTClib.h>

I2C_LCD LCD;
uint8_t I2C_LCD_ADDRESS = 0x69; //Device address configuration, the default value is 0x51.

#define DHTPIN A0      // what pin we're connected to
#define DHTTYPE DHT11 // DHT 11 ou 22
const byte BROCHE_ONEWIRE = 7;
DHT dht(DHTPIN, DHTTYPE);

uint8_t StartTime;
int OneSecond = 1000 ;

int temps;

/* Broche du bus 1-Wire */

/* Adresses des capteurs de température */
const byte SENSOR_ADDRESS_1[] = { 0x28, 0xFF, 0x03, 0x81, 0xA4, 0x16, 0x04, 0x1F }; // capteur 1
const byte SENSOR_ADDRESS_2[] = { 0x28, 0xFF, 0x2B, 0xB4, 0xA4, 0x16, 0x05, 0x4E }; // capteur 2
const byte SENSOR_ADDRESS_3[] = { 0x28, 0xFF, 0x82, 0xB7, 0xA4, 0x16, 0x05, 0x06 }; // capteur 3
const byte SENSOR_ADDRESS_4[] = { 0x28, 0xFF, 0x54, 0xB0, 0xA4, 0x16, 0x04, 0x1C }; // capteur 4
const byte SENSOR_ADDRESS_5[] = { 0x28, 0xFF, 0x40, 0x7E, 0xA4, 0x16, 0x04, 0x53 }; // CAPTEUR 5

/* Création de l'objet OneWire pour manipuler le bus 1-Wire */
OneWire ds(BROCHE_ONEWIRE);

 
/**
 * Fonction de démarrage de la prise de mesure de la température via un capteur DS18B20.
 */
void startTemperatureMeasure(const byte addr[]) 
{
  // addr[] : Adresse du module 1-Wire détecté
  
  /* Reset le bus 1-Wire et sélectionne le capteur */
  ds.reset();
  ds.select(addr);
  
  /* Lance une prise de mesure de température et attend la fin de la mesure */
  ds.write(0x44, 1);
}

/*** Fonction de récupération de la prise de mesure de la température via un capteur DS18B20.
 */
float readTemperatureMeasure(const byte addr[]) 
{
  byte data[9];
  // data[] : Données lues depuis le scratchpad
  // addr[] : Adresse du module 1-Wire détecté
 
  /* Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad */
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
 
 /* Lecture du scratchpad */
  for (byte i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
   
  /* Calcul de la température en degré Celsius */
  return ((data[1] << 8) | data[0]) * 0.0625; 
}

            /***********************************************/
           /**************        void setup(void)         ***********/

void setup()          
{
    Wire.begin();         //I2C controller initialization.
    LCD.CleanAll(WHITE);    //Clean the screen with black or white.
    LCD.WorkingModeConf(ON, ON, WM_CharMode);
    LCD.BacklightConf(LOAD_TO_RAM, 20);
    
    LCD.FontModeConf(Font_6x8, FM_ANL_AAA, BLACK_BAC);
    LCD.DispStringAt("0 2 4 6 8 0 2 4 6 8 0", 0, 0); 
    LCD.FontModeConf(Font_6x8, FM_ANL_AAA, BLACK_BAC);
    LCD.FontModeConf(Font_6x8, FM_ANL_AAA, BLACK_BAC);
    LCD.DispStringAt("Plantes 04 ", 45, 32); 
    delay(1500); 
    LCD.CleanAll(WHITE);    //Clean the screen with black or white.

    Serial.begin(9600); 
    Serial.println("Enable Plantes 04 sketch . ");

    dht.begin();
    temps = millis();
}

            /********************************************************/
           /**************            void loop (void)         ***********/

void loop()
{
    float humidity    = dht.readHumidity();
    float temperature = dht.readTemperature();
    
    float Temperature[5]; // One Wire 
   
  /* Lit les températures des cinq capteurs One Wire */
  startTemperatureMeasure(SENSOR_ADDRESS_1);
  startTemperatureMeasure(SENSOR_ADDRESS_2);
  startTemperatureMeasure(SENSOR_ADDRESS_3);
  startTemperatureMeasure(SENSOR_ADDRESS_4);
  startTemperatureMeasure(SENSOR_ADDRESS_5);
  delay(750);          // temps de lecture .
  Temperature[0] = readTemperatureMeasure(SENSOR_ADDRESS_1);
  Temperature[1] = readTemperatureMeasure(SENSOR_ADDRESS_2);
  Temperature[2] = readTemperatureMeasure(SENSOR_ADDRESS_3);
  Temperature[3] = readTemperatureMeasure(SENSOR_ADDRESS_4);
  Temperature[4] = readTemperatureMeasure(SENSOR_ADDRESS_5);
  
         
              
                LCD.FontModeConf(Font_6x8, FM_ANL_AAA, BLACK_BAC); 

                //Set the start coordinate.
                LCD.CharGotoXY(0,0);
                //Print string on I2C_LCD.
                LCD.print("Temperature ");
                //Print float on I2C_LCD.
                LCD.print(((float)((int)(temperature*10))/10),0);
                LCD.println("C");  
                LCD.print(" Humidity : ");
                //Print float on I2C_LCD.
                LCD.print(((float)((int)(humidity*10))/10),0);
                
                LCD.CharGotoXY(4,17);
               LCD.println("Températures : ");
           LCD.print("Int:");
           LCD.print(Temperature[4], 0);
           LCD.print(F("C. A:"));
           LCD.print(Temperature[1], 0);
           LCD.print(F("C. B:"));
           LCD.print(Temperature[2],0);
           LCD.print(F("C. C:"));
           LCD.print(Temperature[3],0);
           LCD.println('C');

            
                //Print the number of seconds since reset:
                //LCD.FontModeConf(Font_6x8, FM_ANL_AAA, BLACK_BAC); 

                LCD.CharGotoXY(10,52);
                LCD.print("police 6x8");
        
                LCD.CharGotoXY(106,56);
                //Print the number of seconds since reset:
                LCD.print(millis()/1000,DEC);
                //StartTime = millis()/OneSecond;
      
   }

Bonjour,

Si tu ne donnes pas la liste des messages d'erreurs impossible de t'aider.

Bonjour,

Les deux librairies I2C_LCD et RTClib.h définissent toutes les deux ON et OFF (en plus différemment).
Je ne vois pas d'autre solution que de modifier une des deux librairies.

bonjour .

merci bien.

effectivement ,en regardant les messages d’erreur, il y avait redefinition de OFF, et dans la librairie du DS3231, j’ai supprimé les lignes correspondantes aux DS1307 que je n’utilise .

ça fonctionne maintenant, avec l’afficheur que j’avais envie d’utiliser .