#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHTTYPE DHT22
#define DHTPIN 2
DHT dht (DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd (0x27, 16, 2);
byte grado[8] = {
0B01100,
0B10010,
0B10010,
0B01100,
0B00000,
0B00000,
0B00000,
0B00000,
};
const int R1 = 9;
const int G1 = 10;
const int b1 = 11;
const int R2 = 3;
const int G2 = 5;
const int B2 = 6;
int rele = 7;
int delay1 = 200;
int delay2 = 2000;
int delay3 = 1000;
void setup() {
Serial.begin(9600);
Serial.println("DHT sensor!");
dht.begin();
lcd.init();
lcd.backlight();
lcd.createChar(0, grado);
pinMode(R1, OUTPUT); pinMode(G1, OUTPUT); pinMode(B1, OUTPUT);
pinMode(R2, OUTPUT); pinMode(G2, OUTPUT); pinMode(B2, OUTPUT);
pinMode(rele, OUTPUT);
lcd.setCursor(5, 0);
lcd.print("MATERIA");
lcd.setCursor(6,1);
lcd.print("Stem");
delay(delay2);
for (int a = 0; a <= 12; a++ ){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
lcd.setCursor(5,0);
lcd.print("CURSO");
lcd.setCursor(7,1);
lcd.print("9B");
delay(delay2);
for (int a = 0; a <= 10; a++ ){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
lcd.setCursor(3,0);
lcd.print("CREADO POR");
lcd.setCursor(0,1);
lcd.print("Grupo 2");
delay(delay2);
for (int a = 0; a <= 20; a++ ){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
void loop() {
float temperatura = dht.readTemperature();
float humedad = dht.readHumidity();
int r, g, b;
if (isnan(humedad) || isnan(temperatura)){
Serial.println("Error al leer el sensor DHT22!");
return;
}
if (temperatura < 18) {
r = 0;
g = map(temperatura, 10, 18, 0, 100);
b = 255;
}
else if (temperatura >= 18 && temperatura <= 35) {
r = map(temperatura, 18, 23, 0, 150);
g = 255;
b = map(temperatura, 18, 23, 255, 0);
}
else {
r = 255;
g = map(temperatura, 23, 28, 255, 80);
b = 0;
}
if (humedad >= 50){
r = 255;
g = map(humedad, 23, 28, 255, 80);
b = 0;
}
if (humedad < 50){
r = 0;
g = map(humedad, 10, 18, 0, 100);
b = 255;
}
analogWrite(R1, r);
analogWrite(G1, g);
analogWrite(b1, b);
analogWrite(R2, r);
analogWrite(G2, g);
analogWrite(B2, b);
Serial.print("Humedad : ");
Serial.print(humedad);
Serial.println("%");
lcd.setCursor(0, 0);
lcd.print("Hum: ");
lcd.setCursor(5, 0);
lcd.print(humedad);
lcd.setCursor(10, 0);
lcd.print("%");
Serial.print("Temperatura : ");
Serial.print(temperatura);
Serial.println("°C");
lcd.setCursor(0, 1);
lcd.print("T");
lcd.setCursor(1, 1);
lcd.write(0);
lcd.setCursor(2, 1);
lcd.print(": ");
lcd.setCursor(4, 1);
lcd.print(temperatura);
lcd.setCursor(9, 1);
lcd.write(0);
lcd.setCursor(10, 1);
lcd.print("C");
digitalWrite(rele, LOW);
delay(5000);
digitalWrite(rele, HIGH);
delay(5000);
delay(2000);
}