Programa que utiliza el acelerometro por I2C, y envia la información por comunicacion serial de los valores x, y, z.

Dependencies:   mbed MMA8451Q

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?

UserRevisionLine numberNew 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 }