PIC: Módulo Bluetooth + Android
- #define MESSAGE_BUTTON 0xFF
- #define MESSAGE_VOL_UP 0xFE
- #define MESSAGE_VOL_DOWN 0xFD
- #define MESSAGE_SEEKBAR 0xFC
- #define MESSAGE_ACEL 0xFB
- void BT_Init()
- {
- UART1_Init( 9600 );
- delay_ms( 10 );
- RCIE_bit = 1;
- GIE_Bit = 1;
- PEIE_Bit = 1;
- }
- char BT_Read( char *msg )
- {
- char rd;
- static char cnt = 0, tp = 0;
- if(RCIF_Bit)
- {
- RCIF_Bit = 0;
- rd = UART1_Read();
- if(tp == 0)
- {
- switch( rd )
- {
- case MESSAGE_BUTTON: tp = MESSAGE_BUTTON; break;
- case MESSAGE_VOL_UP: tp = MESSAGE_VOL_UP; break;
- case MESSAGE_VOL_DOWN: tp = MESSAGE_VOL_DOWN; break;
- case MESSAGE_ACEL: tp = MESSAGE_ACEL; break;
- case MESSAGE_SEEKBAR: tp = MESSAGE_SEEKBAR; break;
- default: tp = 0; break;
- }
- cnt = 0;
- }
- else
- {
- if(tp == MESSAGE_BUTTON)
- {
- cnt++;
- if(cnt == 1)
- {
- msg[1] = rd; //Button ID
- }
- else if(cnt == 2)
- {
- msg[2] = rd; //Estado
- msg[0] = MESSAGE_BUTTON;
- tp = 0;
- return 1;
- }
- }
- else if(tp == MESSAGE_VOL_UP)
- {
- msg[1] = rd;
- msg[0] = MESSAGE_VOL_UP;
- tp = 0;
- return 1;
- }
- else if(tp == MESSAGE_VOL_DOWN)
- {
- msg[1] = rd;
- msg[0] = MESSAGE_VOL_DOWN;
- tp = 0;
- return 1;
- }
- else if(tp == MESSAGE_SEEKBAR)
- {
- cnt++;
- if(cnt == 1)
- {
- msg[1] = rd;
- }
- else if(cnt == 2)
- {
- msg[2] = rd;
- msg[0] = MESSAGE_SEEKBAR;
- tp = 0;
- return 1;
- }
- }
- else if(tp == MESSAGE_ACEL)
- {
- cnt++;
- if(cnt == 1)
- {
- msg[1] = rd; //Eixo X
- }
- else if(cnt == 2)
- {
- msg[2] = rd; // Eixo Y
- }
- else if(cnt == 3)
- {
- msg[3] = rd; // Eixo Z
- msg[0] = MESSAGE_ACEL;
- tp = 0;
- return 1;
- }
- }
- }
- return 0;
- }
- else
- {
- return 0;
- }
- }
EXEMPLO:
- //Copie e cole o código da biblioteca aqui
- char Mensagem[4];
- void Interrupt()
- {
- if( BT_Read(&Mensagem) ) //Se recebeu todos os valores
- {
- if(Mensagem[0] == MESSAGE_BUTTON)//Se recebeu um comando de um Botao
- {
- if((Mensagem[1] == 1 ) //comando/ ID
- {
- PORTA.F4 = Mensagem[2].B0; //Valor/ State
- }
- else if(Mensagem[1] == 2)
- {
- PORTA.F5 = Mensagem[2].B0;
- }
- }
- }
- }
- void main()
- {
- BT_Init();
- ADCON1 = 0x0F;
- TRISA = 0;
- PORTA = 0;
- }
O Aplicativo que desenvolvi, utilizando o Android Studio, comunica-se com o microcontrolador via bluetooth, possui 6 botões de comando, uma barra deslizante, e acelerômetro. Também é possível utilizar os botões de volume para enviar algum dado. Possui um campo destinado ao envio de uma string ou um byte.
0 comentários:
Postar um comentário