código da seta v1
Dependencies: MMA8451Q_ext mbed
main.cpp@0:c02ad4dd2e3f, 2017-06-27 (annotated)
- Committer:
- marcosvtt
- Date:
- Tue Jun 27 04:55:53 2017 +0000
- Revision:
- 0:c02ad4dd2e3f
c?digo da seta;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcosvtt | 0:c02ad4dd2e3f | 1 | #include "mbed.h" |
marcosvtt | 0:c02ad4dd2e3f | 2 | #include "MMA8451Q.h" |
marcosvtt | 0:c02ad4dd2e3f | 3 | |
marcosvtt | 0:c02ad4dd2e3f | 4 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
marcosvtt | 0:c02ad4dd2e3f | 5 | |
marcosvtt | 0:c02ad4dd2e3f | 6 | Serial pc(USBTX, USBRX); |
marcosvtt | 0:c02ad4dd2e3f | 7 | MMA8451Q acelerometro(PTE25, PTE24, MMA8451_I2C_ADDRESS); |
marcosvtt | 0:c02ad4dd2e3f | 8 | |
marcosvtt | 0:c02ad4dd2e3f | 9 | DigitalOut Led_Vermelho(LED_RED); |
marcosvtt | 0:c02ad4dd2e3f | 10 | DigitalOut Led_Verde(LED_GREEN); |
marcosvtt | 0:c02ad4dd2e3f | 11 | DigitalOut Led_Azul(LED_BLUE); |
marcosvtt | 0:c02ad4dd2e3f | 12 | |
marcosvtt | 0:c02ad4dd2e3f | 13 | float max_sens_acc; // constante de ajuste de sensibilidade do acelerometro |
marcosvtt | 0:c02ad4dd2e3f | 14 | float min_sens_acc; |
marcosvtt | 0:c02ad4dd2e3f | 15 | |
marcosvtt | 0:c02ad4dd2e3f | 16 | int main(){ |
marcosvtt | 0:c02ad4dd2e3f | 17 | float d_x; |
marcosvtt | 0:c02ad4dd2e3f | 18 | float d_y; |
marcosvtt | 0:c02ad4dd2e3f | 19 | float d_z; |
marcosvtt | 0:c02ad4dd2e3f | 20 | float old_x = 0; |
marcosvtt | 0:c02ad4dd2e3f | 21 | float old_y = 0; |
marcosvtt | 0:c02ad4dd2e3f | 22 | float old_z = 0; |
marcosvtt | 0:c02ad4dd2e3f | 23 | |
marcosvtt | 0:c02ad4dd2e3f | 24 | pc.printf("Definir sensibilidade maxima:"); |
marcosvtt | 0:c02ad4dd2e3f | 25 | pc.scanf("%f", &max_sens_acc); |
marcosvtt | 0:c02ad4dd2e3f | 26 | pc.printf("Definir sensibilidade minima:"); |
marcosvtt | 0:c02ad4dd2e3f | 27 | pc.scanf("%f", &min_sens_acc); |
marcosvtt | 0:c02ad4dd2e3f | 28 | pc.printf("\nmax_sens_acc: %f\n", max_sens_acc); |
marcosvtt | 0:c02ad4dd2e3f | 29 | pc.printf("min_sens_acc: %f\n", min_sens_acc); |
marcosvtt | 0:c02ad4dd2e3f | 30 | wait(1); |
marcosvtt | 0:c02ad4dd2e3f | 31 | |
marcosvtt | 0:c02ad4dd2e3f | 32 | while(1){ |
marcosvtt | 0:c02ad4dd2e3f | 33 | d_x = abs(acelerometro.getAccX() - old_x); |
marcosvtt | 0:c02ad4dd2e3f | 34 | d_y = abs(acelerometro.getAccY() - old_y); |
marcosvtt | 0:c02ad4dd2e3f | 35 | d_z = abs(acelerometro.getAccZ() - old_z); |
marcosvtt | 0:c02ad4dd2e3f | 36 | |
marcosvtt | 0:c02ad4dd2e3f | 37 | |
marcosvtt | 0:c02ad4dd2e3f | 38 | if(d_x >= max_sens_acc) Led_Vermelho = 0; |
marcosvtt | 0:c02ad4dd2e3f | 39 | else if (d_x <= min_sens_acc) Led_Vermelho = 1; |
marcosvtt | 0:c02ad4dd2e3f | 40 | |
marcosvtt | 0:c02ad4dd2e3f | 41 | if(d_y >= max_sens_acc) Led_Verde = 0; |
marcosvtt | 0:c02ad4dd2e3f | 42 | else if(d_y <= min_sens_acc)Led_Verde = 1; |
marcosvtt | 0:c02ad4dd2e3f | 43 | |
marcosvtt | 0:c02ad4dd2e3f | 44 | if(d_z >= max_sens_acc) Led_Azul = 0; |
marcosvtt | 0:c02ad4dd2e3f | 45 | else if(d_z <= min_sens_acc) Led_Azul = 1; |
marcosvtt | 0:c02ad4dd2e3f | 46 | |
marcosvtt | 0:c02ad4dd2e3f | 47 | |
marcosvtt | 0:c02ad4dd2e3f | 48 | old_x = acelerometro.getAccX(); |
marcosvtt | 0:c02ad4dd2e3f | 49 | old_y = acelerometro.getAccY(); |
marcosvtt | 0:c02ad4dd2e3f | 50 | old_z = acelerometro.getAccZ(); |
marcosvtt | 0:c02ad4dd2e3f | 51 | |
marcosvtt | 0:c02ad4dd2e3f | 52 | pc.printf("%f | %f | %f || %f | %f | %f\n", d_x, d_y, d_z, old_x, old_y, old_z); |
marcosvtt | 0:c02ad4dd2e3f | 53 | //pc.printf("%f | %f || %f | %f\n", d_x, d_y, old_x, old_y); |
marcosvtt | 0:c02ad4dd2e3f | 54 | |
marcosvtt | 0:c02ad4dd2e3f | 55 | // wait(0.3); |
marcosvtt | 0:c02ad4dd2e3f | 56 | } |
marcosvtt | 0:c02ad4dd2e3f | 57 | } |