#include "DHT.h"
#define Pin_NTC 14
#define Pin_LDR 13
#define led1 23
#define led2 22
#define led3 21
#define led4 19
#define led5 18
#define led6 5
#define led7 16
#define ledmodo 4
#define DHTTYPE DHT22
#define Pin_Interrupt 12
float temp_NTC(int analogValue);
void apaga();
void estado();
volatile byte valor = 1;
DHT dht(Pin_LDR, DHTTYPE);
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
apaga();
pinMode(Pin_NTC, INPUT);
analogReadResolution(10);
dht.begin();
pinMode(Pin_LDR, INPUT);
pinMode(Pin_Interrupt, INPUT);
attachInterrupt(digitalPinToInterrupt(Pin_Interrupt), estado, FALLING);
pinMode(ledmodo, OUTPUT);
digitalWrite(ledmodo, LOW);
}
void loop() {
while(valor){
digitalWrite(ledmodo, HIGH);
int analogValue = analogRead(Pin_NTC);
float temp = temp_NTC(analogValue);
Serial.println(temp);
if(temp < 15){
apaga();
digitalWrite(led1, HIGH);
}
else if(temp >= 15 && temp < 20){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
}
else if(temp >= 20 && temp < 25){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
else if(temp >= 25 && temp < 30){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
}
else if(temp >= 30 && temp < 35){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
else if(temp >= 35 && temp < 40){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
}
else if(temp >= 40){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
}
delay(100);
}
valor = 1;
while(valor){
digitalWrite(ledmodo, LOW);
float temp = dht.readHumidity();
Serial.println(temp);
if(temp < 40){
apaga();
digitalWrite(led1, HIGH);
}
else if(temp >= 40 && temp < 50){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
}
else if(temp >= 50 && temp < 60){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
else if(temp >= 60 && temp < 70){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
}
else if(temp >= 70 && temp < 80){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
else if(temp >= 80 && temp < 90){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
}
else if(temp >= 90){
apaga();
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
}
delay(100);
}
valor = 1;
}
float temp_NTC(int analogValue){
const float BETA = 3950; // Deve corresponder ao coeficiente beta do termistor
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
return celsius;
}
void apaga(){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
}
void estado(){
valor = 0;
}