Iván Santos
/
santos_ej1_modulo3
santos_ej1_modulo3
main.cpp@0:53639fa01e05, 2022-05-04 (annotated)
- Committer:
- sedu_santos
- Date:
- Wed May 04 19:04:32 2022 +0000
- Revision:
- 0:53639fa01e05
santos_ej1_modulo3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sedu_santos | 0:53639fa01e05 | 1 | #include "mbed.h" |
sedu_santos | 0:53639fa01e05 | 2 | |
sedu_santos | 0:53639fa01e05 | 3 | Serial pc(USBTX, USBRX); |
sedu_santos | 0:53639fa01e05 | 4 | |
sedu_santos | 0:53639fa01e05 | 5 | // Se definen la entradas analógicas |
sedu_santos | 0:53639fa01e05 | 6 | |
sedu_santos | 0:53639fa01e05 | 7 | AnalogIn dataX(A1); |
sedu_santos | 0:53639fa01e05 | 8 | AnalogIn dataY(A2); |
sedu_santos | 0:53639fa01e05 | 9 | AnalogIn dataZ(A3); |
sedu_santos | 0:53639fa01e05 | 10 | |
sedu_santos | 0:53639fa01e05 | 11 | void bucle() { |
sedu_santos | 0:53639fa01e05 | 12 | pc.baud(4800); |
sedu_santos | 0:53639fa01e05 | 13 | double x,y,z; |
sedu_santos | 0:53639fa01e05 | 14 | double x_g_value,y_g_value,z_g_value; |
sedu_santos | 0:53639fa01e05 | 15 | double roll, pitch; |
sedu_santos | 0:53639fa01e05 | 16 | while(1) { |
sedu_santos | 0:53639fa01e05 | 17 | x = dataX.read(); |
sedu_santos | 0:53639fa01e05 | 18 | y = dataY.read(); |
sedu_santos | 0:53639fa01e05 | 19 | z = dataZ.read(); |
sedu_santos | 0:53639fa01e05 | 20 | |
sedu_santos | 0:53639fa01e05 | 21 | // Calculamos las aceleraciones en g |
sedu_santos | 0:53639fa01e05 | 22 | x_g_value = ( ( ( (double)(x * 5)/1024) - 1.65 ) / 0.330 ); |
sedu_santos | 0:53639fa01e05 | 23 | y_g_value = ( ( ( (double)(y * 5)/1024) - 1.65 ) / 0.330 ); |
sedu_santos | 0:53639fa01e05 | 24 | z_g_value = ( ( ( (double)(z * 5)/1024) - 1.80 ) / 0.330 ); |
sedu_santos | 0:53639fa01e05 | 25 | |
sedu_santos | 0:53639fa01e05 | 26 | //A partir de los valores del acelerometro, se calculan los angulos Y, X |
sedu_santos | 0:53639fa01e05 | 27 | //respectivamente, con la formula de la tangente. |
sedu_santos | 0:53639fa01e05 | 28 | roll = ( ( (atan2(y_g_value,z_g_value) * 180) / 3.14 ) + 180 ); |
sedu_santos | 0:53639fa01e05 | 29 | pitch = ( ( (atan2(z_g_value,x_g_value) * 180) / 3.14 ) + 180 ); |
sedu_santos | 0:53639fa01e05 | 30 | |
sedu_santos | 0:53639fa01e05 | 31 | pc.printf("Accelerometer X : %f\n\r", x); |
sedu_santos | 0:53639fa01e05 | 32 | pc.printf("Accelerometer Y : %f\n\r", y); |
sedu_santos | 0:53639fa01e05 | 33 | pc.printf("Accelerometer Z : %f\n\r", z); |
sedu_santos | 0:53639fa01e05 | 34 | pc.printf("Roll: %f\n\r",roll); |
sedu_santos | 0:53639fa01e05 | 35 | pc.printf("pitch: %f\n\r",pitch); |
sedu_santos | 0:53639fa01e05 | 36 | pc.printf("\n\n"); |
sedu_santos | 0:53639fa01e05 | 37 | pc.printf("\r\n"); |
sedu_santos | 0:53639fa01e05 | 38 | wait(1); |
sedu_santos | 0:53639fa01e05 | 39 | } |
sedu_santos | 0:53639fa01e05 | 40 | } |
sedu_santos | 0:53639fa01e05 | 41 | |
sedu_santos | 0:53639fa01e05 | 42 | int main() { |
sedu_santos | 0:53639fa01e05 | 43 | bucle(); |
sedu_santos | 0:53639fa01e05 | 44 | } |