Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_Sensor.h>
- #include <DHT.h>
- #include <DHT_U.h>
- #include <LiquidCrystal.h>
- #include <Servo.h>
- #define PIR_PIN 4
- #define DHTPIN 1
- #define DHTTYPE DHT22
- DHT_Unified dht(DHTPIN, DHTTYPE);
- #define FAN_PIN 10
- #define LED_PIN 11
- #define SERVO_PIN 9
- LiquidCrystal lcd(12, 13, 4, 5, 6, 7);
- Servo door;
- void setup() {
- pinMode(DHTPIN, INPUT);
- pinMode(PIR_PIN, INPUT);
- pinMode(FAN_PIN, OUTPUT);
- pinMode(LED_PIN, OUTPUT);
- analogWrite(FAN_PIN, 0);
- analogWrite(LED_PIN, 0);
- dht.begin();
- lcd.begin(16, 2);
- door.attach(SERVO_PIN);
- closeDoor();
- attachInterrupt(digitalPinToInterrupt(PIR_PIN), openDoor, RISING);
- attachInterrupt(digitalPinToInterrupt(PIR_PIN), closeDoor, FALLING);
- }
- void loop() {
- maintainTemp();
- delay(5000);
- }
- void maintainTemp() {
- float temperature = getTemp();
- int humidity = getHumidity();
- printToLcd(temperature, humidity);
- float temp = constrain(temperature - 5, -3, 3);
- int analog = map(abs(temp), 0, 3, 0, 255);
- if (temp > 0) {
- analogWrite(FAN_PIN, analog);
- analogWrite(LED_PIN, 0);
- } else {
- analogWrite(FAN_PIN, 0);
- analogWrite(LED_PIN, analog);
- }
- }
- float getTemp()
- {
- sensors_event_t event;
- dht.temperature().getEvent(&event);
- if (isnan(event.temperature)) {
- return 0;
- }
- else {
- return event.temperature;
- }
- }
- int getHumidity()
- {
- sensors_event_t event;
- dht.humidity().getEvent(&event);
- if (isnan(event.relative_humidity)) {
- return 0;
- }
- else {
- return event.relative_humidity;
- }
- }
- void printToLcd(float temp, int hmd) {
- lcd.clear();
- String tempData = "Temp: " + String(temp);
- lcd.print(tempData);
- lcd.setCursor(0, 1);
- String tempHmd = "Humd: " + String(hmd) + "%";
- lcd.print(tempHmd);
- }
- void openDoor() {
- door.write(110);
- }
- void closeDoor() {
- door.write(70);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement