Natalia Garavito
/
Nucleo_read_analog_value
primer entrega
main.cpp@2:3c276505f7ec, 2019-08-25 (annotated)
- 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?
User | Revision | Line number | New 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 | */ |