Está en la página 1de 8

2da Práctica de laboratorio

Problema
1. Se desea implementar un control de sensores de entorno
2. En un display de 16x2 se muestra un menú de 3 opciones:
a. Opcion1: Distancia
b. Opcion2: Temp Ds18B
c. Opcion3: Humedad relativa
3. Habrá 3 pulsadores uno para cada opción, cuando se pulse uno de ellos, el display en
la primera línea cambiará y mostrará lo q se medirá (DISTANCIA, TEMPERAT,
HUMEDAD), y en la segunda línea la medición realizada.
4. Habrá un cuarto pulsador que terminará el programa, y sacará un mensaje en display
sobre FIN DE PROGRAMA, luego de lo cual ningún otro pulsador funcionará

Solución
Fritzing
Código Arduino
#include <OneWire.h>
#include <LiquidCrystal.h>
#include <DHT.h>
#include <NewPing.h>
#include <DallasTemperature.h>
OneWire ourWire(2); //Se establece el pin 2 como bus OneWire
DallasTemperature sensors(&ourWire); //Se declara una variable u objeto para nuestro
sensor
//Inicializamos el display con los pines de interfaz
LiquidCrystal lcd(7, 8, 9, 10, 5, 6);
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 400 // Maximum distance we want to ping for (in
centimeters). Maximum sensor distance is rated at 400-500cm.
#define DHTPIN 3 //Seleccionamos el pin en el que se conectará el sensor
#define DHTTYPE DHT11 //Se selecciona el DHT11
DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino
para comunicarse con el sensor
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of
pins and maximum distance.
//NewPing sonar(3, 4, 400); // NewPing setup of pins and maximum distance.
//int estado;
String impresion;
//int nada;
int botonDist = A5;
int botonTem = A4;
int botonHum = 4;
int botonFin = 13;
int estado;
int valor;
boolean verificar = true;
long t,h;
void setup() {
delay(1000);
//Hacemos la inicializacion del display
// En la configuracion le decimos que cuenta con 16 columnas y 2 filas
lcd.begin(16, 2);
sensors.begin(); //Se inicia el sensor
//Imprimimos un mensaje en el Display, se imprime en la
//primer columna, primer renglon
lcd.print("Menu Principal");
estado=2;
impresion = String();
dht.begin(); //Se inicia el sensor
pinMode(botonDist, INPUT);
pinMode(botonTem, INPUT);
pinMode(botonHum, INPUT);
pinMode(botonFin, INPUT);
estado=0;
valor=0;
}
void loop() {
unsigned int uS;
if (digitalRead(botonDist))
{
if(verificar==true)
{
estado=2;
}
delay(1000);
}
if (digitalRead(botonTem))
{
if(verificar==true)
{
estado=1;
}
delay(1000);
}
if (digitalRead(botonHum))
{
if(verificar==true)
{
estado=3;
}
delay(1000);
}
if (digitalRead(botonFin))
{
if(valor==1)
{
estado=0;
verificar=true;
valor=0;
}else
{
valor=1;
verificar=false;
estado=4;
}
delay(1000);
}
if(estado==4)
{
lcd.setCursor(0,0);
lcd.print("FIN DE");
lcd.setCursor(0,1);
lcd.print("PROGRAMA");
delay(2000);
//Borramos el display
lcd.clear();
}
if(estado==0)
{
lcd.setCursor(0,0);
lcd.print("MENU DE OPCIONES");
//Movemos el cursor para escribir en la primer columna, segundo renglon
lcd.setCursor(0, 1);
lcd.print("1. Distancia");
delay(2000);
//Borramos toda la informacion que contiene el display
lcd.clear();
//Ponemos el cursor en la primer columna primer renglon
lcd.setCursor(0,0);
lcd.print("2. Temperatura");
//Movemos el cursor para escribir en la primer columna, segundo renglon
lcd.setCursor(0, 1);
lcd.print("3. Humedad");
delay(2000);
//Borramos el display
lcd.clear();
}
if(estado==1)
{
sensors.requestTemperatures(); //Se envía el comando para leer la temperatura
float temp= sensors.getTempCByIndex(0); //Se obtiene la temperatura en ºC
lcd.setCursor(0,0);
lcd.print("Temperatura es");
//Movemos el cursor para escribir en la primer columna, segundo rengl
impresion=String(temp);
impresion=impresion+" c";
lcd.setCursor(0, 1);
lcd.print(impresion);
delay(1000);
lcd.clear();
}
if (estado==2)
{
lcd.setCursor(0,0);
lcd.print("Distancia es");

lcd.setCursor(0,1);
unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
int nada=sonar.convert_cm(uS);
impresion=String(nada);
//String str = String();
//String imprimir=sonar.convert_cm(uS);
lcd.print(impresion+ " cm");
//lcd.print(sonar.convert_cm(uS));
delay(1000); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the
shortest delay between pings.
lcd.clear();
}
if(estado==3)
{
h = dht.readHumidity(); //Se lee la humedad
t = dht.readTemperature(); //Se lee la temperatura
lcd.setCursor(0,0);
lcd.print("Temperatura: ");
lcd.setCursor(13,0);
lcd.print(t);
lcd.setCursor(0,1);
lcd.print("Humedad: ");
lcd.setCursor(9,1);
lcd.print(h);
delay(1000);
}
}
Evidencias

También podría gustarte