#include <IRremote.h>
#include <LiquidCrystal.h>
unsigned long compteur=0;
unsigned long compteurbat = 0;
unsigned long compteurdegivr = 0;
int etatled;
int memoire=HIGH;
//int v4v = 3;
int ventilateur = 4;
int turbine = 6;
int compresseur = 5;
int Relay = 3;
int contactRelay;
//int led1_rouge = 4;
//int led_verte = 9;
float Tempconsigne =22.00;
unsigned long count=0;
int mode_chauffage;
int mode_deshumid;
int mode_clim;
const int sonde_ambianceMin = 0 ;
const int sonde_ambianceMax = 1;
int sonde_ambiance;// entree analogique en A0
#define PIN_RECEIVER 2 // Signal Pin of IR receiver
IRrecv receiver(PIN_RECEIVER);
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
int i=0,j=0,k=0,n=0;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(4, 0);
lcd.print("Attente");
lcd.setCursor(0, 1);
lcd.print("pression touche?");
receiver.enableIRIn(); // Start the receiver
pinMode(mode_chauffage, OUTPUT); // choix 2
pinMode(mode_deshumid , OUTPUT); // choix 1
pinMode(mode_clim, OUTPUT); // choix 3
pinMode(compresseur, OUTPUT);// Sortie relais compresseur
pinMode(turbine, OUTPUT);// Sortie turbine Int
pinMode(ventilateur, OUTPUT);// Sortie ventilateur Ext
pinMode(Relay, OUTPUT);// Sortie V4 Voies
}
void loop()
{
// Checks received an IR signal
if (receiver.decode()) {
translateIR();
receiver.resume(); // Receive the next value
}
}
/*void lcdPrint(char* text)
{
lcd.clear();
// lcd.setCursor(0, 0);
//lcd.print("Choix:");
lcd.setCursor(4, 0);
lcd.print(text);
// lcd.print(" code: ");
// lcd.print(receiver.decodedIRData.command);
}
*/
void translateIR()
{
lcd.clear();
// Takes command based on IR code received
switch (receiver.decodedIRData.command) {
case 162:
// lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(4, 0);
lcd.print("ON/OFF");//programme();
break;
case 226:
lcd.print("MENU");
break;
case 34:
lcd.print("TEST");
break;
case 2:
lcd.print("PLUS");
break;
case 194:
lcd.print("BACK");
break;
case 224:
lcd.print("PREV.");
break;
case 168:
lcd.setCursor(5, 0);
lcd.print("Relay");
i++;
int x=i%2;
if(x)
{
lcd.setCursor(6, 1);
lcd.print("ON ");
digitalWrite(Relay, HIGH);
fonction();
}
else
{
lcd.setCursor(6, 1);
lcd.print("OFF ");
digitalWrite(Relay, LOW);
}
break;
case 144:
lcd.print(" MODE DESHUMID");
break;
case 104:
lcd.print("num: 0");
break;
case 152:
lcd.print("MINUS");
break;
case 176:
lcd.print("key: C");
break;
case 48:
lcd.print("num: 1");
digitalWrite(mode_deshumid , HIGH);
digitalWrite(mode_deshumid , HIGH);
digitalWrite(mode_chauffage, LOW);
digitalWrite(mode_clim, LOW);
digitalWrite(turbine, HIGH);// Demarrage de la ventilation interieure
lcd.begin(16, 2);
lcd.setCursor(3, 0);
lcd.print("Turbine ");
lcd.setCursor(3, 1);
lcd.print("en marche");
delay(500);
break;
case 24:
lcd.print("num: 2");
break;
case 122:
lcd.print("num: 3");
break;
case 16:
lcd.print("num: 4");
break;
case 56:
lcd.print("num: 5");
break;
case 90:
lcd.print("num: 6");
break;
case 66:
lcd.print("num: 7");
break;
case 74:
lcd.print("num: 8");
break;
case 82:
lcd.print("num: 9");
break;
default:
lcd.clear();
lcd.print(receiver.decodedIRData.command);
lcd.print(" other button");
}
}
void fonction(){
/* Relay = analogRead(A1);
if ((Relay) == LOW){
digitalWrite(ventilateur, LOW);
digitalWrite(compresseur, LOW);
digitalWrite(turbine, LOW);
}
else if((Relay) == HIGH){
*/
sonde_ambiance = analogRead(A0);
sonde_ambiance = map(sonde_ambiance, sonde_ambianceMin, sonde_ambianceMax, 0, 1);
lcd.begin(16, 2);
lcd.setCursor(1, 1);
lcd.print("SYSTEME EN MARCHE...");
delay(500);
for(int x=0; x<21; x++) {
lcd.scrollDisplayLeft(); // scroll display left 16 times
delay(250);
}
if ((sonde_ambiance) > 1018 )
{
digitalWrite(compresseur, LOW);Serial.println("compresseur arrete");
delay(300);
Serial.print("Temperature OK");Serial.println("= ");Serial.println(sonde_ambiance);
delay(300);
digitalWrite(ventilateur, LOW);Serial.println("ventilateur arrete");
Serial.println("turbine en arret");
delay(200);
Serial.println(compteur);
Serial.println("Tempo avant arret turbine");
delay(250);
digitalWrite(turbine, LOW);
delay(200);
Serial.println("turbine arretee");
compteur=0;
while (compteur < 2) // Temps au d?finir
{
lcd.begin(16, 2);
lcd.setCursor(3, 0);
lcd.print("Temperature ");
lcd.setCursor(3, 1);
lcd.print("demandee Ok");
compteur++;
}
/*########################## PROTECTION SURCHAUFFE #############################################
if (sensorValue < 750)
{
digitalWrite(compresseur, LOW);delay(250);
digitalWrite(ventilateur, LOW);delay(25000);
digitalWrite(turbine, LOW);
}
##################################################################################################
*/
} // ********If sonde ambiance > 2018
/*
else if((sonde_ambiance) < 1)
{
Serial.print("Etat sonde= ");Serial.print(" ");Serial.println (sonde_ambiance);
//********************** DEGIVRAGE ****************************
//compteurdegivr = 0;
etatled = digitalRead(compresseur);
Serial.println(etatled);
if((etatled != memoire) && (etatled == LOW))
{
compteurdegivr++;
Serial.print("compteurdegivr");Serial.println(compteurdegivr);
}
if(compteurdegivr > 9){
digitalWrite(turbine, LOW);
delay(250);
digitalWrite(ventilateur, LOW);
delay(250);
digitalWrite(compresseur, LOW);
delay(250);
// digitalWrite(v4v, LOW);
compteur=0;
while (compteur < 95) // origine 19000
{
digitalWrite(compresseur, HIGH);
Serial.println("Degivrage......");
lcd.begin(16, 2);
lcd.setCursor(1, 1);
lcd.print("DEGIVRAGE...");
delay(500);
for(int x=0; x<21; x++) {
lcd.scrollDisplayLeft(); // scroll display left 16 times
delay(250);
}
compteur++;
Serial.println(compteur);
}
compteurdegivr=0;
digitalWrite(compresseur, LOW);
Serial.println("Fin degivrage......");
delay(35000);
} // ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ IF MONCOMPTEUR > 9 ¤¤¤¤¤¤¤¤¤¤¤¤¤¤$
//*************************** FIN DEGIVRAGE **********************
// digitalWrite(v4v, HIGH);
delay(5000);
digitalWrite(ventilateur, HIGH);
Serial.println("ventilateur en marche");
delay(200);
digitalWrite(compresseur, HIGH);// Demarrage compresseur
delay(200);
Serial.println("compresseur en marche");Serial.println(compresseur);
delay(100);//Temps origine=100
Serial.println(compteur);
delay(200);
Serial.print("Etat sonde = ");Serial.println(" "); Serial.println(sonde_ambiance);
compteur=0;
while (compteur <=10)
{
Serial.println("Attente demarrage turbine");
delay(200);
Serial.println(compteur);
delay(200);
Serial.println(sonde_ambiance);
compteur++;
}
digitalWrite(turbine, HIGH);// Demarrage de la ventilation interieure
Serial.println("turbine en marche");
delay(200);
Serial.print("Etat sonde= ");Serial.print(" ");Serial.println(sonde_ambiance);
lcd.begin(16, 2);
lcd.setCursor(3, 0);
lcd.print("Turbine ");
lcd.setCursor(3, 1);
lcd.print("en marche...");
} //********* if((sonde_ambiance) < 1 **************************
*/
// } // *********** else if(digitalRead(Relay) == LOW) **********************
}//************* end of fonction()