Advertisement
Ayush1325

Simple Solution

Feb 1st, 2021 (edited)
923
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Adafruit_Sensor.h>
  2. #include <DHT.h>
  3. #include <DHT_U.h>
  4. #include <LiquidCrystal.h>
  5. #include <Servo.h>
  6.  
  7. #define PIR_PIN 4
  8. #define DHTPIN 1
  9. #define DHTTYPE DHT22
  10. DHT_Unified dht(DHTPIN, DHTTYPE);
  11.  
  12. #define FAN_PIN 10
  13. #define LED_PIN 11
  14. #define SERVO_PIN 9
  15.  
  16. LiquidCrystal lcd(12, 13, 4, 5, 6, 7);
  17. Servo door;
  18.  
  19. void setup() {
  20.   pinMode(DHTPIN, INPUT);
  21.   pinMode(PIR_PIN, INPUT);
  22.   pinMode(FAN_PIN, OUTPUT);
  23.   pinMode(LED_PIN, OUTPUT);
  24.  
  25.   analogWrite(FAN_PIN, 0);
  26.   analogWrite(LED_PIN, 0);
  27.  
  28.   dht.begin();
  29.   lcd.begin(16, 2);
  30.  
  31.   door.attach(SERVO_PIN);
  32.   closeDoor();
  33.  
  34.   attachInterrupt(digitalPinToInterrupt(PIR_PIN), openDoor, RISING);
  35.   attachInterrupt(digitalPinToInterrupt(PIR_PIN), closeDoor, FALLING);
  36. }
  37.  
  38. void loop() {
  39.   maintainTemp();
  40.   delay(5000);
  41. }
  42.  
  43. void maintainTemp() {
  44.   float temperature = getTemp();
  45.   int humidity = getHumidity();
  46.   printToLcd(temperature, humidity);
  47.   float temp = constrain(temperature - 5, -3, 3);
  48.   int analog = map(abs(temp), 0, 3, 0, 255);
  49.   if (temp > 0) {
  50.       analogWrite(FAN_PIN, analog);
  51.       analogWrite(LED_PIN, 0);
  52.   } else {
  53.       analogWrite(FAN_PIN, 0);
  54.       analogWrite(LED_PIN, analog);
  55.   }
  56. }
  57.  
  58. float getTemp()
  59. {
  60.   sensors_event_t event;
  61.   dht.temperature().getEvent(&event);
  62.   if (isnan(event.temperature)) {
  63.     return 0;
  64.   }
  65.   else {
  66.     return event.temperature;
  67.   }
  68. }
  69.  
  70. int getHumidity()
  71. {
  72.   sensors_event_t event;
  73.   dht.humidity().getEvent(&event);
  74.   if (isnan(event.relative_humidity)) {
  75.     return 0;
  76.   }
  77.   else {
  78.     return event.relative_humidity;
  79.   }
  80. }
  81.  
  82. void printToLcd(float temp, int hmd) {
  83.   lcd.clear();
  84.   String tempData = "Temp: " + String(temp);
  85.   lcd.print(tempData);
  86.   lcd.setCursor(0, 1);
  87.   String tempHmd = "Humd: " + String(hmd) + "%";
  88.   lcd.print(tempHmd);
  89. }
  90.  
  91. void openDoor() {
  92.   door.write(110);  
  93. }
  94.  
  95. void closeDoor() {
  96.   door.write(70);
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement