Siguiendo con la entrada anterior, en la que os mostré como configurar el módulo SPI del PIC32 para enviar y recibir datos del acelerómetro, lo siguiente que nos quedaba era utilizar esos datos de aceleraciones que hemos recibido para algo. Lo más sencillo, y que además nos servirá para depurar un poco la aplicación, será mostrar por la pantalla de la MMB. Para ello, utilizamos la libreria LCDTerminal.h, y el código seria el siguiente:
sprintf(s,"Eje X:\t 0d \n", (AccX)); LCDPutString( s); sprintf(s,"Eje Y:\t 0d \n", AccY); LCDPutString( s); sprintf(s,"Eje Z:\t 0d \n", AccZ); LCDPutString( s);
Una vez desarrollada la aplicación, y mostradas las aceleraciones en los 3 ejes en la pantalla, se me ocurre que lo siguiente que podríamos hacer, es enviar esos datos al PC, y procesarlos desde un programa en VB.NET.
Para ello lo primer que debemos hacer es convertir los datos que nos devuelven las funciones de lectura del acelerómetro, ya que como os comenté, nos puede devolver tanto valores positivos como negativos, además de un valor que numéricamente no significa nada, ya que el valor que leemos va desde –260 cuando la aceleración es –g, y 260 cuando la aceleración es +g. Estos valores los podemos convertir en un valor que vaya, por ejemplo desde 0 a 180, de forma que nos devuelva el ángulo que tenemos girada la placa en cada dirección. para ello, debemos realizar las siguientes operaciones:
AccX_tx= (AccX + 260) / 2.88; AccY_tx= (AccY + 260) / 2.88; AccZ_tx= (AccZ + 260) / 2.88;
// definiciones RS232 #define BAUDRATE 9600 #define BRGDATA (GetPeripheralClock()/4/BAUDRATE-1) #define U_ENABLE 0x8008 // enable,BREGH=1, 1 stop, no parity #define U_TX 0x1400 // enable tx & rx, clear all flags
//CONFIGURAMOS EL MODULO USART U2MODE = U_ENABLE; // initialize the UART module U2STA = U_TX; // enable the Transmitter and Receiver U2BRG = BRGDATA;
if( U2STAbits.URXDA){ //esperamos que llegue un dato nuevo if(U2RXREG == 'e'){ LD2 = !LD2; U2TXREG = AccX_tx; while(!U2STAbits.TRMT); //esperamos a que se envíe el dato U2TXREG = AccY_tx; while(!U2STAbits.TRMT); //esperamos a que se envíe el dato U2TXREG = AccZ_tx; while(!U2STAbits.TRMT); //esperamos a que se envíe el dato } }
No hay comentarios:
Publicar un comentario