balancin farfan
Dependencies: mbed MPU6050f Map Math
main.cpp
- Committer:
- gfarfan18
- Date:
- 2020-11-17
- Revision:
- 0:0abd1091adbf
File content as of revision 0:0abd1091adbf:
#include "mbed.h" #include "MPU6050.h" #include "Math.h" #include "Map.hpp" Serial pc(SERIAL_TX, SERIAL_RX); MPU6050 ark(PB_9,PB_8); //Mototores PwmOut m1der(D11); PwmOut m1izq(D10); PwmOut m2der(D6); PwmOut m2izq(D5); Timer t; Ticker flipper; static int estado = 0; void flip(); //Tiempo para el angulo int dt, end; float gyro[3]; float girosc_ang_x, girosc_ang_y; float girosc_ang_x_prev, girosc_ang_y_prev; DigitalOut led1(LED1); float acce[3]; float accel_ang_x; float accel_ang_y; //Angulos float ang_x, ang_y; float ang_x_prev, ang_y_prev; ; void flip() { led1 = !led1; } int main() { t.start(); flipper.attach_us(&flip, 500); // the address of the function to be attached (flip) and the interval (2 seconds) led1 = 1; // spin in a main loop. flipper will interrupt it to call flip while(1) { estado = led1; if (estado == 0){ ark.getAccelero(acce); // pc.printf("Acce0=%f,Acce1=%f,Acce2=%f\r\n",acce[0],acce[1],acce[2]); accel_ang_x = atan(acce[0]/sqrt(pow(acce[1],2) + pow(acce[2],2)))*(180.0/3.14); accel_ang_y = atan(acce[1]/sqrt(pow(acce[0],2) + pow(acce[2],2)))*(180.0/3.14); //pc.printf("%f\n",accel_ang_x); //pc.printf("y%f\n",accel_ang_y); } if (estado == 1){ dt = t.read_ms() - end; end = t.read_ms(); ark.getGyro(gyro); //girosc_ang_x = (gyro[0]/131)*dt/1000.0 + girosc_ang_x_prev; //girosc_ang_y = (gyro[1]/131)*dt/1000.0 + girosc_ang_y_prev; ang_x = 0.98*(ang_x_prev+(gyro[0]/131)*dt) + 0.02*accel_ang_x; ang_y = 0.98*(ang_y_prev+(gyro[1]/131)*dt) + 0.02*accel_ang_y; //girosc_ang_x_prev = girosc_ang_x; //girosc_ang_y_prev = girosc_ang_y; ang_x_prev = ang_x; ang_y_prev = ang_y; //pc.printf("%f\n", ang_x); //pc.printf("Y=%f\n",girosc_ang_y); if (ang_x > -4 && ang_x <-2){ m1der = 0.2; m1izq = 0.00F; m2der = 0.00F; m2izq = 0.2; pc.printf("%f\n", ang_x); } if (ang_x < -4 && ang_x > -6){ m1der = 0.00f; m1izq = 0.2; m2der = 0.2; m2izq = 0.00f; pc.printf("%f\n", ang_x); } } } }