/* Created by Mário Cordeiro, you can see the presentation in video in the Youtube MA2COR channel Tecnologies
* https://www.youtube.com/channel/UC1UEzlX6C7bHL-PeAGvP-Kw
* This sketch controls a dehumidifier, the ON, OFF , radiator temperature and water tank
*/
#define RelayFAN 2 //Controls FAN
#define RelayCOMP 3 //Controls the compressor
#define Temperature A0 //measure the temperature in the compressor radiator by using the thermocouple from the dehumidifier
int value = 0;
int ledUnfreeze = 8; // unfreeze light indicator when the thermocouple read low temperature ice formation
int ledON = 4; // ON - dehumidifier ON
int ledTank = 5; // warning light of full or out Water tank
int inputPin = 6; // Check if water tank is full or out
int Buzzer = 7; //Buzzer ON/OFF/Water tank full or out
int flagH = 0; //To run once
int flagM = 0;
int flagL = 0;
void setup()
{
pinMode(RelayFAN,OUTPUT);
digitalWrite(RelayFAN,LOW);
pinMode(RelayCOMP,OUTPUT);
digitalWrite(RelayCOMP,LOW);
pinMode(Buzzer, OUTPUT);
digitalWrite(Buzzer, LOW);
pinMode(inputPin, INPUT);
digitalWrite(inputPin, LOW);
pinMode(ledON, OUTPUT);
pinMode(ledTank, OUTPUT);
pinMode(ledUnfreeze, OUTPUT);
Serial.begin(115200);
delay(10);
}
void loop() {
value = digitalRead(inputPin); // Check if tank is full or out (3V3- Digital 1 HIGH, 0V - digital 0 LOW)
Serial.print("Tank: ");
Serial.println(value);
delay(200);
while (value == 0){
digitalWrite(ledON, LOW);
digitalWrite(ledUnfreeze, LOW);
digitalWrite(RelayFAN,LOW);
digitalWrite(RelayCOMP,LOW);
digitalWrite(Buzzer, HIGH);
tone(Buzzer, 1800, 500);
delay(500);
noTone(Buzzer);
// if the LED is off turn it on and vice-versa:
if (digitalRead(ledTank) == LOW) {
digitalWrite(ledTank, HIGH);
delay(500);
} else {
digitalWrite(ledTank, LOW);
delay(500);
}
value = digitalRead(inputPin); // Check inside de loop (3V3)
}
int Temp = analogRead(Temperature); // Read de voltage in A0 and convert it to digital 0-1023
Serial.print("ConvertedTemp: ");//I made some tests with the thermocouple in water at 0 degrees, 10, 20, 30, .... 80º and made conversion in 0-1023
Serial.println(Temp);
if ((Temp > 700) && (flagH == 0)){ //Prevent ice formation, ICE in evaporator, Unfreeze process
digitalWrite(RelayCOMP,LOW);
delay(100);
digitalWrite(ledUnfreeze, HIGH);
delay(100);
digitalWrite(RelayFAN,HIGH);
digitalWrite(ledTank, LOW);
tone(Buzzer, 1800, 2000);
delay(1000);
noTone(Buzzer);
flagH = 1;
flagM = 0;
flagL = 0;noTone(Buzzer);
}
if ((Temp > 200) && (Temp < 701) && (flagM == 0)){ //Normal working
digitalWrite(RelayFAN,HIGH);
digitalWrite(RelayCOMP,HIGH);
delay(100);
digitalWrite(ledUnfreeze, LOW);
delay(100);
digitalWrite(RelayCOMP,HIGH);
digitalWrite(ledTank, LOW);
digitalWrite(ledON, HIGH);
tone(Buzzer, 1800, 1000);
delay(1000);
noTone(Buzzer);
flagH = 0;
flagM = 1;
flagL = 0;
}
if ((Temp < 201) && (flagL == 0)){ // High temperature in evaporator. Prevents damage
digitalWrite(RelayCOMP,LOW);
delay(100);
digitalWrite(ledUnfreeze, HIGH);
delay(100);
digitalWrite(RelayFAN,HIGH);
digitalWrite(ledTank, LOW);
digitalWrite(ledON, LOW);
tone(Buzzer, 1800, 1000);
delay(1000);
tone(Buzzer, 1800, 1000);
noTone(Buzzer);
flagH = 0;
flagM = 0;
flagL = 1;
}
}
Comments