primer entrega

Dependencies:   mbed

Committer:
NataliaGaravito
Date:
Sun Aug 25 20:26:07 2019 +0000
Revision:
2:3c276505f7ec
Parent:
1:62775d3592cf
Primera entrega MPU6050;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NataliaGaravito 0:7411b02903e3 1 #include "mbed.h"
NataliaGaravito 0:7411b02903e3 2
NataliaGaravito 0:7411b02903e3 3 Serial pc(SERIAL_TX, SERIAL_RX); // (TX, RX)
NataliaGaravito 0:7411b02903e3 4 I2C i2c(PB_9, PB_8 ); // (SDA, SCL)
NataliaGaravito 1:62775d3592cf 5 InterruptIn button(PC_13);
NataliaGaravito 0:7411b02903e3 6
NataliaGaravito 0:7411b02903e3 7 const int addr = 0xD0; // 7 bit I2C address
NataliaGaravito 0:7411b02903e3 8 char cmd[2];
NataliaGaravito 0:7411b02903e3 9 char read_buffer[14];
NataliaGaravito 0:7411b02903e3 10 char save_p[10];
NataliaGaravito 0:7411b02903e3 11
NataliaGaravito 0:7411b02903e3 12 int16_t acc_x = 0, acc_y = 0, acc_z = 0;
NataliaGaravito 0:7411b02903e3 13 int16_t gyr_x = 0, gyr_y = 0, gyr_z = 0;
NataliaGaravito 0:7411b02903e3 14 int16_t temp = 0;
NataliaGaravito 0:7411b02903e3 15
NataliaGaravito 0:7411b02903e3 16 float ACC_SEN = 16384.0; //Resolución ACC
NataliaGaravito 0:7411b02903e3 17 float GYR_SEN = 131.0; //Resolución GYR
NataliaGaravito 0:7411b02903e3 18 float TEM_SEN = 340.0; //Resolución temp
NataliaGaravito 0:7411b02903e3 19
NataliaGaravito 0:7411b02903e3 20 float facc_x = 0, facc_y = 0, facc_z = 0;
NataliaGaravito 0:7411b02903e3 21 float fgyr_x = 0, fgyr_y = 0, fgyr_z = 0;
NataliaGaravito 0:7411b02903e3 22 float ftemp = 0;
NataliaGaravito 0:7411b02903e3 23
NataliaGaravito 1:62775d3592cf 24 double boton1; //primera interrupcion
NataliaGaravito 1:62775d3592cf 25 double boton2; //segunda interrupcion
NataliaGaravito 1:62775d3592cf 26
NataliaGaravito 1:62775d3592cf 27 //interrupcion boton
NataliaGaravito 2:3c276505f7ec 28 void pressed()//sacada de codigo MIRAR FINAL DE LA PAGINA
NataliaGaravito 1:62775d3592cf 29 {
NataliaGaravito 1:62775d3592cf 30 //primera interrupcion
NataliaGaravito 1:62775d3592cf 31 if(boton1==0 && boton2==0)
NataliaGaravito 1:62775d3592cf 32 {
NataliaGaravito 1:62775d3592cf 33 boton1=1;
NataliaGaravito 1:62775d3592cf 34 boton2=0;
NataliaGaravito 1:62775d3592cf 35 }
NataliaGaravito 1:62775d3592cf 36 //segunda interrupcion
NataliaGaravito 1:62775d3592cf 37 if(boton1==2 && boton2==0)
NataliaGaravito 1:62775d3592cf 38 {
NataliaGaravito 1:62775d3592cf 39 boton1=2;
NataliaGaravito 1:62775d3592cf 40 boton2=1;
NataliaGaravito 1:62775d3592cf 41 }
NataliaGaravito 1:62775d3592cf 42 }
NataliaGaravito 1:62775d3592cf 43
NataliaGaravito 1:62775d3592cf 44 void datos()//funcion llamada por la primera y segunda interrupcion (comparar con la programacion orginal que envio el profe)
NataliaGaravito 1:62775d3592cf 45 {
NataliaGaravito 1:62775d3592cf 46 facc_x = acc_x/ACC_SEN;
NataliaGaravito 1:62775d3592cf 47 facc_y = acc_y/ACC_SEN;
NataliaGaravito 1:62775d3592cf 48 facc_z = acc_z/ACC_SEN;
NataliaGaravito 1:62775d3592cf 49
NataliaGaravito 1:62775d3592cf 50 fgyr_x = gyr_x/GYR_SEN;
NataliaGaravito 1:62775d3592cf 51 fgyr_y = gyr_y/GYR_SEN;
NataliaGaravito 1:62775d3592cf 52 fgyr_z = gyr_z/GYR_SEN;
NataliaGaravito 1:62775d3592cf 53
NataliaGaravito 1:62775d3592cf 54 ftemp= (temp - 521)/TEM_SEN;
NataliaGaravito 1:62775d3592cf 55 }
NataliaGaravito 0:7411b02903e3 56
NataliaGaravito 0:7411b02903e3 57 int main()
NataliaGaravito 0:7411b02903e3 58 {
NataliaGaravito 1:62775d3592cf 59
NataliaGaravito 1:62775d3592cf 60 // Asignacion interrupcion
NataliaGaravito 2:3c276505f7ec 61 button.fall(&pressed);//sacado codigo MIRAR FINAL DE LA PAGINA
NataliaGaravito 1:62775d3592cf 62
NataliaGaravito 0:7411b02903e3 63 pc.printf("Prueba MPU6050 \n\r");
NataliaGaravito 0:7411b02903e3 64
NataliaGaravito 0:7411b02903e3 65 cmd[0] = 0x6B;
NataliaGaravito 0:7411b02903e3 66 cmd[1] = 0x00;
NataliaGaravito 0:7411b02903e3 67 i2c.write(addr, cmd, 2); //Desactivar modo hibernación
NataliaGaravito 0:7411b02903e3 68
NataliaGaravito 0:7411b02903e3 69 cmd[0] = 0x1B;
NataliaGaravito 0:7411b02903e3 70 cmd[1] = 0x00;
NataliaGaravito 0:7411b02903e3 71 i2c.write(addr, cmd, 2); //gyro full scale 250 DPS
NataliaGaravito 0:7411b02903e3 72
NataliaGaravito 0:7411b02903e3 73 cmd[0] = 0x1C;
NataliaGaravito 0:7411b02903e3 74 cmd[1] = 0x00;
NataliaGaravito 0:7411b02903e3 75 i2c.write(addr, cmd, 2); //ACC fullsclae 2G
NataliaGaravito 0:7411b02903e3 76
NataliaGaravito 0:7411b02903e3 77 while(1) {
NataliaGaravito 0:7411b02903e3 78 wait(1);
NataliaGaravito 0:7411b02903e3 79
NataliaGaravito 0:7411b02903e3 80 cmd[0]=0x3B;
NataliaGaravito 0:7411b02903e3 81 i2c.write(addr, cmd, 1); //Escritura del registro de inicio
NataliaGaravito 0:7411b02903e3 82 i2c.read(addr, read_buffer, 14); //Lectura en rafaga de los valores de la MPU
NataliaGaravito 0:7411b02903e3 83 wait_ms(1);
NataliaGaravito 1:62775d3592cf 84
NataliaGaravito 1:62775d3592cf 85 //.................Construcción de la medición de los valores ..................
NataliaGaravito 1:62775d3592cf 86
NataliaGaravito 0:7411b02903e3 87 acc_x = read_buffer[0]<<8 | read_buffer[1];
NataliaGaravito 0:7411b02903e3 88 acc_y = read_buffer[2]<<8 | read_buffer[3];
NataliaGaravito 0:7411b02903e3 89 acc_z = read_buffer[4]<<8 | read_buffer[5];
NataliaGaravito 0:7411b02903e3 90 temp = read_buffer[6]<<8 | read_buffer[7];
NataliaGaravito 0:7411b02903e3 91 gyr_x = read_buffer[8]<<8 | read_buffer[9];
NataliaGaravito 0:7411b02903e3 92 gyr_y = read_buffer[10]<<8 | read_buffer[11];
NataliaGaravito 0:7411b02903e3 93 gyr_z = read_buffer[12]<<8 | read_buffer[13];
NataliaGaravito 0:7411b02903e3 94
NataliaGaravito 1:62775d3592cf 95 //primera interrupcion
NataliaGaravito 1:62775d3592cf 96 while(boton1==1 && boton2==0)//datos dados por la primera interrupcion
NataliaGaravito 0:7411b02903e3 97 {
NataliaGaravito 1:62775d3592cf 98 datos();
NataliaGaravito 1:62775d3592cf 99 pc.printf("primer rafaga de datos");
NataliaGaravito 1:62775d3592cf 100 wait(2);//para que se visualice el titulo de la rafaga y no pase tan rapido
NataliaGaravito 1:62775d3592cf 101 float j=0; //lo deje float porque si lo dejo entero en el momento de imprimir me sale unicamente cero y la deje local para evitar gasto de memoria
NataliaGaravito 1:62775d3592cf 102 for(int i=0;i<=99;i++)//100 datos
NataliaGaravito 1:62775d3592cf 103 {
NataliaGaravito 1:62775d3592cf 104 j++;//numero de dato en incremento
NataliaGaravito 1:62775d3592cf 105 pc.printf("dato %.2f \n\r", j); //impresion del numero del dato
NataliaGaravito 0:7411b02903e3 106 pc.printf("ACCx ACCy ACCz GYRx GYRy GYRz Temp \n\r");
NataliaGaravito 0:7411b02903e3 107 pc.printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f \n\r", facc_x, facc_y, facc_z, fgyr_x, fgyr_y, fgyr_z, ftemp);
NataliaGaravito 1:62775d3592cf 108 pc.printf("\n\r");
NataliaGaravito 0:7411b02903e3 109 }
NataliaGaravito 1:62775d3592cf 110 //iniciacion para la segunda rafaga de datos
NataliaGaravito 1:62775d3592cf 111 boton1=2;
NataliaGaravito 1:62775d3592cf 112 boton2=0;// se deja cero para que entre a la segunda rafaga de datos EN LA INTERRUPCION
NataliaGaravito 0:7411b02903e3 113 }
NataliaGaravito 1:62775d3592cf 114
NataliaGaravito 1:62775d3592cf 115 //segunda interrupcion
NataliaGaravito 1:62775d3592cf 116 while(boton1==2 && boton2==1)//datos dados por la segunda interrupcion
NataliaGaravito 1:62775d3592cf 117 {
NataliaGaravito 1:62775d3592cf 118 datos();
NataliaGaravito 1:62775d3592cf 119 pc.printf("segunda rafaga de datos");
NataliaGaravito 1:62775d3592cf 120 wait (2);//para que se visualice el titulo de la rafaga y no pase tan rapido
NataliaGaravito 1:62775d3592cf 121 float j=0;//lo deje float porque si lo dejo entero en el momento de imprimir me sale unicamente cero y la deje local para evitar gasto de memoria
NataliaGaravito 1:62775d3592cf 122
NataliaGaravito 1:62775d3592cf 123 for(int i=0;i<=499;i++)//500 datos
NataliaGaravito 1:62775d3592cf 124 {
NataliaGaravito 1:62775d3592cf 125 j++; //numero de dato en incremento
NataliaGaravito 1:62775d3592cf 126 pc.printf("dato %.2f \n\r", j); //impresion del numero del dato
NataliaGaravito 1:62775d3592cf 127 pc.printf("ACCx ACCy ACCz GYRx GYRy GYRz Temp \n\r");
NataliaGaravito 1:62775d3592cf 128 pc.printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f \n\r", facc_x, facc_y, facc_z, fgyr_x, fgyr_y, fgyr_z, ftemp);
NataliaGaravito 1:62775d3592cf 129 pc.printf("\n\r");
NataliaGaravito 1:62775d3592cf 130 }
NataliaGaravito 1:62775d3592cf 131 boton1=0;
NataliaGaravito 1:62775d3592cf 132 boton2=0;// se deja cero para que entre a la primera rafaga de datos EN LA INTERRUPCION,
NataliaGaravito 1:62775d3592cf 133 // es decir la proxima vez que oprima no va a ser necesario que vuelva a iniciar el programa sino que directamente entra
NataliaGaravito 1:62775d3592cf 134 //a la primera rafaga de datos
NataliaGaravito 1:62775d3592cf 135 }
NataliaGaravito 1:62775d3592cf 136 }
NataliaGaravito 1:62775d3592cf 137 }
NataliaGaravito 2:3c276505f7ec 138
NataliaGaravito 2:3c276505f7ec 139 /*EJEMPLO INTERRUPCION BOTON
NataliaGaravito 2:3c276505f7ec 140 #include "mbed.h"
NataliaGaravito 2:3c276505f7ec 141
NataliaGaravito 2:3c276505f7ec 142 InterruptIn button(USER_BUTTON);
NataliaGaravito 2:3c276505f7ec 143
NataliaGaravito 2:3c276505f7ec 144 DigitalOut led(LED1);
NataliaGaravito 2:3c276505f7ec 145
NataliaGaravito 2:3c276505f7ec 146 double delay = 0.5; // 500 ms
NataliaGaravito 2:3c276505f7ec 147
NataliaGaravito 2:3c276505f7ec 148 void pressed()
NataliaGaravito 2:3c276505f7ec 149 {
NataliaGaravito 2:3c276505f7ec 150 delay = 0.1; // 100 ms
NataliaGaravito 2:3c276505f7ec 151 }
NataliaGaravito 2:3c276505f7ec 152
NataliaGaravito 2:3c276505f7ec 153 void released()
NataliaGaravito 2:3c276505f7ec 154 {
NataliaGaravito 2:3c276505f7ec 155 delay = 0.5; // 500 ms
NataliaGaravito 2:3c276505f7ec 156 }
NataliaGaravito 2:3c276505f7ec 157
NataliaGaravito 2:3c276505f7ec 158 int main()
NataliaGaravito 2:3c276505f7ec 159 {
NataliaGaravito 2:3c276505f7ec 160 // Assign functions to button
NataliaGaravito 2:3c276505f7ec 161 button.fall(&pressed);
NataliaGaravito 2:3c276505f7ec 162 button.rise(&released);
NataliaGaravito 2:3c276505f7ec 163
NataliaGaravito 2:3c276505f7ec 164 while (1) {
NataliaGaravito 2:3c276505f7ec 165 led = !led;
NataliaGaravito 2:3c276505f7ec 166 wait(delay);
NataliaGaravito 2:3c276505f7ec 167 }
NataliaGaravito 2:3c276505f7ec 168 }
NataliaGaravito 2:3c276505f7ec 169 */