#include <LiquidCrystal.h> // LCD
#include "DHT.h" // Sensor Temp y Hum DHT11
// Define:
#define boton1 7 // Botón para cambiar
#define boton2 8 // Botón para entrar
#define boton3 10 // Botón retroceder al nivel 1
#define DHT1PIN 9
#define DHT1TYPE DHT11 // DHT 11
DHT dht1(DHT1PIN, DHT1TYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
///////////////////////////////////////////////////////////////////////////////////////
int contMensajeInicio = 0;
// Contadores de botones
int contbot1 = 1;
int contbot2 = 0;
int contbot3 = 0;
///////////////////////////////////////////////////////////////////////////////////////
void setup()
{
//Iniciamos el sensor.
dht1.begin();
// Iniciamos el lcd con el nº de columnas y filas.
lcd.begin(16, 2);
// Botones
pinMode(boton1, INPUT);
pinMode(boton2, INPUT);
pinMode(boton3, INPUT);
// LED
pinMode(11, OUTPUT);
}
///////////////////////////////////////////////////////////////////////////////////////
void loop()
{
// Mensaje de Inicio se muestra una vez
if (contMensajeInicio == 0) {
lcd.clear();
lcd.setCursor(0, 0); lcd.print("PRUEBA");
lcd.setCursor(0, 1); lcd.print("CASA");
contMensajeInicio = 1;
delay(5000);
}
// Llamo la función menu
menu();
}
///////////////////////////////////////////////////////////////////////////////////////
void menu() {
int EstadoBot1 = digitalRead(boton1);
int EstadoBot2 = digitalRead(boton2);
int EstadoBot3 = digitalRead(boton3);
// Si pulso el boton1 cambio de opción seleccionada y si pulso boton2 entro en la opción seleccionada
if (EstadoBot1 == HIGH) contbot1 = contbot1 + 1;
if (EstadoBot2 == HIGH) contbot2 = 1;
if (contbot1 == 5 ) contbot1 = 1;
switch (contbot1) {
case 1:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("*TEM/HUM ALARMA");
lcd.setCursor(0, 1); lcd.print(" GARAJE CREDITS");
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0); lcd.print(" TEM/HUM ALARMA");
lcd.setCursor(0, 1); lcd.print(" GARAJE CREDITS");
break;
case 3:
lcd.clear();
lcd.setCursor(0, 0); lcd.print(" TEM/HUM ALARMA");
lcd.setCursor(0, 1); lcd.print("GARAJE CREDITS");
break;
case 4:
lcd.clear();
lcd.setCursor(0, 0); lcd.print(" TEM/HUM ALARMA");
lcd.setCursor(0, 1); lcd.print(" GARAJE *CREDITS");
break;
}
if (contbot2 == 1) {
contbot2 = 0;
switch (contbot1) {
case 1:
while (1) {
int EstadoBot3 = digitalRead(boton3); // Si pulso el boton3 vuelvo al principio
if (EstadoBot3 == HIGH) break;
SensoresDHT11(); // Función del sensor DHT11
}
break;
case 2:
while (1) {
int EstadoBot3 = digitalRead(boton3); // Si pulso el boton3 vuelvo al principio
if (EstadoBot3 == HIGH) break;
lcd.clear();
lcd.setCursor(0, 0); lcd.print("*Activar");
lcd.setCursor(0, 1); lcd.print("*Desactivar");
delay(500);
}
break;
case 3:
while (1) {
int EstadoBot3 = digitalRead(boton3);
if (EstadoBot3 == HIGH) break; // Si pulso el boton3 vuelvo al principio
lcd.clear();
lcd.setCursor(0, 0); lcd.print("*Garaje Abrir");
lcd.setCursor(0, 1); lcd.print("*Garaje Cerrar");
delay(500);
}
break;
case 4:
while (1) {
int EstadoBot3 = digitalRead(boton3);
if (EstadoBot3 == HIGH) break; // Si pulso el boton3 vuelvo al principio
lcd.clear();
lcd.setCursor(0, 0); lcd.print("Prueba casa");
lcd.setCursor(0, 1); lcd.print("Domotica");
delay(500);
}
break;
}
}
delay(500);
}
///////////////////////////////////////////////////////////////////////////////////////
void SensoresDHT11() {
// Se tarda en leer la temperatura o la humedad alrededor de 250 ms.
// Definimos h1,h2 variables que almacerán el valor correspondiente.
int h1 = dht1.readHumidity();
int t1 = dht1.readTemperature();
// Defino el estado de los botones para ver si es HIGH o LOW
int EstadoBot2 = digitalRead(boton2);
if (EstadoBot2 == HIGH) contbot2 = 1;
if (contbot2 == 0) {
// Temperatura 1 y Humedad 1 mostradas por LCD.
lcd.clear();
lcd.setCursor(0, 0); lcd.print("TEM "); lcd.print(t1); lcd.print("C "); lcd.print("HUM "); lcd.print(h1); lcd.print("%");
lcd.setCursor(0, 1); lcd.print("* Aumentar Temp?");
}
if (contbot2 == 1) {
lcd.clear();
lcd.setCursor(0, 0); lcd.print("TEM "); lcd.print(t1); lcd.print("C "); lcd.print("HUM "); lcd.print(h1); lcd.print("%");
lcd.setCursor(0, 1); lcd.print(" Aumentando Temp");
}
delay(500);
}