/*
Contrôle de la température :
Fixation d'une consigne entre 10 et 25°C
Activation chaud ou clim pour maintenir à temp
Activation alarme + arret de la turbine si temp dépasse 30°
Plage de variation de la temp à +ou- 20% par rapport à la consigne
*/
//envoyer consigne avec potentiometre
//visualiser temp avec led RGB bleu froid, vert OK, orange chaud, rouge alerte !
//simuler avec autre potentiometre capteur de temp
//+ activation relais...
const int potConsigne = A1;
const int relaisChaud = 12;
const int relaisFroid = 13;
int consigneTemp = 20;
int reelTemp = 20;
int memTemp = 0;
void setup() {
pinMode(relaisChaud, OUTPUT);
pinMode(relaisFroid, OUTPUT);
Serial.begin(9600);
}
void loop() {
//Lire sur le potentiomètre
consigneTemp = analogRead(potConsigne);
consigneTemp = map(consigneTemp, 0, 1023, 5, 35);
//Asservissement de la température
if (memTemp == 1) {
if (reelTemp < consigneTemp) {
reelTemp++;
digitalWrite(relaisChaud, HIGH);
digitalWrite(relaisFroid, LOW);
}
if (reelTemp > consigneTemp) {
reelTemp--;
digitalWrite(relaisChaud, LOW);
digitalWrite(relaisFroid, HIGH);
}
}
if (reelTemp == consigneTemp ) {
digitalWrite(relaisChaud, LOW);
digitalWrite(relaisFroid, LOW);
memTemp = 0;
}
if (reelTemp < (consigneTemp - consigneTemp * 0.2)) {
memTemp = 1;
}
if (reelTemp > (consigneTemp + consigneTemp * 0.2)) {
memTemp = 1;
}
if (reelTemp > 30) {
//ALARME + Arret turbine
}
//Afficher dans le moniteur série
Serial.print("Consigne : ");
Serial.print(consigneTemp);
Serial.print("°C");
Serial.print(" | Temp réelle : ");
Serial.print(reelTemp);
Serial.println("°C");
delay(500);
}Chaud
Froid