Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
Generated on Thu Jul 14 2022 01:28:56 by
1.7.2