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@5:f4d8d65ab7d5, 2020-03-05 (annotated)
- Committer:
- sebbarpar
- Date:
- Thu Mar 05 11:04:02 2020 +0000
- Revision:
- 5:f4d8d65ab7d5
- Parent:
- 4:72b8fb7423dd
- Child:
- 6:a76dc8c92cea
Lab4 Part1;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| WilliamMarshQMUL | 0:a1caba5c4e48 | 1 | #include "mbed.h" |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 2 | #include "MMA8451Q.h" |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 3 | |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 4 | PinName const SDA = PTE25; |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 5 | PinName const SCL = PTE24; |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 6 | |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 7 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
| sebbarpar | 5:f4d8d65ab7d5 | 8 | enum state { intermediate, flat, over, down, up, left, right}; |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 9 | int main(void) |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 10 | { |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 11 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); |
| sebbarpar | 5:f4d8d65ab7d5 | 12 | DigitalOut rled(LED1,1); |
| sebbarpar | 5:f4d8d65ab7d5 | 13 | DigitalOut gled(LED2,1); |
| sebbarpar | 5:f4d8d65ab7d5 | 14 | DigitalOut bled(LED3,1); |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 15 | Serial pc(USBTX, USBRX); // tx, rx |
| sebbarpar | 5:f4d8d65ab7d5 | 16 | int state; |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 17 | |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 18 | pc.printf("MMA8451 ID: %d\n", acc.getWhoAmI()); |
| sebbarpar | 5:f4d8d65ab7d5 | 19 | state=intermediate; |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 20 | while (true) { |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 21 | float x, y, z; |
| sebbarpar | 5:f4d8d65ab7d5 | 22 | |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 23 | x = acc.getAccX(); |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 24 | y = acc.getAccY(); |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 25 | z = acc.getAccZ(); |
| sebbarpar | 5:f4d8d65ab7d5 | 26 | switch (state){ |
| sebbarpar | 5:f4d8d65ab7d5 | 27 | case intermediate: |
| sebbarpar | 5:f4d8d65ab7d5 | 28 | rled=1; |
| sebbarpar | 5:f4d8d65ab7d5 | 29 | gled=1; |
| sebbarpar | 5:f4d8d65ab7d5 | 30 | bled=1; |
| sebbarpar | 5:f4d8d65ab7d5 | 31 | if (z>0.9) {state=flat; pc.printf("Flat");} |
| sebbarpar | 5:f4d8d65ab7d5 | 32 | if (z<-0.9) {state=over; pc.printf("Over");} |
| sebbarpar | 5:f4d8d65ab7d5 | 33 | if (x>0.9) {state=down; pc.printf("Down");} |
| sebbarpar | 5:f4d8d65ab7d5 | 34 | if (x<-0.9) {state=up; pc.printf("Up");} |
| sebbarpar | 5:f4d8d65ab7d5 | 35 | if (y>0.9) {state=left; pc.printf("Left");} |
| sebbarpar | 5:f4d8d65ab7d5 | 36 | if (y<-0.9) {state=right; pc.printf("Right");} |
| sebbarpar | 5:f4d8d65ab7d5 | 37 | break; |
| sebbarpar | 5:f4d8d65ab7d5 | 38 | |
| sebbarpar | 5:f4d8d65ab7d5 | 39 | case flat: |
| sebbarpar | 5:f4d8d65ab7d5 | 40 | rled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 41 | if (z<0.8) state=intermediate; |
| sebbarpar | 5:f4d8d65ab7d5 | 42 | break; |
| sebbarpar | 5:f4d8d65ab7d5 | 43 | |
| sebbarpar | 5:f4d8d65ab7d5 | 44 | case over: |
| sebbarpar | 5:f4d8d65ab7d5 | 45 | gled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 46 | if (z>-0.8) state=intermediate; |
| sebbarpar | 5:f4d8d65ab7d5 | 47 | break; |
| sebbarpar | 5:f4d8d65ab7d5 | 48 | |
| sebbarpar | 5:f4d8d65ab7d5 | 49 | case down: |
| sebbarpar | 5:f4d8d65ab7d5 | 50 | bled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 51 | if (x<0.8) state=intermediate; |
| sebbarpar | 5:f4d8d65ab7d5 | 52 | break; |
| sebbarpar | 5:f4d8d65ab7d5 | 53 | |
| sebbarpar | 5:f4d8d65ab7d5 | 54 | case up: |
| sebbarpar | 5:f4d8d65ab7d5 | 55 | rled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 56 | gled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 57 | if (x>-0.8) state=intermediate; |
| sebbarpar | 5:f4d8d65ab7d5 | 58 | break; |
| sebbarpar | 5:f4d8d65ab7d5 | 59 | |
| sebbarpar | 5:f4d8d65ab7d5 | 60 | case left: |
| sebbarpar | 5:f4d8d65ab7d5 | 61 | gled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 62 | bled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 63 | if (y<0.8) state=intermediate; |
| sebbarpar | 5:f4d8d65ab7d5 | 64 | break; |
| sebbarpar | 5:f4d8d65ab7d5 | 65 | |
| sebbarpar | 5:f4d8d65ab7d5 | 66 | case right: |
| sebbarpar | 5:f4d8d65ab7d5 | 67 | rled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 68 | bled=0; |
| sebbarpar | 5:f4d8d65ab7d5 | 69 | if (y>-0.8) state=intermediate; |
| sebbarpar | 5:f4d8d65ab7d5 | 70 | break; |
| sebbarpar | 5:f4d8d65ab7d5 | 71 | } |
| WilliamMarshQMUL | 4:72b8fb7423dd | 72 | ThisThread::sleep_for(300); // wait(0.3); |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 73 | pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n", x, y, z); |
| sebbarpar | 5:f4d8d65ab7d5 | 74 | |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 75 | } |
| WilliamMarshQMUL | 0:a1caba5c4e48 | 76 | } |