Darley Gonzalez
/
I2C_Slave
Programa
main.cpp
- Committer:
- darley_gonzalez
- Date:
- 2021-03-02
- Revision:
- 0:782b008e3b3a
File content as of revision 0:782b008e3b3a:
#include "MMA8451Q.h" #include "mbed.h" #if defined(TARGET_KL25Z) || defined(TARGET_KL46Z) PinName const SDA = PTE25; PinName const SCL = PTE24; //pines acelerometro #elif defined(TARGET_KL05Z) PinName const SDA = PTB4; PinName const SCL = PTB3; #elif defined(TARGET_K20D50M) PinName const SDA = PTB1; PinName const SCL = PTB0; #else #error TARGET NOT DEFINED #endif #define MMA8451_I2C_ADDRESS (0x1d << 1) I2CSlave slave(PTE0, PTE1); MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); PwmOut rled(D3); PwmOut gled(D4); PwmOut bled(D5); Serial pc(USBTX, USBRX); DigitalOut led1(LED2); float datos() { float x, y, z; x = abs(acc.getAccX()); y = abs(acc.getAccY()); z = abs(acc.getAccZ()); rled = 1.0f - x; gled = 1.0f - y; bled = 1.0f - z; wait_us(100000); return y; // printf("X: %f, Y: %f, Z: %f\n", x,y,z); } int main(void) { MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); PwmOut rled(D3); PwmOut gled(D4); PwmOut bled(D5); char buf[13]; //recibir datos para guardar en un buffer printf("MMA8451 ID: %d\n", acc.getWhoAmI()); //identifica que el sensor esta en funcionamiento en serial slave.address(0xA0); //10100000 while (true) { // 10 0111 110 0100 int i = slave.receive(); switch (i) { case I2CSlave::WriteAddressed: slave.read(buf, 13); // sprintf(buf, "%f\n", datos); float x, y, z; //enviar datos de acelerometro x = abs(acc.getAccX()); y = abs(acc.getAccY()); z = abs(acc.getAccZ()); sprintf(buf,"%f%f%f\n",x,y,z); pc.printf("%f%f%f\n",x,y,z); printf("%s\n", buf); slave.write(buf, 13); led1 = !led1; break; //rompe el ciclo y reinicia el buffer } for (int i = 0; i < 10; i++) { buf[i] = 0; // Clear buffer } } }