11

Dependencies:   ADXL362 ATParser MPL3115A2 mbed

Fork of Lab7 by CPS-Lab*

Committer:
fanbsun
Date:
Tue Mar 06 15:59:43 2018 +0000
Revision:
1:2630bf98c8fe
Parent:
0:9a45e4f07b10
1

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 "ADXL362.h"
fanbsun 0:9a45e4f07b10 4 #include <string>
fanbsun 0:9a45e4f07b10 5 #include <math.h>
fanbsun 0:9a45e4f07b10 6
fanbsun 0:9a45e4f07b10 7
fanbsun 0:9a45e4f07b10 8 ADXL362 ADXL362(PA_0,PA_7,PA_6,PA_1);
fanbsun 0:9a45e4f07b10 9 Serial pc(SERIAL_TX, SERIAL_RX);
fanbsun 0:9a45e4f07b10 10 DigitalOut myled(LED1);
fanbsun 0:9a45e4f07b10 11 DigitalOut powerpin(PA_8);
fanbsun 0:9a45e4f07b10 12
fanbsun 0:9a45e4f07b10 13 // Selects SDA as I2C1_SDA on pin PB_7
fanbsun 0:9a45e4f07b10 14 // Selects SCL on I2C1_SCL on pin PB_6
fanbsun 0:9a45e4f07b10 15 // The I2C address of the pressure sensor is fixed at 0x60.
fanbsun 0:9a45e4f07b10 16 MPL3115A2 pressure_sensor(PB_7,PB_6,0x60);
fanbsun 0:9a45e4f07b10 17
fanbsun 0:9a45e4f07b10 18 int main() {
fanbsun 1:2630bf98c8fe 19 int8_t a;
fanbsun 0:9a45e4f07b10 20 double p, t;
fanbsun 0:9a45e4f07b10 21 double v = 0.0;
fanbsun 0:9a45e4f07b10 22 int cnt = 0;
fanbsun 0:9a45e4f07b10 23 myled = 0;
fanbsun 0:9a45e4f07b10 24 powerpin = 0;
fanbsun 1:2630bf98c8fe 25 char buffer[32];
fanbsun 1:2630bf98c8fe 26 int i;
fanbsun 1:2630bf98c8fe 27 char c;
fanbsun 1:2630bf98c8fe 28 char *strs[4];
fanbsun 1:2630bf98c8fe 29
fanbsun 1:2630bf98c8fe 30 pc.printf("Board is Running\n\r");
fanbsun 0:9a45e4f07b10 31
fanbsun 0:9a45e4f07b10 32 wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
fanbsun 0:9a45e4f07b10 33 ADXL362.set_mode(ADXL362::MEASUREMENT);
fanbsun 0:9a45e4f07b10 34
fanbsun 0:9a45e4f07b10 35 while(1)
fanbsun 0:9a45e4f07b10 36 {
fanbsun 1:2630bf98c8fe 37 i = 0;
fanbsun 1:2630bf98c8fe 38 pc.printf("cps%% "); // print the line prefix
fanbsun 1:2630bf98c8fe 39
fanbsun 1:2630bf98c8fe 40 while(1)
fanbsun 1:2630bf98c8fe 41 {
fanbsun 1:2630bf98c8fe 42 c = pc.getc(); // grab input from serial
fanbsun 1:2630bf98c8fe 43 pc.putc(c);
fanbsun 1:2630bf98c8fe 44
fanbsun 1:2630bf98c8fe 45 if(c == 0x0d) // stop if return is pressed
fanbsun 1:2630bf98c8fe 46 {
fanbsun 1:2630bf98c8fe 47 break;
fanbsun 1:2630bf98c8fe 48 }
fanbsun 1:2630bf98c8fe 49 buffer[i] = c; // write the individual characters to buffer.
fanbsun 1:2630bf98c8fe 50 i++;
fanbsun 1:2630bf98c8fe 51 }
fanbsun 1:2630bf98c8fe 52
fanbsun 1:2630bf98c8fe 53 strs[0] = strtok(buffer, " ");
fanbsun 1:2630bf98c8fe 54 strs[1] = strtok(NULL, " ");
fanbsun 1:2630bf98c8fe 55 strs[2] = strtok(NULL, " ");
fanbsun 0:9a45e4f07b10 56
fanbsun 0:9a45e4f07b10 57
fanbsun 1:2630bf98c8fe 58 if (strcmp(strs[0], "p") == 0)
fanbsun 1:2630bf98c8fe 59 {
fanbsun 1:2630bf98c8fe 60
fanbsun 1:2630bf98c8fe 61 while(1)
fanbsun 1:2630bf98c8fe 62 {
fanbsun 1:2630bf98c8fe 63 if(powerpin)
fanbsun 1:2630bf98c8fe 64 {
fanbsun 1:2630bf98c8fe 65 myled = 1;
fanbsun 1:2630bf98c8fe 66 p=pressure_sensor.getPressure();
fanbsun 1:2630bf98c8fe 67 t=pressure_sensor.getTemperature();
fanbsun 1:2630bf98c8fe 68
fanbsun 1:2630bf98c8fe 69 pc.printf("temp_%d = %f C ; pressure_%d = %f \n\r Pa",cnt,t,cnt,p);
fanbsun 1:2630bf98c8fe 70 cnt++;
fanbsun 0:9a45e4f07b10 71
fanbsun 1:2630bf98c8fe 72 wait_ms(100);
fanbsun 1:2630bf98c8fe 73 a=ADXL362.scanz_u8();
fanbsun 1:2630bf98c8fe 74
fanbsun 1:2630bf98c8fe 75 v = v + double(a-71) * 0.1;
fanbsun 1:2630bf98c8fe 76 pc.printf(" velocity = %f \n\r",v);
fanbsun 1:2630bf98c8fe 77 }
fanbsun 1:2630bf98c8fe 78 else
fanbsun 1:2630bf98c8fe 79 {
fanbsun 0:9a45e4f07b10 80 myled = 0;
fanbsun 1:2630bf98c8fe 81 }
fanbsun 1:2630bf98c8fe 82 }
fanbsun 1:2630bf98c8fe 83 }
fanbsun 1:2630bf98c8fe 84 else
fanbsun 1:2630bf98c8fe 85 {
fanbsun 1:2630bf98c8fe 86 pc.printf("\n\rERR\n\r"); // Error message
fanbsun 1:2630bf98c8fe 87 }
fanbsun 1:2630bf98c8fe 88
fanbsun 0:9a45e4f07b10 89 }
fanbsun 0:9a45e4f07b10 90 }
fanbsun 0:9a45e4f07b10 91