Wednesday

FYP2 WEEK 9

 Activity: Complete the coding for FYP 2

Objective: 

  • To complete the DHT22 coding for the project
  • To test the coding and troubleshoot the program if there is any problem

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

#define DHTPIN 12
#define DHTTYPE DHT22

LiquidCrystal_I2C lcd (0x27, 20, 4);      //I2C address 0x27, 20 column and 4 row
DHT dht(DHTPIN,DHTTYPE);

int temp_sensor_pin = A0;                 //The output pin of LM35
int ref_pin = A1;
int fan_pin = 9;
int waterpump_pin = 10; 
int heater_pin = 5;
int red_led = 6;
int green_led = 7;
int blue_led = 8;
int buzzer_pin = 11;
int fan_speed;
int ref_value_min = 0;
int ref_value_max = 50;
int max_temp_limit;
int min_temp_limit;


void setup ()
{
  Serial.begin(9600);
  dht.begin();
  lcd.init();
  lcd.backlight();
  lcd.setCursor(6,0);
  lcd.print("AUTOMATIC");
  lcd.setCursor(0,1);
  lcd.print("COOLING ROOF SYSTEM");
  lcd.setCursor(10,2);
  lcd.print("BY");
  lcd.setCursor(8,3);
  lcd.print("EIZLAN");
  delay(1500);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Ref.Temp:");
  lcd.setCursor(0,1);
  lcd.print("Cur.Temp:");
  pinMode(red_led,OUTPUT);
  pinMode(green_led,OUTPUT);
  pinMode(blue_led,OUTPUT);
  analogWrite(fan_pin, fan_speed);
  analogWrite(waterpump_pin, fan_speed);
}

void loop()
{
  int ref_value;
  float temperature = dht.readTemperature();
  ref_value = analogRead(ref_pin);
  ref_value = map(ref_value, 0, 1023, 0, 100);
  max_temp_limit = ref_value+5;
  min_temp_limit = ref_value-5;
  lcd.setCursor(10,0);
  lcd.print(ref_value);                             //Print refference temperature
  lcd.print(" ");
  lcd.print((char)223);   
  lcd.print("C");
  lcd.setCursor(10,1);
  lcd.print(temperature);                           //Print temperature
  lcd.print(" ");
  lcd.print((char)223);
  lcd.print("C");
  Serial.print("Temperature: ");
  Serial.println(temperature);
  if (temperature > max_temp_limit)
  {
    lcd.setCursor(0,2);
    lcd.print("HIGH TEMPERATURE");
    lcd.setCursor(0,3);
    lcd.print("FAN & WP TURN ON");

    if(fan_speed<150) fan_speed +=20;
    analogWrite(fan_pin, fan_speed);
    analogWrite(waterpump_pin, fan_speed);
    digitalWrite(heater_pin, LOW);
    digitalWrite(red_led,HIGH);
    delay(100);
    digitalWrite(red_led,LOW);
    digitalWrite(green_led,LOW);
    digitalWrite(blue_led,LOW);
    tone(buzzer_pin,1245,1000);
  }

  else if (temperature < min_temp_limit)
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Ref.Temp:");
    lcd.setCursor(0,1);
    lcd.print("Cur.Temp:");
    lcd.setCursor(10,0);
    lcd.print(ref_value);                             //Print refference temperature
    lcd.print(" ");
    lcd.print((char)223);   
    lcd.print("C");
    lcd.setCursor(10,1);
    lcd.print(temperature);                           //Print temperature
    lcd.print(" ");
    lcd.print((char)223);
    lcd.print("C");

    lcd.setCursor(0,2);
    lcd.print("LOW TEMPERATURE");
    lcd.setCursor(0,3);
    lcd.print("HEATER TURN ON");

   if(fan_speed<150) fan_speed +=20;
    digitalWrite(fan_pin, LOW);
    digitalWrite(waterpump_pin, LOW);
    analogWrite(heater_pin, fan_speed);
    digitalWrite(red_led,LOW);
    digitalWrite(green_led,LOW);
    digitalWrite(blue_led,HIGH);
  }

  else if((temperature <max_temp_limit) && (temperature > min_temp_limit))
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Ref.Temp:");
    lcd.setCursor(0,1);
    lcd.print("Cur.Temp:");
    lcd.setCursor(10,0);
    lcd.print(ref_value);                             //Print refference temperature
    lcd.print(" ");
    lcd.print((char)223);   
    lcd.print("C");
    lcd.setCursor(10,1);
    lcd.print(temperature);                           //Print temperature
    lcd.print(" ");
    lcd.print((char)223);
    lcd.print("C");

    lcd.setCursor(0,2);
    lcd.print("TEMPERATURE IS");
    lcd.setCursor(0,3);
    lcd.print("WITHIN LIMIT");
    
    if(fan_speed<150) fan_speed +=20;
    analogWrite(fan_pin, fan_speed); 
    digitalWrite(waterpump_pin, LOW);
    digitalWrite(heater_pin, LOW);
    digitalWrite(red_led,LOW);
    digitalWrite(green_led,HIGH);
    digitalWrite(blue_led,LOW);
    }
  delay(1000);                            //1s delay 
}

No comments:

Post a Comment