sistemaMicrontrolador3

Dependencies:   mbed

Committer:
JuanManuelAmador
Date:
Mon Dec 19 15:13:15 2016 +0000
Revision:
0:390287d3dcb6
sistemaMicrocontrolador3;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JuanManuelAmador 0:390287d3dcb6 1 /***************************************
JuanManuelAmador 0:390287d3dcb6 2 VIRTUALMECH
JuanManuelAmador 0:390287d3dcb6 3 Autor: Juan Manuel Amador Olivares
JuanManuelAmador 0:390287d3dcb6 4 Fecha: 16/9/2015
JuanManuelAmador 0:390287d3dcb6 5 ***************************************/
JuanManuelAmador 0:390287d3dcb6 6
JuanManuelAmador 0:390287d3dcb6 7 /***************************************
JuanManuelAmador 0:390287d3dcb6 8 Adquisición de datos IMU y Láser
JuanManuelAmador 0:390287d3dcb6 9 ***************************************/
JuanManuelAmador 0:390287d3dcb6 10 #include "mbed.h"
JuanManuelAmador 0:390287d3dcb6 11 #include "Buffering.h"
JuanManuelAmador 0:390287d3dcb6 12 #include "Bufferinguint.h"
JuanManuelAmador 0:390287d3dcb6 13
JuanManuelAmador 0:390287d3dcb6 14 #define TAMPAQUETEIMU 34 // Tamaño del paquete recibido de la IMU
JuanManuelAmador 0:390287d3dcb6 15 #define TAMENVIOIMU 30 // Tamaño del paquete enviado al PC con los datos de la IMU
JuanManuelAmador 0:390287d3dcb6 16 #define TAMENVIOLASER 8 // Tamaño del paquete enviado al PC con los datos del sensor de distancia
JuanManuelAmador 0:390287d3dcb6 17
JuanManuelAmador 0:390287d3dcb6 18 /********************
JuanManuelAmador 0:390287d3dcb6 19 Funciones
JuanManuelAmador 0:390287d3dcb6 20 ********************/
JuanManuelAmador 0:390287d3dcb6 21 void startStreamingIMU(); // Manda los bytes a la IMU necesarios para que comience a enviar datos por streaming
JuanManuelAmador 0:390287d3dcb6 22 void envioPaquete(unsigned char paquete[], int nElementos); // Envía por el puerto serie un paquete de datos
JuanManuelAmador 0:390287d3dcb6 23 /********************/
JuanManuelAmador 0:390287d3dcb6 24
JuanManuelAmador 0:390287d3dcb6 25 DigitalOut led(LED1); // Led indicador. Se enciende cuando se están adquiriendo datos
JuanManuelAmador 0:390287d3dcb6 26
JuanManuelAmador 0:390287d3dcb6 27 // Puertos UART a utilizar
JuanManuelAmador 0:390287d3dcb6 28 Serial pLaser(p9, p10);
JuanManuelAmador 0:390287d3dcb6 29 Serial pIMU(p28, p27);
JuanManuelAmador 0:390287d3dcb6 30 Serial pc(USBTX, USBRX);
JuanManuelAmador 0:390287d3dcb6 31
JuanManuelAmador 0:390287d3dcb6 32 // Temporizador para el control del tiempo
JuanManuelAmador 0:390287d3dcb6 33 Timer t;
JuanManuelAmador 0:390287d3dcb6 34 unsigned int auxtime = 0; // Variable auxiliar para la lectura del tiempo
JuanManuelAmador 0:390287d3dcb6 35 unsigned char byteIN, byteINanterior, byteINbuff, byteINanteriorbuff; // Variables auxiliares para guardar bytes recibidos de la IMU
JuanManuelAmador 0:390287d3dcb6 36 unsigned char byteINL, byteINbuffL; // Variable auxiliar para guardar bytes recibidos del laser
JuanManuelAmador 0:390287d3dcb6 37
JuanManuelAmador 0:390287d3dcb6 38 // Variables para la reconstrucción de los datos de la IMU
JuanManuelAmador 0:390287d3dcb6 39 unsigned int nBytes = TAMPAQUETEIMU;
JuanManuelAmador 0:390287d3dcb6 40 unsigned char paqueteEnvio[TAMENVIOIMU]; // 12 bytes para las aceleraciones (bytes cada eje) y otros 4 para la marca de tiempo y otros 12 para las velocidades angulares más un byte 'i' que indica que es el paquete de una IMU
JuanManuelAmador 0:390287d3dcb6 41 /*union datoCompuesto{
JuanManuelAmador 0:390287d3dcb6 42 char B[4];
JuanManuelAmador 0:390287d3dcb6 43 float unidos;
JuanManuelAmador 0:390287d3dcb6 44 } dato;*/
JuanManuelAmador 0:390287d3dcb6 45
JuanManuelAmador 0:390287d3dcb6 46 // Variables para la reconstrucción datos del láser
JuanManuelAmador 0:390287d3dcb6 47 unsigned int distancia; // Sólo se usarán los 2 bytes menos significativos
JuanManuelAmador 0:390287d3dcb6 48 unsigned char paqueteEnvioL[TAMENVIOLASER];
JuanManuelAmador 0:390287d3dcb6 49 char fbyte = 0; // Indica si el byte leído es el primero delos dos enviados por el láser (tomando valor true) o el segundo (tomando valor false)
JuanManuelAmador 0:390287d3dcb6 50
JuanManuelAmador 0:390287d3dcb6 51 // Buffers dónde se guardarán los bytes provenientes de los sensores
JuanManuelAmador 0:390287d3dcb6 52 Buffering IMUbuff;
JuanManuelAmador 0:390287d3dcb6 53 Bufferinguint IMUtime;
JuanManuelAmador 0:390287d3dcb6 54 Buffering LASERbuff;
JuanManuelAmador 0:390287d3dcb6 55 Bufferinguint LASERtime;
JuanManuelAmador 0:390287d3dcb6 56
JuanManuelAmador 0:390287d3dcb6 57 // Variables semáforo para que no se mezclen los bytes de distintos paquetes
JuanManuelAmador 0:390287d3dcb6 58 // Estas variables indican de que sensor se pueden leer y procesar los bytes de los paquetes recibidos.
JuanManuelAmador 0:390287d3dcb6 59 // Independientemente de estas variables se recibirán los bytes de los distintos sensores, que se irán guardando en sus respectivos buffer,
JuanManuelAmador 0:390287d3dcb6 60 // y se irá guardando la marca de tiempo cuando se detecte la llegada de un nuevo paquete.
JuanManuelAmador 0:390287d3dcb6 61 bool enviandoIMU = false;
JuanManuelAmador 0:390287d3dcb6 62 bool enviandoLASER = false;
JuanManuelAmador 0:390287d3dcb6 63 bool adquiriendo = false;
JuanManuelAmador 0:390287d3dcb6 64
JuanManuelAmador 0:390287d3dcb6 65 // Variable de control de bytes enviados
JuanManuelAmador 0:390287d3dcb6 66 unsigned int bytesEnviados;
JuanManuelAmador 0:390287d3dcb6 67
JuanManuelAmador 0:390287d3dcb6 68 int main() {
JuanManuelAmador 0:390287d3dcb6 69 // Inicialización de puertos UART
JuanManuelAmador 0:390287d3dcb6 70 pc.baud(460800); // Configuración del puerto conectado al PC
JuanManuelAmador 0:390287d3dcb6 71 pIMU.baud(460800); // Configuración del puerto conectado a la IMU
JuanManuelAmador 0:390287d3dcb6 72 pLaser.baud(115200); // Configuración del puerto conectado al sensor de distancia
JuanManuelAmador 0:390287d3dcb6 73
JuanManuelAmador 0:390287d3dcb6 74 pc.printf("Listo para recibir datos.\n\r");
JuanManuelAmador 0:390287d3dcb6 75
JuanManuelAmador 0:390287d3dcb6 76 while(1) { // Bucle infinito
JuanManuelAmador 0:390287d3dcb6 77 // Se comprueba la llegada de nuevos bytes procedentes del PC
JuanManuelAmador 0:390287d3dcb6 78 if(pc.readable()){
JuanManuelAmador 0:390287d3dcb6 79 char c = pc.getc(); // Se lee el byte
JuanManuelAmador 0:390287d3dcb6 80 if(c == 'a'){ // Si es el carácter 'a', indica el inicio de la adquisición
JuanManuelAmador 0:390287d3dcb6 81 adquiriendo = true;
JuanManuelAmador 0:390287d3dcb6 82 t.reset();
JuanManuelAmador 0:390287d3dcb6 83 t.start();
JuanManuelAmador 0:390287d3dcb6 84 startStreamingIMU();
JuanManuelAmador 0:390287d3dcb6 85 bytesEnviados = 0;
JuanManuelAmador 0:390287d3dcb6 86 led = 1;
JuanManuelAmador 0:390287d3dcb6 87 }else if(c == 's'){ // Si es el carácter 'a', indica el final de la adquisición
JuanManuelAmador 0:390287d3dcb6 88 adquiriendo = false;
JuanManuelAmador 0:390287d3dcb6 89 led = 0;
JuanManuelAmador 0:390287d3dcb6 90 t.stop();
JuanManuelAmador 0:390287d3dcb6 91 t.reset();
JuanManuelAmador 0:390287d3dcb6 92 pc.printf("\n\nBytes enviados: %u\n\n", bytesEnviados);
JuanManuelAmador 0:390287d3dcb6 93 }
JuanManuelAmador 0:390287d3dcb6 94 }
JuanManuelAmador 0:390287d3dcb6 95
JuanManuelAmador 0:390287d3dcb6 96 // Se reciben los bytes de la IMU, se guardan en un buffer y se guarda una marca de tiempo si corresponde
JuanManuelAmador 0:390287d3dcb6 97 if(pIMU.readable()){
JuanManuelAmador 0:390287d3dcb6 98 byteINanterior = byteIN;
JuanManuelAmador 0:390287d3dcb6 99 byteIN = pIMU.getc();
JuanManuelAmador 0:390287d3dcb6 100 IMUbuff.put(byteIN); // Se guarda el byte en el buffer
JuanManuelAmador 0:390287d3dcb6 101 if(byteIN == 0x65 && byteINanterior == 0x75){// Si el byte recibido es un 75 en hex, este byte marca la llegada de una nueva medida
JuanManuelAmador 0:390287d3dcb6 102 // Se guarda la marca de tiempo
JuanManuelAmador 0:390287d3dcb6 103 IMUtime.put(t.read_us());
JuanManuelAmador 0:390287d3dcb6 104 }
JuanManuelAmador 0:390287d3dcb6 105 }
JuanManuelAmador 0:390287d3dcb6 106
JuanManuelAmador 0:390287d3dcb6 107 // Se reciben los bytes del LASER, se guardan en un buffer y se guarda una marca de tiempo si corresponde
JuanManuelAmador 0:390287d3dcb6 108 if(pLaser.readable()){
JuanManuelAmador 0:390287d3dcb6 109 byteINL = pLaser.getc();
JuanManuelAmador 0:390287d3dcb6 110 LASERbuff.put(byteINL); // Se guarda el byte en el buffer
JuanManuelAmador 0:390287d3dcb6 111 if(byteINL > 127){ // Los bytes con el bit más significativo a 1 son los primeros bytes d elos paquetes
JuanManuelAmador 0:390287d3dcb6 112 // por lo que se guarda la marca de tiempo correspondiente
JuanManuelAmador 0:390287d3dcb6 113 LASERtime.put(t.read_us());
JuanManuelAmador 0:390287d3dcb6 114 }
JuanManuelAmador 0:390287d3dcb6 115 }
JuanManuelAmador 0:390287d3dcb6 116
JuanManuelAmador 0:390287d3dcb6 117 if(adquiriendo){ // Sólo se reconstruye y envían datos cuando se ha iniciado la adquisición
JuanManuelAmador 0:390287d3dcb6 118 if(!IMUbuff.isEmpty() && enviandoLASER == false){ // Si no se está enviando un paquete del láser y existen bytes por leer
JuanManuelAmador 0:390287d3dcb6 119 byteINanteriorbuff = byteINbuff;
JuanManuelAmador 0:390287d3dcb6 120 byteINbuff = IMUbuff.get();
JuanManuelAmador 0:390287d3dcb6 121 // Reconstrucción del dato
JuanManuelAmador 0:390287d3dcb6 122 if(byteINbuff == 0x65 && byteINanteriorbuff == 0x75 && nBytes >= (TAMPAQUETEIMU-1)){ // Si el byte recibido es un 75 en hex, este byte marca la llegada de una nueva medida
JuanManuelAmador 0:390287d3dcb6 123 // Se pone el contador de bytes de un paquete a 0
JuanManuelAmador 0:390287d3dcb6 124 pc.putc('I'); // Se envían los dos bytes que indican el comienzo del paquete
JuanManuelAmador 0:390287d3dcb6 125 pc.putc('I'); //antes de enviar el primer bytes de datos
JuanManuelAmador 0:390287d3dcb6 126 nBytes = 1;
JuanManuelAmador 0:390287d3dcb6 127 enviandoIMU = true; // Se está enviando un paquete de IMU
JuanManuelAmador 0:390287d3dcb6 128
JuanManuelAmador 0:390287d3dcb6 129 }else{ // Todo lo que no sea 0x75 es parte del resto del dato
JuanManuelAmador 0:390287d3dcb6 130 // Se suma un byte mas
JuanManuelAmador 0:390287d3dcb6 131 nBytes++;
JuanManuelAmador 0:390287d3dcb6 132 // Para reconstruir el dato se mandan primero los bytes más significativos (que también es el orden en el que llegan)
JuanManuelAmador 0:390287d3dcb6 133 switch(nBytes){
JuanManuelAmador 0:390287d3dcb6 134 case 6:
JuanManuelAmador 0:390287d3dcb6 135 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 136 break;
JuanManuelAmador 0:390287d3dcb6 137 case 7:
JuanManuelAmador 0:390287d3dcb6 138 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 139 break;
JuanManuelAmador 0:390287d3dcb6 140 case 8:
JuanManuelAmador 0:390287d3dcb6 141 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 142 break;
JuanManuelAmador 0:390287d3dcb6 143 case 9:
JuanManuelAmador 0:390287d3dcb6 144 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 145 break;
JuanManuelAmador 0:390287d3dcb6 146 case 10:
JuanManuelAmador 0:390287d3dcb6 147 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 148 break;
JuanManuelAmador 0:390287d3dcb6 149 case 11:
JuanManuelAmador 0:390287d3dcb6 150 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 151 break;
JuanManuelAmador 0:390287d3dcb6 152 case 12:
JuanManuelAmador 0:390287d3dcb6 153 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 154 break;
JuanManuelAmador 0:390287d3dcb6 155 case 13:
JuanManuelAmador 0:390287d3dcb6 156 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 157 break;
JuanManuelAmador 0:390287d3dcb6 158 case 14:
JuanManuelAmador 0:390287d3dcb6 159 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 160 break;
JuanManuelAmador 0:390287d3dcb6 161 case 15:
JuanManuelAmador 0:390287d3dcb6 162 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 163 break;
JuanManuelAmador 0:390287d3dcb6 164 case 16:
JuanManuelAmador 0:390287d3dcb6 165 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 166 break;
JuanManuelAmador 0:390287d3dcb6 167 case 17:
JuanManuelAmador 0:390287d3dcb6 168 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 169 break;
JuanManuelAmador 0:390287d3dcb6 170 case 20:
JuanManuelAmador 0:390287d3dcb6 171 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 172 break;
JuanManuelAmador 0:390287d3dcb6 173 case 21:
JuanManuelAmador 0:390287d3dcb6 174 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 175 break;
JuanManuelAmador 0:390287d3dcb6 176 case 22:
JuanManuelAmador 0:390287d3dcb6 177 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 178 break;
JuanManuelAmador 0:390287d3dcb6 179 case 23:
JuanManuelAmador 0:390287d3dcb6 180 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 181 break;
JuanManuelAmador 0:390287d3dcb6 182 case 24:
JuanManuelAmador 0:390287d3dcb6 183 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 184 break;
JuanManuelAmador 0:390287d3dcb6 185 case 25:
JuanManuelAmador 0:390287d3dcb6 186 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 187 break;
JuanManuelAmador 0:390287d3dcb6 188 case 26:
JuanManuelAmador 0:390287d3dcb6 189 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 190 break;
JuanManuelAmador 0:390287d3dcb6 191 case 27:
JuanManuelAmador 0:390287d3dcb6 192 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 193 break;
JuanManuelAmador 0:390287d3dcb6 194 case 28:
JuanManuelAmador 0:390287d3dcb6 195 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 196 break;
JuanManuelAmador 0:390287d3dcb6 197 case 29:
JuanManuelAmador 0:390287d3dcb6 198 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 199 break;
JuanManuelAmador 0:390287d3dcb6 200 case 30:
JuanManuelAmador 0:390287d3dcb6 201 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 202 break;
JuanManuelAmador 0:390287d3dcb6 203 case 31:
JuanManuelAmador 0:390287d3dcb6 204 pc.putc(byteINbuff);
JuanManuelAmador 0:390287d3dcb6 205 auxtime = IMUtime.get(); // Se recupera la marca de tiempo del paquete y se envía dividido en 4 bytes
JuanManuelAmador 0:390287d3dcb6 206 paqueteEnvio[3] = auxtime;
JuanManuelAmador 0:390287d3dcb6 207 auxtime >>= 8;
JuanManuelAmador 0:390287d3dcb6 208 paqueteEnvio[2] = auxtime;
JuanManuelAmador 0:390287d3dcb6 209 auxtime >>= 8;
JuanManuelAmador 0:390287d3dcb6 210 paqueteEnvio[1] = auxtime;
JuanManuelAmador 0:390287d3dcb6 211 auxtime >>= 8;
JuanManuelAmador 0:390287d3dcb6 212 paqueteEnvio[0] = auxtime;
JuanManuelAmador 0:390287d3dcb6 213 pc.putc(paqueteEnvio[0]);
JuanManuelAmador 0:390287d3dcb6 214 pc.putc(paqueteEnvio[1]);
JuanManuelAmador 0:390287d3dcb6 215 pc.putc(paqueteEnvio[2]);
JuanManuelAmador 0:390287d3dcb6 216 pc.putc(paqueteEnvio[3]);
JuanManuelAmador 0:390287d3dcb6 217 enviandoIMU = false; // Se ha terminado de enviar el paquete de la IMU
JuanManuelAmador 0:390287d3dcb6 218 bytesEnviados += TAMENVIOIMU;
JuanManuelAmador 0:390287d3dcb6 219 break;
JuanManuelAmador 0:390287d3dcb6 220 }
JuanManuelAmador 0:390287d3dcb6 221 }
JuanManuelAmador 0:390287d3dcb6 222 }
JuanManuelAmador 0:390287d3dcb6 223
JuanManuelAmador 0:390287d3dcb6 224 if(!LASERbuff.isEmpty() && enviandoIMU == false){
JuanManuelAmador 0:390287d3dcb6 225 byteINbuffL = LASERbuff.get();
JuanManuelAmador 0:390287d3dcb6 226 // Si el byte recibido tiene el bit más significativo a 1 es el byte más significativo
JuanManuelAmador 0:390287d3dcb6 227 if(byteINbuffL > 127){
JuanManuelAmador 0:390287d3dcb6 228 fbyte = 1;
JuanManuelAmador 0:390287d3dcb6 229 distancia = byteINbuffL;
JuanManuelAmador 0:390287d3dcb6 230 distancia &=~0x80; // El bit mas significativo hay que ponerlo a 0
JuanManuelAmador 0:390287d3dcb6 231 enviandoLASER = true; // Se comienza a enviar el paquete del láser
JuanManuelAmador 0:390287d3dcb6 232 }else{ // Recibido byte menos significativo
JuanManuelAmador 0:390287d3dcb6 233 if (fbyte == 1){ // Si se recibió un byte más significativo puede reconstruirse el valor medido por el laser
JuanManuelAmador 0:390287d3dcb6 234 auxtime = LASERtime.get(); // Se lee el tiempo cuando en el instante de llegada del primer byte del paquete
JuanManuelAmador 0:390287d3dcb6 235 fbyte = 0;
JuanManuelAmador 0:390287d3dcb6 236 distancia <<= 7;
JuanManuelAmador 0:390287d3dcb6 237 distancia += byteINbuffL; // Unidades de ingenieria
JuanManuelAmador 0:390287d3dcb6 238 //distancia = distancia*0.0498; // (mm) La conversión a mm se hace en el PC para no tener que enviar un tipo float
JuanManuelAmador 0:390287d3dcb6 239 // que guardara los decimales de la operación
JuanManuelAmador 0:390287d3dcb6 240 // Los dos primeros bytes byte de los paquetes del laser seran una 'L'
JuanManuelAmador 0:390287d3dcb6 241 paqueteEnvioL[0] = 'L';
JuanManuelAmador 0:390287d3dcb6 242 paqueteEnvioL[1] = 'L';
JuanManuelAmador 0:390287d3dcb6 243 paqueteEnvioL[3] = distancia;
JuanManuelAmador 0:390287d3dcb6 244 distancia >>= 8;
JuanManuelAmador 0:390287d3dcb6 245 paqueteEnvioL[2] = distancia;
JuanManuelAmador 0:390287d3dcb6 246 // Se añaden también los 4 bytes del tiempo y se envía el paquete (siempre el byte más significativo se envía primero)
JuanManuelAmador 0:390287d3dcb6 247 paqueteEnvioL[7] = auxtime;
JuanManuelAmador 0:390287d3dcb6 248 auxtime >>= 8;
JuanManuelAmador 0:390287d3dcb6 249 paqueteEnvioL[6] = auxtime;
JuanManuelAmador 0:390287d3dcb6 250 auxtime >>= 8;
JuanManuelAmador 0:390287d3dcb6 251 paqueteEnvioL[5] = auxtime;
JuanManuelAmador 0:390287d3dcb6 252 auxtime >>= 8;
JuanManuelAmador 0:390287d3dcb6 253 paqueteEnvioL[4] = auxtime;
JuanManuelAmador 0:390287d3dcb6 254 envioPaquete(paqueteEnvioL, TAMENVIOLASER);
JuanManuelAmador 0:390287d3dcb6 255 enviandoLASER = false; // Se ha terminado de enviar el paquete del láser
JuanManuelAmador 0:390287d3dcb6 256 bytesEnviados += TAMENVIOLASER;
JuanManuelAmador 0:390287d3dcb6 257 }
JuanManuelAmador 0:390287d3dcb6 258 }
JuanManuelAmador 0:390287d3dcb6 259
JuanManuelAmador 0:390287d3dcb6 260 }
JuanManuelAmador 0:390287d3dcb6 261 } // if(adquiriendo)
JuanManuelAmador 0:390287d3dcb6 262 } // while(1)
JuanManuelAmador 0:390287d3dcb6 263 } // main
JuanManuelAmador 0:390287d3dcb6 264
JuanManuelAmador 0:390287d3dcb6 265 void envioPaquete(unsigned char paquete[], int nElementos){ // Envía por el puerto serie un paquete de datos
JuanManuelAmador 0:390287d3dcb6 266 for(int i = 0; i < nElementos; i++){
JuanManuelAmador 0:390287d3dcb6 267 pc.putc(paquete[i]);
JuanManuelAmador 0:390287d3dcb6 268 }
JuanManuelAmador 0:390287d3dcb6 269 }
JuanManuelAmador 0:390287d3dcb6 270
JuanManuelAmador 0:390287d3dcb6 271 void startStreamingIMU(){
JuanManuelAmador 0:390287d3dcb6 272 // Se envia un paquete de datos a la IMU que indica el comienzo de lectura de medidas
JuanManuelAmador 0:390287d3dcb6 273 pIMU.putc(0x75); // K
JuanManuelAmador 0:390287d3dcb6 274 pIMU.putc(0x65); // A
JuanManuelAmador 0:390287d3dcb6 275 pIMU.putc(0x0C); // alt + 12 ♀
JuanManuelAmador 0:390287d3dcb6 276 pIMU.putc(0x05); // alt + 5 ♣
JuanManuelAmador 0:390287d3dcb6 277 pIMU.putc(0x05); // alt + 5 ♣
JuanManuelAmador 0:390287d3dcb6 278 pIMU.putc(0x11); // alt + 11 ♂
JuanManuelAmador 0:390287d3dcb6 279 pIMU.putc(0x01); // alt + 1 ☺
JuanManuelAmador 0:390287d3dcb6 280 pIMU.putc(0x01); // alt + 1 ☺
JuanManuelAmador 0:390287d3dcb6 281 pIMU.putc(0x01); // alt + 1 ☺
JuanManuelAmador 0:390287d3dcb6 282 pIMU.putc(0x04); // alt + 4 ♦
JuanManuelAmador 0:390287d3dcb6 283 pIMU.putc(0x1A); // alt + 26 →
JuanManuelAmador 0:390287d3dcb6 284 pc.printf("Paquete de inicio enviado.\n\r");
JuanManuelAmador 0:390287d3dcb6 285 }