#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,16,2);
#include "DHT.h"
#define DHTPIN A1 //Conectamos el Sensor DHT11 al pin A1
#define DHTTYPE DHT22 // EN FÍSICO ES DHT11
DHT dht(DHTPIN, DHTTYPE);
//bluetooth hc-06
int ledPin1 = 13; // usamos un pin de salida al LED
int ledPin2 = 12; // usamos un pin de salida al LED
int ledPin3 = 11; // usamos un pin de salida al LED
int ledPin4 = 10; // usamos un pin de salida al LED
int Dato = 0;
int EstadoBT = 2; //Bluetooth (HC-05) State pin 2
// Crear caracteres nuevos https://maxpromer.github.io/lcd-Character-Creator/
byte Blueth[] = { B00100, B10110, B01101, B00110, B00110, B01101, B10110, B00100};
byte Grados[] = { B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000};
byte Humedad[] = { B00100, B00100, B01110, B01110, B11011, B11111, B11111, B01110};
void setup() {
lcd.init(); // inicial el display
lcd.backlight(); // limpia los datos en pantalla
// ASIGNAR NUEVOS ÍCONOS, solo se pueden usar 8 declarados en el array lcd.createChar(#, name);
lcd.createChar(1, Blueth);
lcd.createChar(2, Grados);
lcd.createChar(3, Humedad);
dht.begin(); // Inicia el sensor
pinMode(ledPin1, OUTPUT); //Declara pin de Salida
pinMode(ledPin2, OUTPUT); //Declara pin de Salida
pinMode(ledPin3, OUTPUT); //Declara pin de Salida
pinMode(ledPin4, OUTPUT); //Declara pin de Salida
Serial.begin(9600);
lcd.setCursor(0, 0);
lcd.print("IoT Project 2024");
lcd.setCursor(0, 1);
lcd.print("@ramirolopera");
delay(5000);
lcd.clear(); // comando para borrar el display
lcd.setCursor(0, 0);
lcd.print("1234");
lcd.setCursor(0, 1);
lcd.print("____");
}
void loop() {
// LEE LOS DATOS GENERADOS POR LOS SENSORES
int h = dht.readHumidity(); // Lee la humedad h y temperatura t
int t = dht.readTemperature(); int f = dht.readTemperature(true);
//si el modulo a manda dato, guardarlo en estado.
if (Serial.available() > 0) {
Dato = Serial.read();
} // esta parte del código es para solo 1 Carácter o Unidad.
// SENSOR SALA
if (Dato == 'a') {digitalWrite(ledPin1, HIGH);
lcd.setCursor(0, 1);
lcd.print("^");
} // Encendido “ON”
if (Dato == '1') {digitalWrite(ledPin1, LOW);
lcd.setCursor(0, 1);
lcd.print("_");
} // Apagado “OFF”
// SENSOR COCINA
if (Dato == 'b') {digitalWrite(ledPin2, HIGH);
lcd.setCursor(1, 1);
lcd.print("^");
} // Encendido “ON”
if (Dato == '2') {digitalWrite(ledPin2, LOW);
lcd.setCursor(1, 1);
lcd.print("_");
} // Apagado “OFF”
// SENSOR GARAGE
if (Dato == 'c') {digitalWrite(ledPin3, HIGH);
lcd.setCursor(2, 1);
lcd.print("^");
} // Encendido “ON”
if (Dato == '3') {digitalWrite(ledPin3, LOW);
lcd.setCursor(2, 1);
lcd.print("_");
} // Apagado “OFF”
// SENSOR PATIO
if (Dato == 'd') { digitalWrite(ledPin4, HIGH);
lcd.setCursor(3, 1);
lcd.print("^");
} // Encendido “ON”
if (Dato == '4') {digitalWrite(ledPin4, LOW);
lcd.setCursor(3, 1);
lcd.print("_");
} // Apagado “OFF”
// conexión del bluetooth
lcd.setCursor(5,0); lcd.write(1);;
if(digitalRead(EstadoBT)==HIGH) {lcd.setCursor(5,1); lcd.print("^");} // BT_Activo();
if(digitalRead(EstadoBT)==LOW) {lcd.setCursor(5,1); lcd.print("_");} // BT_Apagado();
// IMPRIME TEMPERATURA
lcd.setCursor(7,0); lcd.write(2);lcd.print("C");
lcd.setCursor(7,1); lcd.print(t);
// IMPRIME HUMEDAD
lcd.setCursor(11,0); lcd.write(3);lcd.print(" Hum");
lcd.setCursor(12,1); lcd.print(h);
}