91

Dependencies:   ADXL362 ATParser MPL3115A2 TSL2561 mbed

Fork of Lab9-1 by CPS-Lab*

Committer:
jackclar
Date:
Thu Apr 05 14:43:37 2018 +0000
Revision:
4:eb81ef9e1621
Parent:
2:c322c1331eaa
Child:
5:4a5b8c114486
Lab 9;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fanbsun 0:9a45e4f07b10 1 #include "mbed.h"
fanbsun 0:9a45e4f07b10 2 #include "MPL3115A2.h"
fanbsun 0:9a45e4f07b10 3 #include <string>
fanbsun 0:9a45e4f07b10 4 #include <math.h>
jackclar 4:eb81ef9e1621 5 #include <ATParser.h>
jackclar 4:eb81ef9e1621 6 #include "BufferedSerial.h"
fanbsun 0:9a45e4f07b10 7
jackclar 4:eb81ef9e1621 8 //Serial pc(SERIAL_TX, SERIAL_RX);
fanbsun 0:9a45e4f07b10 9 DigitalOut myled(LED1);
jackclar 2:c322c1331eaa 10 DigitalOut powerpin(PA_8); // GPIO pin
jackclar 4:eb81ef9e1621 11 BufferedSerial pc(SERIAL_TX, SERIAL_RX);
jackclar 4:eb81ef9e1621 12 BufferedSerial device(PA_9, PA_10);
fanbsun 0:9a45e4f07b10 13
fanbsun 0:9a45e4f07b10 14 // Selects SDA as I2C1_SDA on pin PB_7
fanbsun 0:9a45e4f07b10 15 // Selects SCL on I2C1_SCL on pin PB_6
fanbsun 0:9a45e4f07b10 16 // The I2C address of the pressure sensor is fixed at 0x60.
fanbsun 0:9a45e4f07b10 17 MPL3115A2 pressure_sensor(PB_7,PB_6,0x60);
jackclar 2:c322c1331eaa 18 void mpl3115_reg_print(int start, int length); // prototype
fanbsun 0:9a45e4f07b10 19
fanbsun 0:9a45e4f07b10 20 int main() {
jackclar 2:c322c1331eaa 21 int8_t a;
jackclar 2:c322c1331eaa 22 uint8_t id;
fanbsun 0:9a45e4f07b10 23 double p, t;
jackclar 2:c322c1331eaa 24 double v , s;
fanbsun 0:9a45e4f07b10 25 int cnt = 0;
fanbsun 0:9a45e4f07b10 26 myled = 0;
jackclar 2:c322c1331eaa 27 char c;
fanbsun 0:9a45e4f07b10 28 powerpin = 0;
jackclar 4:eb81ef9e1621 29 ATParser at = ATParser(device, "\r\n", 256, 2000, false);
jackclar 4:eb81ef9e1621 30 char buffer[100];
jackclar 4:eb81ef9e1621 31 pc.baud(115200);
jackclar 4:eb81ef9e1621 32 device.baud(115200);
jackclar 2:c322c1331eaa 33 double alt1 = pressure_sensor.getAltitude(), alt2; // initial alt
jackclar 4:eb81ef9e1621 34
jackclar 4:eb81ef9e1621 35 mpl3115_reg_print( 0, 0);
jackclar 4:eb81ef9e1621 36
jackclar 2:c322c1331eaa 37 while ((id=pressure_sensor.getID())!=0xC4)// wait for the sensor to connect
jackclar 2:c322c1331eaa 38 {
jackclar 2:c322c1331eaa 39 wait(1);
jackclar 2:c322c1331eaa 40 }
fanbsun 0:9a45e4f07b10 41
fanbsun 0:9a45e4f07b10 42 while(1)
fanbsun 0:9a45e4f07b10 43 {
jackclar 4:eb81ef9e1621 44 if(pc.getc() == 's') // if the GPIO pin is pulled high
jackclar 2:c322c1331eaa 45 {
jackclar 2:c322c1331eaa 46 myled != myled;
jackclar 2:c322c1331eaa 47 //turn on and off led at 1Hz
jackclar 2:c322c1331eaa 48 p=pressure_sensor.getPressure();
jackclar 2:c322c1331eaa 49 t=pressure_sensor.getTemperature();
jackclar 4:eb81ef9e1621 50 at.send("Hello");
jackclar 2:c322c1331eaa 51 }
jackclar 2:c322c1331eaa 52 else
jackclar 2:c322c1331eaa 53 {
jackclar 2:c322c1331eaa 54 myled = 0; // so we know when no data is being taken
jackclar 2:c322c1331eaa 55 }
fanbsun 0:9a45e4f07b10 56 }
fanbsun 0:9a45e4f07b10 57 }
jackclar 2:c322c1331eaa 58
jackclar 2:c322c1331eaa 59 void mpl3115_reg_print(int start, int length)
jackclar 2:c322c1331eaa 60 {
jackclar 2:c322c1331eaa 61 uint8_t i, id;
jackclar 2:c322c1331eaa 62 std::string name;
jackclar 2:c322c1331eaa 63 uint8_t temp[1];
jackclar 2:c322c1331eaa 64 id = pressure_sensor.getID();
jackclar 2:c322c1331eaa 65
jackclar 2:c322c1331eaa 66 // check start registers
jackclar 2:c322c1331eaa 67 if(start >= 0x00 && start <= 0x2D && length >= 0x00 && id == 0xC4)
jackclar 2:c322c1331eaa 68 {
jackclar 2:c322c1331eaa 69 // print all if length = 0
jackclar 2:c322c1331eaa 70 if(length == 0)
jackclar 2:c322c1331eaa 71 {
jackclar 2:c322c1331eaa 72 start = 0;
jackclar 2:c322c1331eaa 73 length = 46;
jackclar 2:c322c1331eaa 74 }
jackclar 2:c322c1331eaa 75
jackclar 2:c322c1331eaa 76 for(i = start; i < start + length; i++)
jackclar 2:c322c1331eaa 77 {
jackclar 2:c322c1331eaa 78 // make sure name is correct
jackclar 2:c322c1331eaa 79 switch(i)
jackclar 2:c322c1331eaa 80 {
jackclar 2:c322c1331eaa 81 case 0x00:
jackclar 2:c322c1331eaa 82 name = "MPL_STATUS";
jackclar 2:c322c1331eaa 83 break;
jackclar 2:c322c1331eaa 84 case 0x01:
jackclar 2:c322c1331eaa 85 name = "MPL_OUT_P_MSB";
jackclar 2:c322c1331eaa 86 break;
jackclar 2:c322c1331eaa 87 case 0x02:
jackclar 2:c322c1331eaa 88 name = "MPL_OUT_P_CSB";
jackclar 2:c322c1331eaa 89 break;
jackclar 2:c322c1331eaa 90 case 0x03:
jackclar 2:c322c1331eaa 91 name = "MPL_OUT_P_LSB";
jackclar 2:c322c1331eaa 92 break;
jackclar 2:c322c1331eaa 93 case 0x04:
jackclar 2:c322c1331eaa 94 name = "MPL_OUT_T_MSB";
jackclar 2:c322c1331eaa 95 break;
jackclar 2:c322c1331eaa 96 case 0x05:
jackclar 2:c322c1331eaa 97 name = "MPL_OUT_T_LSB";
jackclar 2:c322c1331eaa 98 break;
jackclar 2:c322c1331eaa 99 case 0x06:
jackclar 2:c322c1331eaa 100 name = "MPL_DR_STATUS";
jackclar 2:c322c1331eaa 101 break;
jackclar 2:c322c1331eaa 102 case 0x07:
jackclar 2:c322c1331eaa 103 name = "MPL_OUT_P_DELTA_MSB";
jackclar 2:c322c1331eaa 104 break;
jackclar 2:c322c1331eaa 105 case 0x08:
jackclar 2:c322c1331eaa 106 name = "MPL_OUT_P_DELTA_CSB";
jackclar 2:c322c1331eaa 107 break;
jackclar 2:c322c1331eaa 108 case 0x09:
jackclar 2:c322c1331eaa 109 name = "MPL_OUT_P_DELTA_LSB";
jackclar 2:c322c1331eaa 110 break;
jackclar 2:c322c1331eaa 111 case 0x0A:
jackclar 2:c322c1331eaa 112 name = "MPL_OUT_T_DELTA_MSB";
jackclar 2:c322c1331eaa 113 break;
jackclar 2:c322c1331eaa 114 case 0x0B:
jackclar 2:c322c1331eaa 115 name = "MPL_OUT_T_DELTA_LSB";
jackclar 2:c322c1331eaa 116 break;
jackclar 2:c322c1331eaa 117 case 0x0C:
jackclar 2:c322c1331eaa 118 name = "MPL_WHO_AM_I";
jackclar 2:c322c1331eaa 119 break;
jackclar 2:c322c1331eaa 120 case 0x0D:
jackclar 2:c322c1331eaa 121 name = "MPL_F_STATUS";
jackclar 2:c322c1331eaa 122 break;
jackclar 2:c322c1331eaa 123 case 0x0E:
jackclar 2:c322c1331eaa 124 name = "MPL_F_DATA";
jackclar 2:c322c1331eaa 125 break;
jackclar 2:c322c1331eaa 126 case 0x0F:
jackclar 2:c322c1331eaa 127 name = "MPL_F_SETUP";
jackclar 2:c322c1331eaa 128 break;
jackclar 2:c322c1331eaa 129 case 0x10:
jackclar 2:c322c1331eaa 130 name = "MPL_TIME_DLY";
jackclar 2:c322c1331eaa 131 break;
jackclar 2:c322c1331eaa 132 case 0x11:
jackclar 2:c322c1331eaa 133 name = "MPL_SYSMOD";
jackclar 2:c322c1331eaa 134 break;
jackclar 2:c322c1331eaa 135 case 0x12:
jackclar 2:c322c1331eaa 136 name = "MPL_INT_SOURCE";
jackclar 2:c322c1331eaa 137 break;
jackclar 2:c322c1331eaa 138 case 0x13:
jackclar 2:c322c1331eaa 139 name = "MPL_PT_DATA_CFG";
jackclar 2:c322c1331eaa 140 break;
jackclar 2:c322c1331eaa 141 case 0x14:
jackclar 2:c322c1331eaa 142 name = "MPL_BAR_IN_MSB";
jackclar 2:c322c1331eaa 143 break;
jackclar 2:c322c1331eaa 144 case 0x15:
jackclar 2:c322c1331eaa 145 name = "MPL_BAR_IN_LSB";
jackclar 2:c322c1331eaa 146 break;
jackclar 2:c322c1331eaa 147 case 0x16:
jackclar 2:c322c1331eaa 148 name = "MPL_P_TGT_MSB";
jackclar 2:c322c1331eaa 149 break;
jackclar 2:c322c1331eaa 150 case 0x17:
jackclar 2:c322c1331eaa 151 name = "MPL_P_TGT_LSB";
jackclar 2:c322c1331eaa 152 break;
jackclar 2:c322c1331eaa 153 case 0x18:
jackclar 2:c322c1331eaa 154 name = "MPL_T_TGT";
jackclar 2:c322c1331eaa 155 break;
jackclar 2:c322c1331eaa 156 case 0x19:
jackclar 2:c322c1331eaa 157 name = "MPL_P_WND_MSB";
jackclar 2:c322c1331eaa 158 break;
jackclar 2:c322c1331eaa 159 case 0x1A:
jackclar 2:c322c1331eaa 160 name = "MPL_P_WND_LSB";
jackclar 2:c322c1331eaa 161 break;
jackclar 2:c322c1331eaa 162 case 0x1B:
jackclar 2:c322c1331eaa 163 name = "MPL_T_WND";
jackclar 2:c322c1331eaa 164 break;
jackclar 2:c322c1331eaa 165 case 0x1C:
jackclar 2:c322c1331eaa 166 name = "MPL_P_MIN_MSB";
jackclar 2:c322c1331eaa 167 break;
jackclar 2:c322c1331eaa 168 case 0x1D:
jackclar 2:c322c1331eaa 169 name = "MPL_P_MIN_CSB";
jackclar 2:c322c1331eaa 170 break;
jackclar 2:c322c1331eaa 171 case 0x1E:
jackclar 2:c322c1331eaa 172 name = "MPL_P_MIN_LSB";
jackclar 2:c322c1331eaa 173 break;
jackclar 2:c322c1331eaa 174 case 0x1F:
jackclar 2:c322c1331eaa 175 name = "MPL_T_MIN_MSB";
jackclar 2:c322c1331eaa 176 break;
jackclar 2:c322c1331eaa 177 case 0x20:
jackclar 2:c322c1331eaa 178 name = "MPL_T_MIN_LSB";
jackclar 2:c322c1331eaa 179 break;
jackclar 2:c322c1331eaa 180 case 0x21:
jackclar 2:c322c1331eaa 181 name = "MPL_P_MAX_MSB";
jackclar 2:c322c1331eaa 182 break;
jackclar 2:c322c1331eaa 183 case 0x22:
jackclar 2:c322c1331eaa 184 name = "MPL_P_MAX_CSB";
jackclar 2:c322c1331eaa 185 break;
jackclar 2:c322c1331eaa 186 case 0x23:
jackclar 2:c322c1331eaa 187 name = "MPL_P_MAX_LSB";
jackclar 2:c322c1331eaa 188 break;
jackclar 2:c322c1331eaa 189 case 0x24:
jackclar 2:c322c1331eaa 190 name = "MPL_T_MAX_MSB";
jackclar 2:c322c1331eaa 191 break;
jackclar 2:c322c1331eaa 192 case 0x25:
jackclar 2:c322c1331eaa 193 name = "MPL_T_MAX_LSB";
jackclar 2:c322c1331eaa 194 break;
jackclar 2:c322c1331eaa 195 case 0x26:
jackclar 2:c322c1331eaa 196 name = "MPL_CTRL_REG1";
jackclar 2:c322c1331eaa 197 break;
jackclar 2:c322c1331eaa 198 case 0x27:
jackclar 2:c322c1331eaa 199 name = "MPL_CTRL_REG2";
jackclar 2:c322c1331eaa 200 break;
jackclar 2:c322c1331eaa 201 case 0x28:
jackclar 2:c322c1331eaa 202 name = "MPL_CTRL_REG3";
jackclar 2:c322c1331eaa 203 break;
jackclar 2:c322c1331eaa 204 case 0x29:
jackclar 2:c322c1331eaa 205 name = "MPL_CTRL_REG4";
jackclar 2:c322c1331eaa 206 break;
jackclar 2:c322c1331eaa 207 case 0x2A:
jackclar 2:c322c1331eaa 208 name = "MPL_CTRL_REG5";
jackclar 2:c322c1331eaa 209 break;
jackclar 2:c322c1331eaa 210 case 0x2B:
jackclar 2:c322c1331eaa 211 name = "MPL_OFF_P";
jackclar 2:c322c1331eaa 212 break;
jackclar 2:c322c1331eaa 213 case 0x2C:
jackclar 2:c322c1331eaa 214 name = "MPL_OFF_T";
jackclar 2:c322c1331eaa 215 break;
jackclar 2:c322c1331eaa 216 case 0x2D:
jackclar 2:c322c1331eaa 217 name = "MPL_OFF_h";
jackclar 2:c322c1331eaa 218 break;
jackclar 2:c322c1331eaa 219 }
jackclar 2:c322c1331eaa 220 // boy I do love switch statments
jackclar 2:c322c1331eaa 221 pressure_sensor.readRegs(i, temp, 1);
jackclar 2:c322c1331eaa 222 pc.printf("0x%x: %s=0x%x\n\r", i, name, temp[0]);
jackclar 2:c322c1331eaa 223 // actually print the contents of the register
jackclar 2:c322c1331eaa 224 }
jackclar 2:c322c1331eaa 225
jackclar 2:c322c1331eaa 226 }
jackclar 2:c322c1331eaa 227 }