Project to use SF weather shield over cell link
Dependencies: MPL3115A2_for_weather_shield htu21d_for_weather_shield mbed
main.cpp@0:924cb994fc16, 2016-10-20 (annotated)
- Committer:
- isaackod
- Date:
- Thu Oct 20 16:49:21 2016 +0000
- Revision:
- 0:924cb994fc16
First commit. Cell not fully implemented yet
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
isaackod | 0:924cb994fc16 | 1 | #include "mbed.h" |
isaackod | 0:924cb994fc16 | 2 | #include "MPL3115A2.h" |
isaackod | 0:924cb994fc16 | 3 | #include "htu21d.h" |
isaackod | 0:924cb994fc16 | 4 | |
isaackod | 0:924cb994fc16 | 5 | |
isaackod | 0:924cb994fc16 | 6 | I2C i2c(I2C_SDA, I2C_SCL); // sda, scl |
isaackod | 0:924cb994fc16 | 7 | Serial pc(USBTX, USBRX); // tx, rx |
isaackod | 0:924cb994fc16 | 8 | MPL3115A2 mpl(&i2c, &pc); |
isaackod | 0:924cb994fc16 | 9 | htu21d htu(i2c); |
isaackod | 0:924cb994fc16 | 10 | DigitalOut bled(PTC3); |
isaackod | 0:924cb994fc16 | 11 | DigitalOut gled(PTC12); |
isaackod | 0:924cb994fc16 | 12 | AnalogIn light(A1); |
isaackod | 0:924cb994fc16 | 13 | AnalogIn lightref(A3); |
isaackod | 0:924cb994fc16 | 14 | |
isaackod | 0:924cb994fc16 | 15 | float readLightSensor(AnalogIn sig, AnalogIn ref); |
isaackod | 0:924cb994fc16 | 16 | |
isaackod | 0:924cb994fc16 | 17 | int main() { |
isaackod | 0:924cb994fc16 | 18 | pc.baud(115200); |
isaackod | 0:924cb994fc16 | 19 | wait_ms(300); |
isaackod | 0:924cb994fc16 | 20 | gled.write(1); |
isaackod | 0:924cb994fc16 | 21 | bled.write(1); |
isaackod | 0:924cb994fc16 | 22 | |
isaackod | 0:924cb994fc16 | 23 | |
isaackod | 0:924cb994fc16 | 24 | pc.printf("** Temperature Shield **\r\n"); |
isaackod | 0:924cb994fc16 | 25 | |
isaackod | 0:924cb994fc16 | 26 | |
isaackod | 0:924cb994fc16 | 27 | // Initialize the MPL3115A2 pressure and temp. |
isaackod | 0:924cb994fc16 | 28 | Temperature t; |
isaackod | 0:924cb994fc16 | 29 | Pressure p; |
isaackod | 0:924cb994fc16 | 30 | |
isaackod | 0:924cb994fc16 | 31 | mpl.init(); |
isaackod | 0:924cb994fc16 | 32 | pc.printf("MPL3115A2 ID: 0x%X\r\n", mpl.whoAmI()); |
isaackod | 0:924cb994fc16 | 33 | // Offsets for Dacula, GA |
isaackod | 0:924cb994fc16 | 34 | mpl.setOffsetTemperature(20); |
isaackod | 0:924cb994fc16 | 35 | mpl.setOffsetPressure(-32); |
isaackod | 0:924cb994fc16 | 36 | |
isaackod | 0:924cb994fc16 | 37 | |
isaackod | 0:924cb994fc16 | 38 | //initialize the HTU21D humidity and temp. |
isaackod | 0:924cb994fc16 | 39 | float H21Temp = 0.0; //Temperture from HTU21D |
isaackod | 0:924cb994fc16 | 40 | float H21Hum = 0.0; //Humidity from HTU21D |
isaackod | 0:924cb994fc16 | 41 | int htu21 = htu.softReset(); |
isaackod | 0:924cb994fc16 | 42 | if(htu21 == 0){ |
isaackod | 0:924cb994fc16 | 43 | pc.printf(" - HTU21D broken...\r\n"); |
isaackod | 0:924cb994fc16 | 44 | } |
isaackod | 0:924cb994fc16 | 45 | else{ |
isaackod | 0:924cb994fc16 | 46 | uint8_t HTU21DuserReg = htu.getUserReg(); |
isaackod | 0:924cb994fc16 | 47 | pc.printf("HTU21D UserReg: 0x%02x SN: 0x%04x %08x %04x\r\n", |
isaackod | 0:924cb994fc16 | 48 | HTU21DuserReg, htu.HTU21sn.HTU21D_sna, htu.HTU21sn.HTU21D_snb, htu.HTU21sn.HTU21D_snc); |
isaackod | 0:924cb994fc16 | 49 | } |
isaackod | 0:924cb994fc16 | 50 | |
isaackod | 0:924cb994fc16 | 51 | //main loop |
isaackod | 0:924cb994fc16 | 52 | while(1) |
isaackod | 0:924cb994fc16 | 53 | { |
isaackod | 0:924cb994fc16 | 54 | //read mpl |
isaackod | 0:924cb994fc16 | 55 | bled = 0; |
isaackod | 0:924cb994fc16 | 56 | wait(1); |
isaackod | 0:924cb994fc16 | 57 | mpl.readTemperature(&t); |
isaackod | 0:924cb994fc16 | 58 | mpl.readPressure(&p); |
isaackod | 0:924cb994fc16 | 59 | bled = 1; |
isaackod | 0:924cb994fc16 | 60 | pc.printf("Temp: %s C, Pressure: %sPa \r\n", t.print(), p.print()); |
isaackod | 0:924cb994fc16 | 61 | |
isaackod | 0:924cb994fc16 | 62 | //read htu |
isaackod | 0:924cb994fc16 | 63 | gled = 0; |
isaackod | 0:924cb994fc16 | 64 | wait(1); |
isaackod | 0:924cb994fc16 | 65 | if(htu21 == 1) { //if HTU21D didn't initialize, don't access HTU21D anymore |
isaackod | 0:924cb994fc16 | 66 | H21Hum = htu.getHum(); |
isaackod | 0:924cb994fc16 | 67 | if((double)H21Hum == 255.0) pc.printf("\r\n*** HTU21D Hum error!!\r\n"); |
isaackod | 0:924cb994fc16 | 68 | H21Temp = htu.getTemp(); |
isaackod | 0:924cb994fc16 | 69 | if((double)H21Temp == 255.0) pc.printf("\r\n*** HTU21D Temp error!!\r\n"); |
isaackod | 0:924cb994fc16 | 70 | } |
isaackod | 0:924cb994fc16 | 71 | gled = 1; |
isaackod | 0:924cb994fc16 | 72 | pc.printf("Temp: %7.2f C Hum: %4.1f %% \r\n ", H21Temp, H21Hum); |
isaackod | 0:924cb994fc16 | 73 | |
isaackod | 0:924cb994fc16 | 74 | //read photoresistor |
isaackod | 0:924cb994fc16 | 75 | wait(1); |
isaackod | 0:924cb994fc16 | 76 | float lightLvl = readLightSensor(light,lightref); |
isaackod | 0:924cb994fc16 | 77 | pc.printf("Light: %3.2f \r\n", lightLvl); |
isaackod | 0:924cb994fc16 | 78 | |
isaackod | 0:924cb994fc16 | 79 | } |
isaackod | 0:924cb994fc16 | 80 | } |
isaackod | 0:924cb994fc16 | 81 | |
isaackod | 0:924cb994fc16 | 82 | float readLightSensor(AnalogIn sig, AnalogIn ref){ |
isaackod | 0:924cb994fc16 | 83 | float opVoltage = 3.3/ref.read(); |
isaackod | 0:924cb994fc16 | 84 | float lightSen = opVoltage *sig.read(); |
isaackod | 0:924cb994fc16 | 85 | return lightSen; |
isaackod | 0:924cb994fc16 | 86 | } |