PIC18f4550 e modulo bluetooth HC-05
Inviato: 16 ott 2015, 18:02
Ciao a tutti sto lavorando con un PIC18F4550, un piccolo modulino bluetooth HC-05 e il mio cellulare android (ho scaricato l'applicazione bluetooth terminal). Come prima cosa vorrei riuscire ad accendere un led se il PIC riceve il carattere '1' e spegnerlo se riceve il carattere '0'. Mi sono munito di tanta pazienza e ho cercato in tutti i modi di farlo funzionare però non ci sono riuscito. Inizialmente ho cercato di capire se il problema stava nel modulino, che magari era rotto, però dopo una prova con arduino ho capito che il problema sta nel mio codice (uso MPLAB X e come compilatore XC8)infatti il PIC non riceve nessun carattere.
Questo è il codice che ho provato ad utilizzare:
Collegamenti:
Pin Rx del modulo al pin Tx del PIC
Pin Tx del modulo al pin Rx del PIC
Alimentazione del modulo 5V, perché non uso il modulo SMD ma quello con 6 pin
Modulo HC-05: configurato come slave, 9600 baud, 1 bit di stop e nessun bit di parità.
Se qualcuno di voi saprebbe come aiutarmi gliene sarei grato, perché non so più dove sbattere la testa per capire come farlo funzionare. Grazie
Questo è il codice che ho provato ad utilizzare:
- Codice: Seleziona tutto
/*
* File: main.c
* Author: Utente
*
*/
#include <xc.h>
#include <plib/usart.h>
#include <plib/xlcd.h>
#define _XTAL_FREQ 8000000
//Frequenza del quarzo o del oscillatore interno
#pragma config FOSC = INTOSC_HS && WDT = OFF && PBADEN = OFF && MCLRE = OFF && STVREN = OFF && LVP = OFF
//Oscillatore interno HS
void configurazioni(void){
OSCCON = 0b01110110;
// Imposto il quarzo interno a 8MHz
ADCON1 = 0b00001111;
//Imposto tutti i pin come digitali
TRISBbits.TRISB7 = 0;
//Pin di verifica ricezione
TRISAbits.TRISA0 = 0;
//Pin di output
TRISCbits.TRISC6 = 0;
//Imposto il pin Rx come output
TRISCbits.TRISC7 = 1;
//Imposto il pin Tx come input
OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH & USART_ADDEN_OFF, 51);
//Imposto la USART
}
void main(void) {
configurazioni();
//Impostazioni USART
char data;
while(1){
PORTBbits.RB7 = 1;
//Accendo il led per il test
while(DataRdyUSART());
//Aspetto di ricevere un dato
PORTBbits.RB7 = 0;
//Indica che ho ricevuto un dato
data = ReadUSART();
//Leggo il dato e lo memorizzo nella variabile data
if(data == '1'){
PORTAbits.RA0 = 1;
WriteUSART("Acceso");
}
if(data == '0'){
PORTAbits.RA0 = 0;
WriteUSART("Spento");
}
}
}
Collegamenti:
Pin Rx del modulo al pin Tx del PIC
Pin Tx del modulo al pin Rx del PIC
Alimentazione del modulo 5V, perché non uso il modulo SMD ma quello con 6 pin
Modulo HC-05: configurato come slave, 9600 baud, 1 bit di stop e nessun bit di parità.
Se qualcuno di voi saprebbe come aiutarmi gliene sarei grato, perché non so più dove sbattere la testa per capire come farlo funzionare. Grazie