CPS-Lab / Mbed 2 deprecated Lab7

Dependencies:   Lab7 mbed

Dependents:   Lab7

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* 
00002  * ENGR E 210 - CYBER PHYSICAL SYSTEMS (DIGITAL SYSTEMS)
00003  * LAB 7 - ELEVATOR ALTIMETER
00004  * CODE BY KRISH HEMANT MHATRE AND ETHAN ZHANG
00005  */
00006 
00007 #include "mbed.h"
00008 #include "MPL3115A2.h"
00009 
00010 Serial pc(SERIAL_TX, SERIAL_RX);
00011 DigitalOut myled(LED1);
00012 
00013 // Selects SDA as I2C1_SDA on pin PB_7
00014 // Selects SCL on I2C1_SCL on pin PB_6
00015 // The I2C address of the pressure sensor is fixed at 0x60. 
00016 MPL3115A2 pressure_sensor(PB_7,PB_6,0x60);
00017 int mpl3115_reg_print(int start, int length);
00018 
00019 int main() {
00020     uint8_t id;
00021     pc.printf("\n\r*** MPL3115A2 Pressure/Temperature Sensor Test *** \n\r");
00022     while ((id=pressure_sensor.getID())!=0xC4) {
00023         pc.printf("Status read unsuccessful: Value = 0x%02x\n\r",id);
00024         pc.printf("Check wiring to the pressure sensor\n\r",id);
00025         pc.printf("Retesting for correct ID in 1 second...\n\r");
00026         wait(1);
00027     }
00028     pc.printf("Status read successfully: Value = 0x%02x\n\r",id);
00029     pc.printf("***1hz readings from the pressure sensor***\n\r");
00030     while(1) 
00031     {
00032         float distanceA = pressure_sensor.getAltitude();
00033         wait(1);
00034         myled = 1;
00035         float distanceB = pressure_sensor.getAltitude();
00036         float velocity;
00037         if(distanceA>distanceB)
00038         {
00039            velocity = distanceA-distanceB;
00040         }
00041         else
00042         {
00043            velocity = distanceB-distanceA;
00044         }
00045         pc.printf("Velocity = %f m/s\n\r", velocity);
00046         pc.printf("TEMPERATURE = %2.2f C     PRESSURE = %2.2f hPa\n\r", pressure_sensor.getTemperature(), pressure_sensor.getPressure());
00047         myled = 0;
00048         wait(1);
00049     }
00050     
00051     
00052     //int I = mpl3115_reg_print(0, 50);
00053 }
00054 
00055 
00056 int mpl3115_reg_print(int start, int length) {
00057     int return_value = 0;
00058     char *text = "                                  ";
00059     uint8_t value;
00060     int address;
00061     if(start < 0x00 || start > 0x2E)
00062     {
00063         return_value = -1;  
00064         exit(0); 
00065     } 
00066     else
00067     {
00068     int i = start;
00069     for(i = start; i < length; i++) 
00070     {
00071         address = i;
00072         if(i == 0)
00073         {
00074             text = "STATUS";   
00075             pressure_sensor.readRegs(address, &value, 8);
00076         }
00077         else if(i == 1)
00078         {
00079             text = "OUT_P_MSB";   
00080             pressure_sensor.readRegs(address, &value, 8);
00081         }
00082         else if(i == 2)
00083         {
00084             text = "OUT_P_CSB";   
00085             pressure_sensor.readRegs(address, &value, 8);
00086         }
00087         else if(i == 3)
00088         {
00089             text = "OUT_P_LSB";   
00090             pressure_sensor.readRegs(address, &value, 8);
00091         }
00092         else if(i == 4)
00093         {
00094             text = "OUT_T_MSB";   
00095             pressure_sensor.readRegs(address, &value, 8);
00096         }
00097         else if(i == 5)
00098         {
00099             text = "OUT_T_LSB";   
00100             pressure_sensor.readRegs(address, &value, 8);
00101         }
00102         else if(i == 6)
00103         {
00104             text = "DR_STATUS";   
00105             pressure_sensor.readRegs(address, &value, 8);
00106         }
00107         else if(i == 7)
00108         {
00109             text = "OUT_P_DELTA_MSB";   
00110             pressure_sensor.readRegs(address, &value, 8);
00111         }
00112         else if(i == 8)
00113         {
00114             text = "OUT_P_DELTA_CSB";   
00115             pressure_sensor.readRegs(address, &value, 8);
00116         }
00117         else if(i == 9)
00118         {
00119             text = "OUT_P_DELTA_LSB";   
00120             pressure_sensor.readRegs(address, &value, 8);
00121         }
00122         else if(i == 10)
00123         {
00124             text = "OUT_T_DLETA_MSB";   
00125             pressure_sensor.readRegs(address, &value, 8);
00126         }
00127         else if(i == 11)
00128         {
00129             text = "OUT_T_DELTA_LSB";   
00130             pressure_sensor.readRegs(address, &value, 8);
00131         }
00132         else if(i == 12)
00133         {
00134             text = "WHO_AM_I";   
00135             pressure_sensor.readRegs(address, &value, 8);
00136         }
00137         else if(i == 13)
00138         {
00139             text = "F_STATUS";   
00140             pressure_sensor.readRegs(address, &value, 8);
00141         }
00142         else if(i == 14)
00143         {
00144             text = "F_DATA";   
00145             pressure_sensor.readRegs(address, &value, 8);
00146         }
00147         else if(i == 15)
00148         {
00149             text = "F_SETUP";   
00150             pressure_sensor.readRegs(address, &value, 8);
00151         }
00152         else if(i == 16)
00153         {
00154             text = "TIME_DLY";   
00155             pressure_sensor.readRegs(address, &value, 8);
00156         }
00157         else if(i == 17)
00158         {
00159             text = "SYSMOD";   
00160             pressure_sensor.readRegs(address, &value, 8);
00161         }
00162         else if(i == 18)
00163         {
00164             text = "INT_SOURCE";   
00165             pressure_sensor.readRegs(address, &value, 8);
00166         }
00167         else if(i == 19)
00168         {
00169             text = "PT_DATA_CFG";   
00170             pressure_sensor.readRegs(address, &value, 8);
00171         }
00172         else if(i == 20)
00173         {
00174             text = "BAR_IN_MSB";   
00175             pressure_sensor.readRegs(address, &value, 8);
00176         }
00177         else if(i == 21)
00178         {
00179             text = "BAR_IN_LSB";   
00180             pressure_sensor.readRegs(address, &value, 8);
00181         }
00182         else if(i == 22)
00183         {
00184             text = "P_TGT_MSB";   
00185             pressure_sensor.readRegs(address, &value, 8);
00186         }
00187         else if(i == 23)
00188         {
00189             text = "P_TGT_LSB";   
00190             pressure_sensor.readRegs(address, &value, 8);
00191         }
00192         else if(i == 24)
00193         {
00194             text = "T_TGT";   
00195             pressure_sensor.readRegs(address, &value, 8);
00196         }
00197         else if(i == 25)
00198         {
00199             text = "P_WND_MSB";   
00200             pressure_sensor.readRegs(address, &value, 8);
00201         }
00202         else if(i == 26)
00203         {
00204             text = "P_WND_LSB";   
00205             pressure_sensor.readRegs(address, &value, 8);
00206         }
00207         else if(i == 27)
00208         {
00209             text = "T_WND";   
00210             pressure_sensor.readRegs(address, &value, 8);
00211         }
00212         else if(i == 28)
00213         {
00214             text = "P_MIN_MSB";   
00215             pressure_sensor.readRegs(address, &value, 8);
00216         }
00217         else if(i == 29)
00218         {
00219             text = "P_MIN_CSB";   
00220             pressure_sensor.readRegs(address, &value, 8);
00221         }
00222         else if(i == 30)
00223         {
00224             text = "P_MIN_MSB";   
00225             pressure_sensor.readRegs(address, &value, 8);
00226         }
00227         else if(i == 31)
00228         {
00229             text = "T_MIN_MSB";   
00230             pressure_sensor.readRegs(address, &value, 8);
00231         }
00232         else if(i == 32)
00233         {
00234             text = "T_MIN_LSB";   
00235             pressure_sensor.readRegs(address, &value, 8);
00236         }
00237         else if(i == 33)
00238         {
00239             text = "P_MAX_MSB";   
00240             pressure_sensor.readRegs(address, &value, 8);
00241         }
00242         else if(i == 34)
00243         {
00244             text = "P_MAX_CSB";   
00245             pressure_sensor.readRegs(address, &value, 8);
00246         }
00247         else if(i == 35)
00248         {
00249             text = "P_MAX_MSB";   
00250             pressure_sensor.readRegs(address, &value, 8);
00251         }
00252         else if(i == 36)
00253         {
00254             text = "T_MAX_MSB";   
00255             pressure_sensor.readRegs(address, &value, 8);
00256         }
00257         else if(i == 37)
00258         {
00259             text = "T_MAX_LSB";   
00260             pressure_sensor.readRegs(address, &value, 8);
00261         }
00262        else if(i == 38)
00263         {
00264             text = "CTRL_REG1";   
00265             pressure_sensor.readRegs(address, &value, 8);
00266         }
00267         else if(i == 39)
00268         {
00269             text = "CTRL_REG2";   
00270             pressure_sensor.readRegs(address, &value, 8);
00271         }
00272         else if(i == 40)
00273         {
00274             text = "CTRL_REG3";   
00275             pressure_sensor.readRegs(address, &value, 8);
00276         }
00277         else if(i == 41)
00278         {
00279             text = "CTRL_REG4";   
00280             pressure_sensor.readRegs(address, &value, 8);
00281         }
00282         else if(i == 42)
00283         {
00284             text = "CTRL_REG5";   
00285             pressure_sensor.readRegs(address, &value, 8);
00286         }
00287         else if(i == 43)
00288         {
00289             text = "OFF_P";   
00290             pressure_sensor.readRegs(address, &value, 8);
00291         }
00292         else if(i == 44)
00293         {
00294             text = "OFF_T";   
00295             pressure_sensor.readRegs(address, &value, 8);
00296         }
00297         else if(i == 45)
00298         {
00299             text = "OFF_H";   
00300             pressure_sensor.readRegs(address, &value, 8);
00301         }
00302         else
00303         {
00304             text = "NULL";
00305             value = NULL;
00306             
00307         }
00308         
00309         if(i <= 46 && text != "NULL")
00310         {
00311            printf("0x%2.2hhX: %s=0x%2.2hhX \n\r", address, text, value);
00312         }
00313     }
00314  }   
00315     return return_value;
00316 }
00317