Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
en:odroidoduinoone [2013/11/04 13:57] odroid |
en:odroidoduinoone [2015/09/04 18:22] odroid [Qt(Ubuntu arm)] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ODUINO ONE is a package of Arduino Uno R3 and LCD/Keypad/sensor. | ||
- | You can buy this item in this link. | ||
- | (Will be available soon) | ||
- | |||
- | Arduino Uno R3 schematics | ||
- | [[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf]] | ||
- | |||
- | LCD+Keypad shield schematics | ||
- | [[http://dn.odroid.com/ODUINO/schematics-v1.0-dfr0009.pdf]] | ||
- | |||
- | DHT11 Sensor (Humidity / Temperature sensor) | ||
- | [[http://www.micro4you.com/files/sensor/DHT11.pdf]] | ||
- | {{wiki:dht11-humiditytempvsg.jpg}} | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | DHT11 uses one-wire communication and I connected it to the digital Pin#3 of Arduino. | ||
- | Also note that we should add a 10Kohm pull-up resistor on that pin. | ||
- | |||
- | See photo : Connections are (V)oltage, (S)ignal, (G)round | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | [code] | ||
- | #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. | ||
- | } | ||
- | [/code] |