Programa que utiliza el acelerometro por I2C, y envia la información por comunicacion serial de los valores x, y, z.
main.cpp@0:0b798b845ac3, 2019-10-14 (annotated)
- Committer:
- marcospostemsky
- Date:
- Mon Oct 14 02:39:31 2019 +0000
- Revision:
- 0:0b798b845ac3
- Child:
- 1:bcfd1e856c37
code finished
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcospostemsky | 0:0b798b845ac3 | 1 | #include "mbed.h" |
marcospostemsky | 0:0b798b845ac3 | 2 | #include "MMA8451Q.h" |
marcospostemsky | 0:0b798b845ac3 | 3 | |
marcospostemsky | 0:0b798b845ac3 | 4 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
marcospostemsky | 0:0b798b845ac3 | 5 | PinName const SDA = PTE25; |
marcospostemsky | 0:0b798b845ac3 | 6 | PinName const SCL = PTE24; |
marcospostemsky | 0:0b798b845ac3 | 7 | #elif defined (TARGET_KL05Z) |
marcospostemsky | 0:0b798b845ac3 | 8 | PinName const SDA = PTB4; |
marcospostemsky | 0:0b798b845ac3 | 9 | PinName const SCL = PTB3; |
marcospostemsky | 0:0b798b845ac3 | 10 | #elif defined (TARGET_K20D50M) |
marcospostemsky | 0:0b798b845ac3 | 11 | PinName const SDA = PTB1; |
marcospostemsky | 0:0b798b845ac3 | 12 | PinName const SCL = PTB0; |
marcospostemsky | 0:0b798b845ac3 | 13 | #else |
marcospostemsky | 0:0b798b845ac3 | 14 | #error TARGET NOT DEFINED |
marcospostemsky | 0:0b798b845ac3 | 15 | #endif |
marcospostemsky | 0:0b798b845ac3 | 16 | |
marcospostemsky | 0:0b798b845ac3 | 17 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
marcospostemsky | 0:0b798b845ac3 | 18 | |
marcospostemsky | 0:0b798b845ac3 | 19 | Serial pc(USBTX, USBRX); |
marcospostemsky | 0:0b798b845ac3 | 20 | |
marcospostemsky | 0:0b798b845ac3 | 21 | int main(void) |
marcospostemsky | 0:0b798b845ac3 | 22 | { |
marcospostemsky | 0:0b798b845ac3 | 23 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); |
marcospostemsky | 0:0b798b845ac3 | 24 | PwmOut rled(LED2); |
marcospostemsky | 0:0b798b845ac3 | 25 | PwmOut gled(LED1); |
marcospostemsky | 0:0b798b845ac3 | 26 | PwmOut bled(LED3); |
marcospostemsky | 0:0b798b845ac3 | 27 | |
marcospostemsky | 0:0b798b845ac3 | 28 | pc.baud(115200); |
marcospostemsky | 0:0b798b845ac3 | 29 | pc.printf("Acelerometro con FRDM-K64F board.\n"); |
marcospostemsky | 0:0b798b845ac3 | 30 | |
marcospostemsky | 0:0b798b845ac3 | 31 | |
marcospostemsky | 0:0b798b845ac3 | 32 | pc.printf("El acelerometro utilizado se llama MMA8451 con ID: %d\n", acc.getWhoAmI()); |
marcospostemsky | 0:0b798b845ac3 | 33 | |
marcospostemsky | 0:0b798b845ac3 | 34 | while (true) { |
marcospostemsky | 0:0b798b845ac3 | 35 | float x, y, z; |
marcospostemsky | 0:0b798b845ac3 | 36 | x = abs(acc.getAccX()); |
marcospostemsky | 0:0b798b845ac3 | 37 | y = abs(acc.getAccY()); |
marcospostemsky | 0:0b798b845ac3 | 38 | z = abs(acc.getAccZ()); |
marcospostemsky | 0:0b798b845ac3 | 39 | rled = 1.0f - x; |
marcospostemsky | 0:0b798b845ac3 | 40 | gled = 1.0f - y; |
marcospostemsky | 0:0b798b845ac3 | 41 | bled = 1.0f - z; |
marcospostemsky | 0:0b798b845ac3 | 42 | wait(0.5f); |
marcospostemsky | 0:0b798b845ac3 | 43 | pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n", x, y, z); |
marcospostemsky | 0:0b798b845ac3 | 44 | } |
marcospostemsky | 0:0b798b845ac3 | 45 | } |