http://odroid.com/dokuwiki/doku.php?id=en:odroidoduinoone
DHT11 Sensor (Humidity / Temperature sensor)
http://www.micro4you.com/files/sensor/DHT11.pdf
Connections are (V)oltage, (S)ignal, (G)round
DHT11
<package>
| | | |
VS G
For project hooked to digital pin 3 on Arduino Uno
Download dht.cpp and dht.h from below link and copy them into “~/sketchbook/libraries/dht”.
http://playground.arduino.cc/Main/DHTLib
#include <LiquidCrystal.h> #include <dht.h> /******************************************************* This program will test the LCD panel, the buttons and the Humidity/Temperature sensor Version : 0.1 Date : 20-Oct-2013 By Hardkernel ********************************************************/ // for Digital Humidity and Temperature sensor (DHT11) dht DHT; #define DHT11_PIN 3 // Global variables unsigned long elapsed_time; // select the pins used on the LCD panel LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // define some values used by the panel and buttons int lcd_key = 0; int adc_key_in = 0; #define btnRIGHT 0 #define btnUP 1 #define btnDOWN 2 #define btnLEFT 3 #define btnSELECT 4 #define btnNONE 5 // read the buttons int read_LCD_buttons() { adc_key_in = analogRead(0); // read the value from the sensor // my buttons when read are centered at these valies: 0, 144, 329, 504, 741 // we add approx 50 to those values and check to see if we are close if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result if (adc_key_in < 50) return btnRIGHT; if (adc_key_in < 195) return btnUP; if (adc_key_in < 380) return btnDOWN; if (adc_key_in < 555) return btnLEFT; if (adc_key_in < 790) return btnSELECT; return btnNONE; // when all others fail, return this... } void setup() { // initialize serial communication at 115200 bits per second: Serial.begin(115200); lcd.begin(16, 2); // start the LCD library lcd.setCursor(0,0); lcd.print(" Hello, ODUINO! "); // print a simple message // 1234567890123456 delay(1500); // Splash for 1.5 second Serial.println("ODUINO TEST PROGRAM "); Serial.println(); Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)"); elapsed_time = millis()/1000; // Returns the number of milliseconds since the Arduino board began running the current program. } void loop() { lcd.setCursor(0,1); // move to the begining of the second line lcd.print("KEY :"); lcd.setCursor(6,1); // move to the begining of the second line lcd_key = read_LCD_buttons(); // read the buttons switch (lcd_key) // depending on which button was pushed, we perform an action { case btnRIGHT: { lcd.print("RIGHT "); Serial.println("RIGHT "); break; } case btnLEFT: { lcd.print("LEFT "); Serial.println("LEFT "); break; } case btnUP: { lcd.print("UP "); Serial.println("UP "); break; } case btnDOWN: { lcd.print("DOWN "); Serial.println("DOWN "); break; } case btnSELECT: { lcd.print("SELECT"); Serial.println("SELECT "); break; } case btnNONE: { lcd.print("NONE "); break; } } // Read & Display the humidity / temperature data every 1 second (approx.) if(elapsed_time != millis()/1000) { elapsed_time = millis()/1000; Serial.print("DHT11, \t"); int chk = DHT.read11(DHT11_PIN); switch (chk) { case DHTLIB_OK: Serial.print("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("Time out error,\t"); break; default: Serial.print("Unknown error,\t"); break; } // DISPLAY DATA Serial.print(DHT.humidity,0); Serial.print(",\t"); Serial.println(DHT.temperature,0); lcd.setCursor(0,0); // move cursor to second line "1" and 9 spaces over lcd.print("HUMI:"); lcd.print((int)(DHT.humidity)); lcd.print("%"); lcd.print(" TEM:"); lcd.print((int)(DHT.temperature)); lcd.print("C"); } delay(50); // delay 50 msec. }