Firmware - TennisGameEnviroment/Firmware GitHub Wiki
Protocolos de comunicación entre el microprocesador y el computador:
Se definió una trama de 9 bytes donde la cabecera fuese F2 en hexadecimal y los 8 bytes restantes sirvieran para enviar los datos de nuestros 4 sensores analógicos (12 bits c/u). Mediante las siguientes operaciones llógicas se empaquetaron los 12 bits de cada sensor en tramas de 2 bytes:
Trama(2bytes) = (medición & 0xF) + (medición & 0xF8) <<1
De esta forma todos los bytes que conforman la trama de 9 bytes comienzan por 0 a excepción de la cabecera. Los datos digitales se colocaron dentro de los bits sobrantes de los canales analógicos específicamente en el byte 1 y en el byte 3 de la trama.'
Para la recuperación de los valores de cada sensor se aplicó la operación inversa en Java:
JoystickX = (((int(Arreglo[1]) & 127) *256)>>1) + int(Arreglo[2]); JoystickY = (((int(Arreglo[3]) & 127) *256)>>1) + int(Arreglo[4]); AcelerometroX = ((int(Arreglo[5]) *256)>>1) + int(Arreglo[6]); AcelerometroY = ((int(Arreglo[7]) *256)>>1) + int(Arreglo[8]);