#include <IRremote.h> //Inclure Bibliotheque IrRemote
#include <IRremoteInt.h> //Inclure Bibliotheque IrRemoteInt
#include <LiquidCrystal_I2C.h> //Inclure Bibliotheque de l'ecran i2c
#include <SimpleDHT.h> //Inclure Bibliotheque DHT
int relais1 = 7; //Pin du relais 1
int relais2 = 4; //Pin du relais 2
int receptionIr = 11; //Pin du signal du récepteur Infrarouge
int etat = 0; //L'état des relais (0 pour éteints)
int pinDHT11 = 2; //Pin du module DHT
byte temperature = 0; //
byte humidite = 0; //
int err = SimpleDHTErrSuccess; //
SimpleDHT11 dht11; //
LiquidCrystal_I2C lcd(0x27,16,2); //Déclare l'adresse de l'écran"0x27" et les dimensions de l'écran "16x2"
IRrecv irrecv(receptionIr); //Initialisation de la réception du récepteur infrarouge
decode_results resultat; //Stock le code IR reçus dans resultat
void setup()
{
Serial.begin(9600); //Initialisation du port serie
irrecv.enableIRIn(); //Activation de la réception IR
pinMode(relais1, OUTPUT); //Declaration de relais 1 en sortie
pinMode(relais2, OUTPUT); //Declaration de relais 2 en sortie
etat=0; //Etat indique si le relais est éteint (etat=0) ou si elle est allumé (etat=1)
lcd.init(); //Initialisation de l'écran
lcd.backlight(); //Active le rètroéclairage
lcd.setCursor(0,0); //Demande d'écriture ligne 1, caractere 0
lcd.print("Initialisation"); //Ecriture écran
lcd.setCursor(0,1); //Demande d'écriture ligne 2, caractere 0
lcd.print("En cours..."); //Ecriture écran
delay(1000); //Attente de 1 seconde
lcd.clear(); //Efface l'écran
lcd.setCursor(0,0); //Demande d'écriture ligne 1, caractere 0
lcd.print("LE SYSTEME EST"); //Ecriture écran
lcd.setCursor(0,1); //Demande d'écriture ligne 2, caractere 0
lcd.print("OPERATIONNELLE"); //Ecriture écran
delay(1000); //Attente de 1 seconde
lcd.clear(); //Effacer l'écran
}
void loop()
{ if (irrecv.decode(&resultat)) //Si il y a reception d'un code qui est stocké dans resulat
/* ------------------------------------CONFIGURATION TOUCHE ON/OFF--------------------------------------------------------------------*/
{
if (resultat.value==0xFFA25D) //Si le code reçu c'est 0xFFA25D (qui est égale au bouton on/off de ma télécommande)
{ //L'Arduino vas basculer d'une position à une autre
if(etat==1) //Si l'etat=1
{
digitalWrite(relais2,LOW); //Le relais 2 n'est plus alimenté
etat=0; //L'etat est maintenant à 0
digitalWrite(relais1,LOW); //Le relais 1 n'est plus alimenté
etat=0; //L'etat est maintenant à 0
lcd.clear(); //Effacer l'écran
lcd.setCursor(0,0); //Demande d'écriture ligne 1, caractere 1
lcd.print("TOUS LES RELAIS");//Ecriture écran
lcd.setCursor(0,1); //Demande d'écriture ligne 2, caractere 1
lcd.print("Etat: INACTIFS"); //Ecriture écran
} //Fin du if
else if(etat==0) //Sinon, si l'etat=0
{
digitalWrite(relais2,HIGH); //Le relais 2 est alimenté
etat=1; //L'etat est maintenant à 1
digitalWrite(relais1,HIGH); //Le relais 1 est alimenté
etat=1; //L'etat est maintenant à 1
lcd.clear(); //Effacer l'écran
lcd.setCursor(0,0); //Demande d'écriture ligne 1, caractere 1
lcd.print("TOUS LES RELAIS"); //Ecriture écran
lcd.setCursor(0,1); //Demande d'écriture ligne 2, caractere 1
lcd.print("Etat: ACTIFS"); //Ecriture écran
} //Fin du else if
} //Fin du if
irrecv.resume(); //L'IR se prépare à recevoir le prochain code//CONFIGURATION TOUCHE 1
/* ------------------------------------CONFIGURATION TOUCHE 1--------------------------------------------------------------------*/
if (resultat.value==0xFF30CF) //Si le code reçu c'est 0xFF30CF (qui est égale au bouton 1 de ma télécommande)
{ //L'Arduino vas basculer d'une position à une autre
if(etat==0) //Si l'etat=0
{
digitalWrite(relais1,HIGH); //Le relais 1 est alimenté
etat=1; //L'etat est maintenant à 1
lcd.clear(); //Effacer l'écran
lcd.setCursor(0,0); //Demande d'écriture ligne 1, caractere 1
lcd.print("RELAIS 1"); //Ecriture écran
lcd.setCursor(0,1); //Demande d'écriture ligne 2, caractere 1
lcd.print("Etat: ACTIF"); //Ecriture écran
} //Fin du if
else if(etat==1) //Sinon, si l'etat=1
{
digitalWrite(relais1,LOW); //Le relais 1 n'est plus alimenté
etat=0; //L'etat est maintenant à 0
lcd.clear(); //Effacer l'écran
lcd.setCursor(0,0); //Demande d'écriture ligne 1, caractere 1
lcd.print("RELAIS 1"); //Ecriture écran
lcd.setCursor(0,1); //Demande d'écriture ligne 2, caractere 1
lcd.print("Etat: INACTIF"); //Ecriture écran
} //Fin du else if
} //Fin du if
irrecv.resume(); //L'IR se prépare à recevoir le prochain code
/* ------------------------------------CONFIGURATION TOUCHE 2--------------------------------------------------------------------*/
if (resultat.value==0xFF18E7) //Si le code reçu c'est 0xFF30CF (qui est égale au bouton 2 de ma télécommande)
{ //L'Arduino vas basculer d'une position à une autre
if(etat==0) //Si l'etat=0
{
digitalWrite(relais2,HIGH); //Le relais 2 est alimenté
etat=1; //L'etat est maintenant à 1
lcd.clear(); //Effacer l'écran
lcd.setCursor(0,0); //Demande d'écriture ligne 1, caractere 1
lcd.print("RELAIS 2"); //Ecriture écran
lcd.setCursor(0,1); //Demande d'écriture ligne 2, caractere 1
lcd.print("Etat: ACTIF"); //Ecriture écran
} //Fin du if
else if(etat==1) //Sinon, si l'etat=1
{
digitalWrite(relais2,LOW); //Le relais 2 n'est plus alimenté
etat=0; //L'etat est maintenant à 0
lcd.clear(); //Effacer l'écran
lcd.setCursor(0,0); //Demande d'écriture ligne 1, caractere 1
lcd.print("RELAIS 2"); //Ecriture écran
lcd.setCursor(0,1); //Demande d'écriture ligne 2, caractere 1
lcd.print("Etat: INACTIF"); //Ecriture écran
} //Fin du else if
} //Fin du if
irrecv.resume(); //L'IR se prépare à recevoir le prochain code
/* ------------------------------------CONFIGURATION TOUCHE 3--------------------------------------------------------------------*/
if (resultat.value==0xFF7A85) //Si le code reçu c'est 0xFF30CF (qui est égale au bouton 3 de ma télécommande)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temperature: ");
lcd.print((int)temperature);
lcd.setCursor(0,1);
lcd.print("Humidite(%): ");
lcd.print((int)humidite);
delay(400);
}
if ((err = dht11.read(pinDHT11, &temperature, &humidite, NULL)) != SimpleDHTErrSuccess)
{
Serial.print("No reading , err=");
Serial.println(err);
delay(400);
return;
}
Serial.print("Mesures: ");
Serial.print((int)temperature); Serial.print(" Celcius, ");
Serial.print((int)humidite); Serial.println(" %");
}
} //Fin boucle