BME280 environmental recorder
Dependencies: BME280 SB1602E SDFileSystem mbed
Diff: main.cpp
- Revision:
- 0:7cbf615a0467
- Child:
- 1:8d7984b2e2bc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Apr 11 15:49:47 2015 +0000 @@ -0,0 +1,77 @@ +#include "mbed.h" +#include "SB1602E.h" +#include "BME280.h" +#include "SDFileSystem.h" + +#define USE_SDCARD 1 +#define USE_RTC 0 + +#if USE_SDCARD +DigitalOut sd_sdo(dp18, 0); +DigitalOut sd_csb(dp15, 1); +DigitalOut sd_gnd(dp12, 0); +SDFileSystem sd(dp24, dp22, dp23, dp25, "sd"); // mosi, miso, sclk, cs +#endif + +SB1602E lcd(dp11, dp10); +DigitalIn btn(dp2); +BME280 sensor(dp16, dp17); + + +int main() +{ + float temp, humd, pres; + lcd.setCharsInLine(8); + lcd.contrast(0x30); + int last_mode = 0; + btn.mode(PullUp); + + lcd.printf(0, 0, "BME280"); + lcd.printf(0, 1, "Demo"); + wait(3); + +#if USE_SDCARD + uint32_t count = 0; + mkdir("/sd/environmental", 0777); + FILE *fp = fopen("/sd/environmental/log.csv", "w"); + if(fp == NULL) { + error("Could not open file for write\n"); + } + fprintf(fp, "Temerature,Humidity,Pressure\r\n"); +#endif + + while(1) { + temp = sensor.getTemperature(); + humd = sensor.getHumidity(); + pres = sensor.getPressure(); + if (btn == 1) { + if (last_mode == 0) { + lcd.clear(); + } + lcd.printf(0, 0, "%2.2f%cC", temp, 0xdf); + lcd.printf(0, 1, "%2.2f%%", humd); + last_mode = 1; + } else { + if (last_mode == 1) { + lcd.clear(); + } + lcd.printf(0, 0, "%2.2f%cC", temp, 0xdf); + lcd.printf(0, 1, "%04.1fhPa", pres); + last_mode = 0; + } +#if USE_SDCARD + count++; + if ((count % 60) == 0) { + fprintf(fp, "%2.2f,%2.2f,%4.1f\r\n", temp, humd, pres); + fflush(fp); + count = 0; + } +#endif + wait(1); + } + +#if USE_SDCARD + fclose(fp); + delete fp; +#endif +}