Project to use SF weather shield over cell link

Dependencies:   MPL3115A2_for_weather_shield htu21d_for_weather_shield mbed

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?

UserRevisionLine numberNew 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 }