Sensor de temperatura y humedad (DHT22)
Dependencies: mbed RGBLed TextLCD Keypad
Diff: main.cpp
- Revision:
- 1:6d44a2138e64
- Parent:
- 0:214ec6f2cde1
--- a/main.cpp Thu Jul 28 20:59:39 2016 +0000 +++ b/main.cpp Fri May 31 00:32:13 2019 +0000 @@ -1,19 +1,332 @@ +/** ################################################################### +** Filename : main.cpp +** Project : FRDM-KL46Z_HUMTEMPSENSOR +** Component : DHT22 +** Tool : Mbed Compiler +** Compiler : GNU C Compiler +** Abstract :El programa esta diseñado para que atraves de una interfaz LCD +** el usuario decida en que escala leer la temperatura, ademas de que +** a traves de un LED RGB observar en que nivel de temperatura se +** encuentra, Rojo:temp>32°C, naranja:27°C-31°C, verde: 20°C-26°C,cian:14°C-19°C +** morado:9°C-13°C y azul temp< 8°C +** La temepratura, humedad y punto de rocio se retornan en valores enteros. +** +** Author(s) : Mayra Pérez Almazán +** +** ###################################################################*//* +*/ +/* +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: Includes +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +*/ #include "mbed.h" #include "DHT22.h" -DHT22 dht22(PB_7); -int main() { - double hum; - double temp; - - printf("\r\nSetting up...\r\n"); +#include "TextLCD.h" +#include "Keypad.h" +#include "RGBLed.h" +/* +:.. +: Definiciones +:............................................................................... +*/ +#define on 1 +#define off 0 +/* ++-------------------------------------- +| Configuración de Puertos ++------------------------------------------------------------------------------- +*/ +TextLCD lcd(PTD3,PTD2,PTD4,PTD6,PTD7,PTD5, TextLCD::LCD20x4); // RS RW E D4 D5 D6 D7 - conexión de la LCD 20X4 +Keypad kpad(PTA17,PTA16,PTA15,PTA14,PTC8,PTC9,PTC10,PTC11); // COL 1 COL 2 COL3 COL 4 ROW 1 ROW 2 ROW 3 ROW 4 -terminales del teclado 4x4 +DHT22 dht22(PTA13); //Incializa puerto del sensor +RGBLed myRGBled(PTA2,PTA1,PTA12); //Incializa puertos PWM del LED RGB +PwmOut Buzz(PTE31); //Incializa el PWM del buzzer + +/* ++-------------------------------------- +| Variables Globales de Usuario ++------------------------------------------------------------------------------- +*/ +int hum=0,temp=0,faren=0,kelvin=0,rocio=0; +//Buzz=on; + +char key; +int released = 1; +int i=0; +/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +| Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +*/ +void leeteclado() +{ + //lcd.cls(); + key = kpad.ReadKey(); - while (1) { - dht22.sample() ; - hum=dht22.getHumidity()/10.0; - temp=dht22.getTemperature()/10.0; - printf("temperature: %3.1f, humidity: %3.1f\n\r",temp,hum); - wait(2); + if(key == '\0') + released = 1; + if((key != '\0') && (released == 1)) { + Buzz=on; + wait_ms(5); + Buzz=off; + lcd.printf("%c\n", key); + released = 0; } } - \ No newline at end of file + +void enciendeRGB() +{ + if(temp>=32) + { + myRGBled.write(0.0,1.0,0.0); //rojo temp>32°C + } + else if((temp>=27) && (temp<=31)) + { + myRGBled.write(0.2,1.0,0.0); //ambar/amarillo rojizo temp + } + else if((temp>=20) && (temp<=26)) + { + myRGBled.write(1.0,0.0,0.0); //verde + } + else if((temp>=14) && (temp<=19)) + { + myRGBled.write(0.2,0.0,1.0); //cian + } + else if((temp>=9) &&( temp<=13)) + { + + myRGBled.write(0.0,0.2,1.0); //morado + } + else if(temp<=8) + { + myRGBled.write(0.0,0.0,1.0); //azul + } + +} +/* +#=============================================================================== +| +| P R O G R A M A P R I N C I P A L +| +#=============================================================================== +*/ + +int main() +{ + + + Buzz=off; + lcd.printf("Eliga escala de temp"); + lcd.locate(1,1); + lcd.printf("1- Celsius"); + lcd.locate(1,2); + lcd.printf("2- Farenheit"); + lcd.locate(1,3); + lcd.printf("3- Kelvin"); + wait(3); + lcd.cls(); + lcd.printf("Ingrese su opcion"); + lcd.printf(" "); + dht22.inicio() ; + hum=dht22.leeHumedad()/10; + temp=dht22.leeTemperatura()/10; + faren=dht22.convertirCelsiusaFarenheit(); + kelvin=dht22.convertirCelsiusaKelvin(); + rocio=dht22.calculaPuntodeRocio(); + + + while(i!=2) + { + + leeteclado(); + //enciendeRGB(); + + if(key=='1') + { + lcd.cls(); + lcd.locate(1,0); + lcd.printf("Temperatura: %i C",temp); + lcd.locate(1,1); + lcd.printf("Humedad: %i ",hum); + lcd.locate(1,2); + lcd.printf("P. de rocio: %i ",rocio); + enciendeRGB(); + i=2; + } + else if(key=='2') + { + lcd.cls(); + lcd.locate(1,0); + lcd.printf("Temperatura: %i F",faren); + lcd.locate(1,1); + lcd.printf("Humedad: %i",hum); + lcd.locate(1,2); + lcd.printf("P. de rocio: %i C",rocio); + enciendeRGB(); + i=2; + } + else if(key=='3') + { + lcd.cls(); + lcd.locate(1,0); + //temp=dht22.leeTemperatura()/10; + lcd.printf("Temperatura: %i K",kelvin); + lcd.locate(1,1); + lcd.printf("Humedad: %i",hum); + lcd.locate(1,2); + lcd.printf("P. de rocio: %i C",rocio); + enciendeRGB(); + i=2; + } + else if(key=='4' ) + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='5') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='6') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='7') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='8') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='9') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='0') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='A') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='B') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='C') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='D') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='#') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } + else if(key=='*') + { + lcd.cls(); + lcd.locate(5,1); + lcd.printf("ERROR"); + wait(1); + lcd.cls(); + lcd.printf("Igrese de nuevo su"); + lcd.locate(0,1); + lcd.printf("opcion "); + } +} + + + +} //FIN DEL PROGRAMA + +