report
Dependencies: ADXL362 Lab7 mbed
Diff: main.cpp
- Revision:
- 7:ff64fb98ac1b
- Parent:
- 3:5f7286858dd0
--- a/main.cpp Fri Feb 23 17:41:03 2018 +0000 +++ b/main.cpp Fri Mar 09 17:25:32 2018 +0000 @@ -1,10 +1,29 @@ #include "mbed.h" #include "ADXL362.h" +#include "MPL3115A2.h" #include <stdio.h> #include <stdlib.h> +Serial pc(SERIAL_TX, SERIAL_RX); DigitalOut myled(LED1); ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1); +MPL3115A2 pressure_sensor(PB_7,PB_6,0x60); +InterruptIn event(PA_4); + +char *arr[] = { + "MPL_STATUS","MPL_OUT_P_MSB", "MPL_OUT_P_CSB","MPL_OUT_P_LSB","MPL_OUT_P_LSB", + "MPL_OUT_T_LSB","MPL_DR_STATUS","MPL_OUT_P_DELTA_MSB","MPL_OUT_P_DELTA_MSB", + "MPL_OUT_P_DELTA_LSB","MPL_OUT_T_DELTA_MSB","MPL_OUT_T_DELTA_LSB", + "MPL_WHO_AM_I","MPL_F_STATUS","MPL_F_DATA","MPL_F_SETUP","MPL_TIME_DLY", + "MPL_SYSMOD","MPL_INT_SOURCE","MPL_PT_DATA_CFG","MPL_BAR_IN_MSB", + "MPL_BAR_IN_LSB","MPL_P_TGT_MSB","MPL_P_TGT_LSB","MPL_T_TGT","MPL_P_WND_MSB", + "MPL_P_WND_LSB","MPL_T_WND","MPL_P_MIN_MSB","MPL_P_MIN_CSB","MPL_P_MIN_LSB", + "MPL_T_MIN_MSB", "MPL_T_MIN_LSB", "MPL_P_MAX_MSB", "MPL_P_MAX_CSB", + "MPL_P_MAX_LSB","MPL_T_MAX_MSB","MPL_T_MAX_LSB","MPL_CTRL_REG1", + "MPL_CTRL_REG2","MPL_CTRL_REG3","MPL_CTRL_REG4","MPL_CTRL_REG5", + "MPL_OFF_P","MPL_OFF_T","MPL_OFF_H" + }; + int adxl362_reg_print(int start, int length) { int rvalue = 0; @@ -324,7 +343,99 @@ return 0; } +int mpl3115_reg_print(int start, int length){ + + uint8_t id; + + if ((start < 0) || (start > 45)) { + pc.printf("break 1 \n\r"); + return -1; + } + if (length < 0) { + pc.printf("break 2 \n\r"); + return -1; + } + id = pressure_sensor.getID(); + if (id!=0xC4) { + pc.printf("break 3 \n\r"); + return -1; + } + + uint8_t a[45]; + + pressure_sensor.readRegs(start, a, length); + + int i = 0; + for (i=0;i<length;i++){ + pc.printf("0x%X: %s is 0x%X \n\r",i, arr[i], a[i]); + } + return 0; + +} + +int printA(double* ar1, double* ar2, int start, int end){ + int i = 0; + for (i = start; i < end; i++){ + pc.printf("value at %d : temp: %f pressure: %f \n\r",i,ar1[i], ar2[i]); + } + return 0; +} + int main() { + int arraySize = 250; //approximately the time it takes to ride one elevator floors 1-6 + double altitudeReading[arraySize]; + double tempReading[arraySize]; + int i = 0, j = 0; + + j = mpl3115_reg_print(0, 45); + + for (i = 0; i < arraySize; i++) { + altitudeReading[i] = -1; + } + for(j = 0; j < arraySize; j++) { + tempReading[j] = -1; + } + i = 0; + pc.printf("reading an altitude at this point at 10hz\r\n"); + pc.printf("Enter p to print, enter s to stop: "); + while (1) { + wait_us(100); + altitudeReading[i] = pressure_sensor.getAltitude(); + i++; + tempReading[j] = pressure_sensor.getTemperature(); + j++; + if (i > arraySize) { + i = 0; + } + if( j > arraySize) { + j = 0; + } + if (pc.readable()) { + char c = pc.getc(); + pc.printf("we read a char, it was %c\r\n",c); + if (c == 'p') { //press p to show what is currently in the array + pc.printf("read a p\r\n"); + int h = 0; + for (h = 0; h < arraySize; h++) { + pc.printf("temperature = %f, altitude = %f\r\n", tempReading[h], altitudeReading[h]); + } + } + if( c == 's') { //press s to get it to stop reading + break; + } + } + + } + + + + + + + + + /* Lab 6 work + wait_ms(600); // we need to wait at least 500ms after ADXL362 reset adxl362.set_mode(ADXL362::MEASUREMENT); int8_t x,y,z; @@ -352,5 +463,6 @@ printf("number of knocks detected: %d\n\r",blink_c); blink(); } - } + } */ + } \ No newline at end of file