A simple example temperature/humidy sensor with LCD display using: DHT11 & Robot LCD 1602

Dependencies:   DHT TextLCD mbed

Fork of DHT11-HelloWorld by WIZnet

Committer:
MrBedfordVan
Date:
Mon Jan 25 15:36:49 2016 +0000
Revision:
1:f31d081b628c
Parent:
0:3b6dd029d50c
Example code to use LCD with a temperature sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaizen 0:3b6dd029d50c 1 #include "mbed.h"
kaizen 0:3b6dd029d50c 2 #include "DHT.h"
MrBedfordVan 1:f31d081b628c 3 #include "TextLCD.h" // LCD1602
kaizen 0:3b6dd029d50c 4
MrBedfordVan 1:f31d081b628c 5 DHT sensor(PA_11, DHT11);
MrBedfordVan 1:f31d081b628c 6 Serial pc(SERIAL_TX, SERIAL_RX);
kaizen 0:3b6dd029d50c 7
MrBedfordVan 1:f31d081b628c 8 // LCD pins
MrBedfordVan 1:f31d081b628c 9 TextLCD lcd(D8, D9, D4, D5, D6, D7);
MrBedfordVan 1:f31d081b628c 10 AnalogIn keys(A0);
MrBedfordVan 1:f31d081b628c 11
MrBedfordVan 1:f31d081b628c 12 // diplay text on LCD
MrBedfordVan 1:f31d081b628c 13 void textLCD(char *text, int line) {
MrBedfordVan 1:f31d081b628c 14 char tmpBuf[16];
MrBedfordVan 1:f31d081b628c 15 for (int i = 0; i < 16; i++) tmpBuf[i] = 0x20;
MrBedfordVan 1:f31d081b628c 16 for (int i = 0; i < strlen(text); i++) {
MrBedfordVan 1:f31d081b628c 17 if (i < 16) tmpBuf[i] = text[i];
MrBedfordVan 1:f31d081b628c 18 }
MrBedfordVan 1:f31d081b628c 19
MrBedfordVan 1:f31d081b628c 20 lcd.locate(0, line);
MrBedfordVan 1:f31d081b628c 21 lcd.printf(tmpBuf);
MrBedfordVan 1:f31d081b628c 22 }
MrBedfordVan 1:f31d081b628c 23
MrBedfordVan 1:f31d081b628c 24
kaizen 0:3b6dd029d50c 25 int main()
kaizen 0:3b6dd029d50c 26 {
kaizen 0:3b6dd029d50c 27 int error = 0;
kaizen 0:3b6dd029d50c 28 float h = 0.0f, c = 0.0f, f = 0.0f, k = 0.0f, dp = 0.0f, dpf = 0.0f;
MrBedfordVan 1:f31d081b628c 29 pc.baud(9600);
MrBedfordVan 1:f31d081b628c 30 lcd.cls();
MrBedfordVan 1:f31d081b628c 31 char tmpString[16];
MrBedfordVan 1:f31d081b628c 32 char tmpString2[16];
MrBedfordVan 1:f31d081b628c 33 int iKey = 0;
MrBedfordVan 1:f31d081b628c 34 int oldiKey = 0;
MrBedfordVan 1:f31d081b628c 35 int temp_format = 0;
MrBedfordVan 1:f31d081b628c 36 int humid_format = 0;
MrBedfordVan 1:f31d081b628c 37
kaizen 0:3b6dd029d50c 38 while(1) {
MrBedfordVan 1:f31d081b628c 39 iKey = keys.read_u16();
MrBedfordVan 1:f31d081b628c 40 if (iKey != oldiKey) { // button press
MrBedfordVan 1:f31d081b628c 41 oldiKey = iKey;
MrBedfordVan 1:f31d081b628c 42 if ((iKey >= 0) &&(iKey < 0x1800)) { // right
MrBedfordVan 1:f31d081b628c 43 temp_format++;
MrBedfordVan 1:f31d081b628c 44 if (temp_format == 3) temp_format = 0;
MrBedfordVan 1:f31d081b628c 45 } else if ((iKey >= 0x8000) && (iKey < 0xc000)) { // left
MrBedfordVan 1:f31d081b628c 46 humid_format++;
MrBedfordVan 1:f31d081b628c 47 if (humid_format == 3) humid_format = 0;
MrBedfordVan 1:f31d081b628c 48 }
MrBedfordVan 1:f31d081b628c 49 //} else if ((iKey >= 0x1800) && (iKey < 0x5000)) { // up
MrBedfordVan 1:f31d081b628c 50 //} else if ((iKey >= 0x5000) && (iKey < 0x8000)) { // down
MrBedfordVan 1:f31d081b628c 51 //} else if ((iKey >= 0xc000) && (iKey < 0xfa00)) { // sel
MrBedfordVan 1:f31d081b628c 52 //} else { // nowt
MrBedfordVan 1:f31d081b628c 53 //}
MrBedfordVan 1:f31d081b628c 54 }
MrBedfordVan 1:f31d081b628c 55
kaizen 0:3b6dd029d50c 56 wait(2.0f);
kaizen 0:3b6dd029d50c 57 error = sensor.readData();
kaizen 0:3b6dd029d50c 58 if (0 == error) {
kaizen 0:3b6dd029d50c 59 c = sensor.ReadTemperature(CELCIUS);
kaizen 0:3b6dd029d50c 60 f = sensor.ReadTemperature(FARENHEIT);
kaizen 0:3b6dd029d50c 61 k = sensor.ReadTemperature(KELVIN);
kaizen 0:3b6dd029d50c 62 h = sensor.ReadHumidity();
kaizen 0:3b6dd029d50c 63 dp = sensor.CalcdewPoint(c, h);
kaizen 0:3b6dd029d50c 64 dpf = sensor.CalcdewPointFast(c, h);
MrBedfordVan 1:f31d081b628c 65 pc.printf("Temperature in Kelvin: %4.2f, Celcius: %4.2f, Farenheit %4.2f\n", k, c, f);
MrBedfordVan 1:f31d081b628c 66 pc.printf("Humidity is %4.2f, Dewpoint: %4.2f, Dewpoint fast: %4.2f\n", h, dp, dpf);
MrBedfordVan 1:f31d081b628c 67 pc.printf("Tempformat: %d HumidFormat: %d\n", temp_format, humid_format);
MrBedfordVan 1:f31d081b628c 68 switch(temp_format) {
MrBedfordVan 1:f31d081b628c 69 case 0 : sprintf(tmpString, " Temp: %4.2fC", c); break;
MrBedfordVan 1:f31d081b628c 70 case 1 : sprintf(tmpString, " Temp: %4.2fF", f); break;
MrBedfordVan 1:f31d081b628c 71 case 2 : sprintf(tmpString, " Temp: %4.2fK", k); break;
MrBedfordVan 1:f31d081b628c 72 }
MrBedfordVan 1:f31d081b628c 73 textLCD(tmpString, 0);
MrBedfordVan 1:f31d081b628c 74 switch(humid_format) {
MrBedfordVan 1:f31d081b628c 75 case 0 : sprintf(tmpString2, "Humid: %4.2f", h); break;
MrBedfordVan 1:f31d081b628c 76 case 1 : sprintf(tmpString2, "Dewpoint: %4.2f", dp); break;
MrBedfordVan 1:f31d081b628c 77 case 2 : sprintf(tmpString2, "DewpFast: %4.2f", dpf); break;
MrBedfordVan 1:f31d081b628c 78 }
MrBedfordVan 1:f31d081b628c 79 textLCD(tmpString2, 1);
kaizen 0:3b6dd029d50c 80 } else {
MrBedfordVan 1:f31d081b628c 81 pc.printf("Error: %d\n", error);
MrBedfordVan 1:f31d081b628c 82 textLCD("Error", 0);
kaizen 0:3b6dd029d50c 83 }
kaizen 0:3b6dd029d50c 84 }
kaizen 0:3b6dd029d50c 85 }