11
Dependencies: ADXL362 ATParser MPL3115A2 mbed
Fork of Lab7 by
main.cpp@1:2630bf98c8fe, 2018-03-06 (annotated)
- Committer:
- fanbsun
- Date:
- Tue Mar 06 15:59:43 2018 +0000
- Revision:
- 1:2630bf98c8fe
- Parent:
- 0:9a45e4f07b10
1
Who changed what in which revision?
User | Revision | Line number | New 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 |