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]);