#include <DHT.h>
#include <LiquidCrystal.h>
#define DHT_PIN A0
#define DHT_TYPE DHT22
#define STEP 4
#define DIR 3
#define LDR_ANALOG_PIN A1
LiquidCrystal lcd(12, 11, 13, 6, 1, 0); // RS, E, D4, D5, D6, D7
int boton = 8;
int boton2 = 7;
int TRIG = 10;
int ECHO = 9;
int BUZZER = 5;
int LED_BLUE = 2;
//garaje
boolean flagBoton1 = true;
boolean flagBoton2 = false;
void printGarageStatus() {
lcd.clear();
lcd.setCursor(0, 0);
if (flagBoton2) {
lcd.print("Subiendo");
} else {
lcd.print("Bajando ");
}
}
DHT dht(DHT_PIN, DHT_TYPE);
void setup()
{
pinMode(STEP, OUTPUT);
pinMode(DIR, OUTPUT);
pinMode(boton, INPUT);
pinMode(boton2, INPUT);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LDR_ANALOG_PIN, INPUT);
lcd.begin(16, 2); // Inicializa el LCD con 16 columnas y 2 filas
dht.begin();
}
void loop()
{
boton = digitalRead(8);
digitalWrite(TRIG, HIGH);
delay(1);
digitalWrite(TRIG, LOW);
//GARAJE
//BAJAR
if(boton==true && flagBoton1 == true){
printGarageStatus();
digitalWrite(DIR, HIGH);
for(int i = 0; i < 100; i++){
digitalWrite(STEP, HIGH);
delay(10);
digitalWrite(STEP, LOW);
delay(10);
flagBoton1 = false;
flagBoton2 = true;
}
delay(2000);
}
boton2 = digitalRead(7);
//SUBIR
if(boton2==true && flagBoton2 == true){
printGarageStatus();
digitalWrite(DIR, LOW);
for(int i = 0; i < 100; i++){
digitalWrite(STEP, HIGH);
delay(10);
digitalWrite(STEP, LOW);
delay(10);
flagBoton1 = true;
flagBoton2 = false;
}
delay(2000);
}
//MEDIDOR DISTANCIA
float duration = pulseIn(ECHO, HIGH);
float distance = duration * 0.034 / 2;
if (distance <= 10 && distance > 0) {
tone(BUZZER, 1000);
delay(200);
noTone(BUZZER);
}
lcd.setCursor(9, 0);
lcd.print("D: ");
lcd.print(distance);
lcd.print(" cm");
//MEDIDOR TEMP y HUM
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lcd.setCursor(0, 0);
lcd.print("T: ");
lcd.print(temperature);
lcd.setCursor(0, 2);
lcd.print("H: ");
lcd.print(humidity);
lcd.print("% ");
//FOTORRESISTENCIA
int ldrAnalogValue = analogRead(LDR_ANALOG_PIN);
if (ldrAnalogValue < 500) {
digitalWrite(LED_BLUE, LOW);
lcd.setCursor(11, 1);
lcd.print("Dia ");
} else {
digitalWrite(LED_BLUE, HIGH);
digitalWrite(LED_BLUE, LOW);
lcd.setCursor(11, 1);
lcd.print("Noche");
}
}