TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ignaciorod en 26 de Junio de 2013, 12:04:54
-
hola que tal espero que esteen pasando bien
bueno mi problema basicamente es:
uso ccs y un pic 16f877
tengo un modulito bluetooth hc06, e hice un programa sencillisimo con app inventor, logre conectar el modulo con el telefono. luego al tocar un boton mando un numero que se yo por ejemplo un 1 para prender un led en el puerto b y un 4 para apagar bien sencillo, pero no pasa nada de nada. yo creo q mi problema es como defini las variables.
En el app inventor mando un 1 con client.text y mando como texto ese 1.
el tema es q no se q variable usar en ccs para recibir ese uno yo le puse una variable int para recibir por el puerto serie, o deberia ponerlo como char? no se si es ese mi problema o estoy errando algo si alguien ya hizo algo parecido seguro entendera y si pudo hacerlo q me pase si puede su programa en el pic. estoy casi seguro que en el app inventor esta bien ya q es muy sencillo
-
hola que tal espero que esteen pasando bien
bueno mi problema basicamente es:
uso ccs y un pic 16f877
tengo un modulito bluetooth hc06, e hice un programa sencillisimo con app inventor, logre conectar el modulo con el telefono. luego al tocar un boton mando un numero que se yo por ejemplo un 1 para prender un led en el puerto b y un 4 para apagar bien sencillo, pero no pasa nada de nada. yo creo q mi problema es como defini las variables.
En el app inventor mando un 1 con client.text y mando como texto ese 1.
el tema es q no se q variable usar en ccs para recibir ese uno yo le puse una variable int para recibir por el puerto serie, o deberia ponerlo como char? no se si es ese mi problema o estoy errando algo si alguien ya hizo algo parecido seguro entendera y si pudo hacerlo q me pase si puede su programa en el pic. estoy casi seguro que en el app inventor esta bien ya q es muy sencillo
Estaría bien que subas el código del PIC, para que se pueda observar dicho programa y corroborar que no haya ningún error en él. Puede ocurrir que estés verificando si recibes 1 o 4 en decimal y no es lo mismo que 1 o 4 en ascii
-
#include <16F877A.h>
#device adc=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay (clock=4M)
#use fast_io(A)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#use fast_io(E)
#int_rda
int valor=0;
void rda(){
disable_interrupts(GLOBAL);
valor=getc();}
void main() //Función principal
{
enable_interrupts(int_rda);
enable_interrupts(GLOBAL); //Habilito las interrupciones generales
setup_adc_ports(RA0_RA1_RA3_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL );
while(1){
//Apago el watch dog timer
if(valor==1){
output_high(PIN_B2);}
if(valor==2){
output_high(PIN_B3);}
if(valor==3){
output_high(PIN_B7);}
if(valor==4){
output_low(PIN_B2);}
if(valor==5){
output_low(PIN_B3);}
if(valor==6){
output_low(PIN_B7);
}
// if(input_state(PIN_A4)==0);{
// output_toggle(PIN_B2);}
//if( input_state(PIN_A5)==0);{
// output_toggle(PIN_B3);}
// if(input_state(PIN_E1)==0);{
// output_toggle(PIN_B7);}
}
}
ese es el codigo creo q eso para mi el pic no interpreta bien lo q le llega
-
Sí el modulo bluetooth te envía el dato en modo ascii estás haciendo mal las evaluaciones.
Los números del 0 al 9 tienen código ascii de 48 a 57. Es decir que el cuatro equivaldría al ascii 52
-
Como te han dicho anteriormente, estas realizando la recepción mal, ya he realizado envíos del celular al uc, y la variable de recepción debe ser tipo char, en las evaluaciones realizas comparaciones del tipo if(valor=='1') , con eso bastara.
-
bueno gente gracias mañana pruebo estaba casi seguro q era eso les cuento mis progreso mañana