BME280 environmental recorder

Dependencies:   BME280 SB1602E SDFileSystem mbed

Committer:
MACRUM
Date:
Sat Apr 11 15:49:47 2015 +0000
Revision:
0:7cbf615a0467
Child:
1:8d7984b2e2bc
Library update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:7cbf615a0467 1 #include "mbed.h"
MACRUM 0:7cbf615a0467 2 #include "SB1602E.h"
MACRUM 0:7cbf615a0467 3 #include "BME280.h"
MACRUM 0:7cbf615a0467 4 #include "SDFileSystem.h"
MACRUM 0:7cbf615a0467 5
MACRUM 0:7cbf615a0467 6 #define USE_SDCARD 1
MACRUM 0:7cbf615a0467 7 #define USE_RTC 0
MACRUM 0:7cbf615a0467 8
MACRUM 0:7cbf615a0467 9 #if USE_SDCARD
MACRUM 0:7cbf615a0467 10 DigitalOut sd_sdo(dp18, 0);
MACRUM 0:7cbf615a0467 11 DigitalOut sd_csb(dp15, 1);
MACRUM 0:7cbf615a0467 12 DigitalOut sd_gnd(dp12, 0);
MACRUM 0:7cbf615a0467 13 SDFileSystem sd(dp24, dp22, dp23, dp25, "sd"); // mosi, miso, sclk, cs
MACRUM 0:7cbf615a0467 14 #endif
MACRUM 0:7cbf615a0467 15
MACRUM 0:7cbf615a0467 16 SB1602E lcd(dp11, dp10);
MACRUM 0:7cbf615a0467 17 DigitalIn btn(dp2);
MACRUM 0:7cbf615a0467 18 BME280 sensor(dp16, dp17);
MACRUM 0:7cbf615a0467 19
MACRUM 0:7cbf615a0467 20
MACRUM 0:7cbf615a0467 21 int main()
MACRUM 0:7cbf615a0467 22 {
MACRUM 0:7cbf615a0467 23 float temp, humd, pres;
MACRUM 0:7cbf615a0467 24 lcd.setCharsInLine(8);
MACRUM 0:7cbf615a0467 25 lcd.contrast(0x30);
MACRUM 0:7cbf615a0467 26 int last_mode = 0;
MACRUM 0:7cbf615a0467 27 btn.mode(PullUp);
MACRUM 0:7cbf615a0467 28
MACRUM 0:7cbf615a0467 29 lcd.printf(0, 0, "BME280");
MACRUM 0:7cbf615a0467 30 lcd.printf(0, 1, "Demo");
MACRUM 0:7cbf615a0467 31 wait(3);
MACRUM 0:7cbf615a0467 32
MACRUM 0:7cbf615a0467 33 #if USE_SDCARD
MACRUM 0:7cbf615a0467 34 uint32_t count = 0;
MACRUM 0:7cbf615a0467 35 mkdir("/sd/environmental", 0777);
MACRUM 0:7cbf615a0467 36 FILE *fp = fopen("/sd/environmental/log.csv", "w");
MACRUM 0:7cbf615a0467 37 if(fp == NULL) {
MACRUM 0:7cbf615a0467 38 error("Could not open file for write\n");
MACRUM 0:7cbf615a0467 39 }
MACRUM 0:7cbf615a0467 40 fprintf(fp, "Temerature,Humidity,Pressure\r\n");
MACRUM 0:7cbf615a0467 41 #endif
MACRUM 0:7cbf615a0467 42
MACRUM 0:7cbf615a0467 43 while(1) {
MACRUM 0:7cbf615a0467 44 temp = sensor.getTemperature();
MACRUM 0:7cbf615a0467 45 humd = sensor.getHumidity();
MACRUM 0:7cbf615a0467 46 pres = sensor.getPressure();
MACRUM 0:7cbf615a0467 47 if (btn == 1) {
MACRUM 0:7cbf615a0467 48 if (last_mode == 0) {
MACRUM 0:7cbf615a0467 49 lcd.clear();
MACRUM 0:7cbf615a0467 50 }
MACRUM 0:7cbf615a0467 51 lcd.printf(0, 0, "%2.2f%cC", temp, 0xdf);
MACRUM 0:7cbf615a0467 52 lcd.printf(0, 1, "%2.2f%%", humd);
MACRUM 0:7cbf615a0467 53 last_mode = 1;
MACRUM 0:7cbf615a0467 54 } else {
MACRUM 0:7cbf615a0467 55 if (last_mode == 1) {
MACRUM 0:7cbf615a0467 56 lcd.clear();
MACRUM 0:7cbf615a0467 57 }
MACRUM 0:7cbf615a0467 58 lcd.printf(0, 0, "%2.2f%cC", temp, 0xdf);
MACRUM 0:7cbf615a0467 59 lcd.printf(0, 1, "%04.1fhPa", pres);
MACRUM 0:7cbf615a0467 60 last_mode = 0;
MACRUM 0:7cbf615a0467 61 }
MACRUM 0:7cbf615a0467 62 #if USE_SDCARD
MACRUM 0:7cbf615a0467 63 count++;
MACRUM 0:7cbf615a0467 64 if ((count % 60) == 0) {
MACRUM 0:7cbf615a0467 65 fprintf(fp, "%2.2f,%2.2f,%4.1f\r\n", temp, humd, pres);
MACRUM 0:7cbf615a0467 66 fflush(fp);
MACRUM 0:7cbf615a0467 67 count = 0;
MACRUM 0:7cbf615a0467 68 }
MACRUM 0:7cbf615a0467 69 #endif
MACRUM 0:7cbf615a0467 70 wait(1);
MACRUM 0:7cbf615a0467 71 }
MACRUM 0:7cbf615a0467 72
MACRUM 0:7cbf615a0467 73 #if USE_SDCARD
MACRUM 0:7cbf615a0467 74 fclose(fp);
MACRUM 0:7cbf615a0467 75 delete fp;
MACRUM 0:7cbf615a0467 76 #endif
MACRUM 0:7cbf615a0467 77 }