Seeeduino Arch + Grove - OLED 128x64 + Grove - Temperature & Humidity Sensor Pro to sense the environment
Dependencies: DHT SSD1308_128x64_I2C USBDevice mbed
main.cpp@0:4a9b07ff844f, 2013-07-24 (annotated)
- Committer:
- yihui
- Date:
- Wed Jul 24 07:03:48 2013 +0000
- Revision:
- 0:4a9b07ff844f
Sense the environment
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yihui | 0:4a9b07ff844f | 1 | #include "mbed.h" |
yihui | 0:4a9b07ff844f | 2 | #include "USBSerial.h" |
yihui | 0:4a9b07ff844f | 3 | #include "DHT.h" |
yihui | 0:4a9b07ff844f | 4 | #include "SSD1308.h" |
yihui | 0:4a9b07ff844f | 5 | |
yihui | 0:4a9b07ff844f | 6 | #define LOG(...) serial.printf(__VA_ARGS__) |
yihui | 0:4a9b07ff844f | 7 | |
yihui | 0:4a9b07ff844f | 8 | BusOut leds(LED1, LED2, LED3, LED4); |
yihui | 0:4a9b07ff844f | 9 | USBSerial serial; // USB serial to output debug message |
yihui | 0:4a9b07ff844f | 10 | |
yihui | 0:4a9b07ff844f | 11 | // Grove - Temperature & Humidity Pro is connected with UART Grove of Seeeduino Arch, uses P1_14 |
yihui | 0:4a9b07ff844f | 12 | DHT sensor(P1_14, DHT22); |
yihui | 0:4a9b07ff844f | 13 | |
yihui | 0:4a9b07ff844f | 14 | // Grove - OLED 128x64 is connected with I2C Grove |
yihui | 0:4a9b07ff844f | 15 | I2C i2c(P0_5, P0_4); // SDA, SCL |
yihui | 0:4a9b07ff844f | 16 | SSD1308 oled = SSD1308(i2c, SSD1308_SA0); |
yihui | 0:4a9b07ff844f | 17 | |
yihui | 0:4a9b07ff844f | 18 | int main() { |
yihui | 0:4a9b07ff844f | 19 | uint8_t count = 0; |
yihui | 0:4a9b07ff844f | 20 | char display_buf[8]; |
yihui | 0:4a9b07ff844f | 21 | int err; |
yihui | 0:4a9b07ff844f | 22 | float humidity; |
yihui | 0:4a9b07ff844f | 23 | float last_humidity = 0; |
yihui | 0:4a9b07ff844f | 24 | float temperature; |
yihui | 0:4a9b07ff844f | 25 | float last_temperature = 0; |
yihui | 0:4a9b07ff844f | 26 | |
yihui | 0:4a9b07ff844f | 27 | |
yihui | 0:4a9b07ff844f | 28 | LOG("------- Sense -------\n"); |
yihui | 0:4a9b07ff844f | 29 | oled.writeString(0, 0, "---- Sense ----"); |
yihui | 0:4a9b07ff844f | 30 | oled.writeString(2, 0, "Temperature:"); |
yihui | 0:4a9b07ff844f | 31 | oled.writeString(5, 0, "Humidity:"); |
yihui | 0:4a9b07ff844f | 32 | while(1) { |
yihui | 0:4a9b07ff844f | 33 | count++; |
yihui | 0:4a9b07ff844f | 34 | leds = count; |
yihui | 0:4a9b07ff844f | 35 | |
yihui | 0:4a9b07ff844f | 36 | err = sensor.readData(); |
yihui | 0:4a9b07ff844f | 37 | if (err == 0) { |
yihui | 0:4a9b07ff844f | 38 | temperature = sensor.ReadTemperature(CELCIUS); |
yihui | 0:4a9b07ff844f | 39 | if (temperature != last_temperature) { // update temperature if changed |
yihui | 0:4a9b07ff844f | 40 | snprintf(display_buf, sizeof(display_buf), "%4.2f C", temperature); |
yihui | 0:4a9b07ff844f | 41 | oled.writeString(3, 0, display_buf); |
yihui | 0:4a9b07ff844f | 42 | last_temperature = temperature; |
yihui | 0:4a9b07ff844f | 43 | } |
yihui | 0:4a9b07ff844f | 44 | |
yihui | 0:4a9b07ff844f | 45 | humidity = sensor.ReadHumidity(); |
yihui | 0:4a9b07ff844f | 46 | if (humidity != last_humidity) { |
yihui | 0:4a9b07ff844f | 47 | snprintf(display_buf, sizeof(display_buf), "%4.2f %%", humidity); |
yihui | 0:4a9b07ff844f | 48 | oled.writeString(6, 0, display_buf); |
yihui | 0:4a9b07ff844f | 49 | last_humidity = humidity; |
yihui | 0:4a9b07ff844f | 50 | } |
yihui | 0:4a9b07ff844f | 51 | |
yihui | 0:4a9b07ff844f | 52 | LOG("Temperature is %4.2f C \r\n",sensor.ReadTemperature(CELCIUS)); |
yihui | 0:4a9b07ff844f | 53 | LOG("Temperature is %4.2f F \r\n",sensor.ReadTemperature(FARENHEIT)); |
yihui | 0:4a9b07ff844f | 54 | LOG("Temperature is %4.2f K \r\n",sensor.ReadTemperature(KELVIN)); |
yihui | 0:4a9b07ff844f | 55 | LOG("Humidity is %4.2f \r\n",sensor.ReadHumidity()); |
yihui | 0:4a9b07ff844f | 56 | LOG("Dew point is %4.2f \r\n",sensor.CalcdewPoint(sensor.ReadTemperature(CELCIUS), sensor.ReadHumidity())); |
yihui | 0:4a9b07ff844f | 57 | LOG("Dew point (fast) is %4.2f \r\n",sensor.CalcdewPointFast(sensor.ReadTemperature(CELCIUS), sensor.ReadHumidity())); |
yihui | 0:4a9b07ff844f | 58 | } else |
yihui | 0:4a9b07ff844f | 59 | LOG("\r\nErr %i \n",err); |
yihui | 0:4a9b07ff844f | 60 | |
yihui | 0:4a9b07ff844f | 61 | wait(2); |
yihui | 0:4a9b07ff844f | 62 | } |
yihui | 0:4a9b07ff844f | 63 | } |