Help coding for temperature and humidity controller !

Hello everyone,

Dear J-M-L thank you for your help, the errors have diminished by following your advice but persists,

#include <Wire.h>  
#include <DFR_Key.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>

const byte humidityRelay = 18; 
const byte heaterRelay = 19;     
const byte DHTPIN = 2;  
const byte nbColumns = 20; // Essai pour voir en 20 et en 16
const byte nbLines   = 2;            

LiquidCrystal_I2C lcd( 0x27, nbColumns, nbLines);  

int temp = 12;
int hum = 80;  
int readkey;
unsigned long lastmillis;
long int hours;
long int minutes;   
long int seconds;

char l2c1;
char l2c2;
char l2c3;


DHT dht (DHTPIN, DHT22);  //  Type de capteur DHT22 (AM2023)


DFR_Key keypad(0); 

int localKey = 0;  
int lcd_key = 0;
int adc_key_in = 0;

const byte btnRIGHT = 0;  
const byte btnUP = 1;     
const byte btnDOWN = 2;   
const byte btnLEFT = 3;   
const byte btnSELECT = 4; 
const byte btnNONE = 5;   

int read_LCD_buttons() 
{
  adc_key_in = analogRead(0);
  if (adc_key_in > 1000) return btnNONE;
  if (adc_key_in < 50)   return btnRIGHT;
  if (adc_key_in < 150)  return btnUP;
  if (adc_key_in < 300)  return btnDOWN;
  if (adc_key_in < 460)  return btnLEFT;
  if (adc_key_in < 690)  return btnSELECT;
}

void setup() 

{
  pinMode(humidityRelay, OUTPUT);
  pinMode(heaterRelay, OUTPUT);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(F("Keith control"));  // le macro F () dans tous les Print () du Lcd ou de Serial
  lcd.setCursor(0, 1);
  lcd.print(F("Select instr"));  // 
  delay(2500);
 Serial.begin(115200);  // Mettre le port serie sur 115200 
  dht.begin();
  delay(1000);
  lcd.clear();

  
  keypad.setRate(10);
  digitalWrite(humidityRelay, HIGH);  
  digitalWrite(heaterRelay, HIGH);  

}

void loop() 

{
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(t) || isnan(h))
{  
                             
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(F("Capteur N/C!!"));  // Macro F ()
    delay(10000);
  } 
else 
 {
    lcd_key = read_LCD_buttons();  
    switch (lcd_key) 
 {
      case btnLEFT:
        {
          temp = temp + 1; 
          break;
        }
      case btnRIGHT:
        {
          temp = temp - 1;  
          break;
        }
      case btnUP:
        {
          hum = hum + 1;  
          break;
        }
      case btnDOWN:
        {
          hum = hum - 1;  
          break;
        }
      case btnSELECT:   
        {
          lcd.begin(16, 2);
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print(F("Hum Up/Down +-1%"));  // Macro F () 
          lcd.setCursor(0, 1);
          lcd.print(F("Temp L/R +-1"));   
          lcd.print((char)223);  
          lcd.print(F("C"));  
          delay (5000);
          break;
        }
    } 
    lcd.setCursor(0, 0);     
    lcd.print("Hum: ");  // Macro F () pour tous les lcd.print
    lcd.print(h);
    lcd.print(F("%"));
    lcd.print(F("("));
    lcd.print(hum);
    lcd.print(F("%)"));
    lcd.setCursor(0, 1);
    lcd.print("Tem: ");
    lcd.print(t);
    lcd.print((char)223);  
    lcd.print(F("("));
    lcd.print(temp);
    lcd.print((char)223);
    lcd.print(F(")"));

    int H = 70 + 10;  
   
    if (h < 85) digitalWrite(humidityRelay, LOW);  
    
    else if (h >= H) digitalWrite(humidityRelay, HIGH);  
   
    int T = 12 + 2 ; 
    
    if (t < 12 )
      
    digitalWrite(heaterRelay, LOW);  
    
     else if (t >= T)
     
    digitalWrite(heaterRelay, HIGH);  
  }

}

I believe that this mission will be impossible to achieve for me at the moment, as I am only amateur. I do not give up but I will work in stages to understand what I do and what happens, thank you for your support J-M-L. If I hurt you, I beg your pardon, I apologize for disturbing you, you are here to help us, I thank you again for all your support. I wish you happiness and please, forgive this gallerian. With respect, cordially.

  • Code Error :
 Arduino : 1.8.4 (Windows 7), Carte : "Arduino/Genuino Uno"


C:\Users\\AppData\Local\Temp\ccTel6UO.ltrans0.ltrans.o: In function `__static_initialization_and_destruction_0':

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:13: undefined reference to `LiquidCrystal_I2C::LiquidCrystal_I2C(unsigned char, unsigned char, unsigned char)'

C:\Users\\AppData\Local\Temp\ccTel6UO.ltrans0.ltrans.o: In function `setup':

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:60: undefined reference to `LiquidCrystal_I2C::begin(unsigned char, unsigned char, unsigned char)'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:61: undefined reference to `LiquidCrystal_I2C::clear()'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:62: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:64: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:70: undefined reference to `LiquidCrystal_I2C::clear()'

C:\Users\\AppData\Local\Temp\ccTel6UO.ltrans0.ltrans.o: In function `loop':

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:88: undefined reference to `LiquidCrystal_I2C::clear()'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:89: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:120: undefined reference to `LiquidCrystal_I2C::begin(unsigned char, unsigned char, unsigned char)'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:121: undefined reference to `LiquidCrystal_I2C::clear()'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:122: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:124: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:132: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'

C:\Users\\Documents\Arduino\Code_Modif_31oct/Code_Modif_31oct.ino:139: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'

collect2.exe: error: ld returned 1 exit status

Utilisation de la bibliothèque Wire version 1.0 dans le dossier: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 
Utilisation de la bibliothèque DFR_Key prise dans le dossier : C:\Users\\Documents\Arduino\libraries\DFR_Key (legacy)
Utilisation de la bibliothèque DHT_sensor_library version 1.2.3 dans le dossier: C:\Users\\Documents\Arduino\libraries\DHT_sensor_library 
Utilisation de la bibliothèque LiquidCrystal_I2C version 1.1 dans le dossier: C:\Users\\Documents\Arduino\libraries\LiquidCrystal_I2C 
exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno