#include <DHT.h>
#include <DHT_U.h>
#include <LiquidCrystal.h>
int SENSOR = 2;
int T;
int H;
DHT dht(SENSOR, DHT22);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const int EchoPin = 11;
const int TriggerPin =12;
const int LEDPin = 13; // pin para el LED
const int PIRPin = 10; // pin de entrada (for PIR sensor)
int pirState = LOW; // de inicio no hay movimiento
int val = 0; // estado del pin
void setup(){
Serial.begin(9600);
dht.begin();
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(LEDPin, OUTPUT);
pinMode(PIRPin, INPUT);
lcd.begin(20, 4);
Serial.print("El programa se inicio con exito \n");
Serial.print("Por favor revisa la pantalla lcd \n");
}
void loop(){
T = dht.readTemperature();
H = dht.readHumidity();
// Desplazamos el texto hacia la derecha
for(int i=1; i<=20;i++)
{ lcd.clear();
sensor_Temp_Hume(T,H,i);
}
lcd.clear();
for(int i=1; i<=20;i++)
{
lcd.clear();
sensor_Ultra_Soni(i);
}
lcd.clear();
for(int i=1; i<=20;i++)
{
lcd.clear();
Sensor_Movi(i);
}
delay(500);
}
void Sensor_Movi(int i){
val = digitalRead(PIRPin);
lcd.setCursor(i,0);
lcd.print("Sensor parado");
if (val == HIGH) //si está activado
{
digitalWrite(LEDPin, HIGH); //LED ON
if (pirState == LOW) //si previamente estaba apagado
{
lcd.setCursor(i,0);
lcd.print("Sensor activado");
Serial.println("Sensor activado \n");
pirState = HIGH;
}
}
else //si esta desactivado
{
digitalWrite(LEDPin, LOW); // LED OFF
if (pirState == HIGH) //si previamente estaba encendido
{
lcd.setCursor(i,0);
lcd.print("Sensor parado");
Serial.println("Sensor parado \n");
pirState = LOW;
}
}
delay(250);
}
void sensor_Ultra_Soni(int i){
int cm = ping(TriggerPin, EchoPin);
lcd.setCursor(i,0);
lcd.print("Distancia:");
lcd.setCursor(i, 1);
lcd.print(cm);
delay(150);
}
int ping(int TriggerPin, int EchoPin) {
long duration, distanceCm;
digitalWrite(TriggerPin, LOW); //para generar un pulso limpio ponemos a LOW 4us
delayMicroseconds(4);
digitalWrite(TriggerPin, HIGH); //generamos Trigger (disparo) de 10us
delayMicroseconds(10);
digitalWrite(TriggerPin, LOW);
duration = pulseIn(EchoPin, HIGH); //medimos el tiempo entre pulsos, en microsegundos
distanceCm = duration * 10 / 292/ 2; //convertimos a distancia, en cm
return distanceCm;
}
void sensor_Temp_Hume(int T,int H,int i){
// Limpiamos pantalla
lcd.setCursor(i,0);
lcd.print("Temperatura:");
lcd.setCursor(i, 1);
lcd.print(T);
lcd.setCursor(i,2);
lcd.print("Humedad:");
lcd.setCursor(i,3);
lcd.print(H);
// Esperamos
delay(150);
}