#include <LiquidCrystal.h>
#include <DHT.h>
#include <string.h>
#include <Servo.h>
#define DHT_PIN 3
#define DHT_TYPE DHT22
#define green_led_pin 13
#define red_led_pin 5
#define BUZZER_PIN 4
#define SERVO_PIN 6
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
DHT dht(DHT_PIN, DHT_TYPE);
volatile int button = 0;
Servo servo;
void setup() {
lcd.begin(16,2);
lcd.print("Inicializando leitura");
for(int i = 0; i < 5; i++) {
lcd.scrollDisplayLeft();
delay(200);
}
for(int i = 5; i < 12; i++){
lcd.setCursor(i, 1);
lcd.write(".");
delay(200);
}
lcd.clear();
dht.begin();
servo.attach(SERVO_PIN);
pinMode(green_led_pin, OUTPUT);
pinMode(red_led_pin, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
Serial.begin(9600);
pinMode(DHT_PIN, INPUT);
attachInterrupt(digitalPinToInterrupt(2), escala, RISING);
}
void escala() {
button = !button;
}
void loop() {
lcd.clear();
float celsius = dht.readTemperature();
float fahrenheit = (celsius * 9/5)+ 32;
Serial.println(digitalRead(2));
String temperatura = String(celsius) + "C";
lcd.setCursor(0, 0);
lcd.print("Temperatura: ");
lcd.setCursor(1, 1);
if (button) {
temperatura = String(fahrenheit) + "F";
}
lcd.print(temperatura);
if(celsius > 40) {
digitalWrite(red_led_pin, HIGH);
digitalWrite(green_led_pin, LOW);
servo.write(180);
digitalWrite(BUZZER_PIN, HIGH);
delay(200);
digitalWrite(BUZZER_PIN, LOW);
} else {
digitalWrite(red_led_pin, LOW);
digitalWrite(green_led_pin, HIGH);
digitalWrite(BUZZER_PIN, LOW);
servo.write(0);
}
delay(100);
}