Hola, hace días publique pidiendo ayuda con un control infrarrojo pero sin éxito busque otras maneras de controlar a distancia y elegí hacerlo vía bluetooth con un modulo hc-05, uso este programa para hacer encender y apagar un led mediante la aplicación "Blueterm" y funciona
CMCON = 7
TRISA = %00000000
TRISB = %00010010
'*******************************************************************************
' INICIALIZANDO USART
DEFINE HSER_BAUD 9600
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_SPBRG 25
DEFINE HSER_Clear On
LED var byte
'*******************************************************************************
PORTA = %00000000
PORTB = %00000000
'*******************************************************************************
pause 1000
PORTB.0 = 1 '*************************
pause 1000 'esto es para saber q el pic vive
PORTB.0 = 0 '*************************
inicio:
Hserin 100,continuo,[led]
continuo:
if led = "A" then
PORTB.0 = 1
pause 500
endif
if led = "B" then
PORTB.0 = 0
pause 500
endif
goto inicio
END
En los fuses active le oscilador interno,mclr y boden, use una resistencia de 4k7 hacia mclr y una resistencia de 10k en RX del modulo hacia 5v
Este programa funciona perfecto para el led ahora bien luego cree este otro para lograr mover el servomotor:
CMCON = 7
TRISA = %00000000
TRISB = %00010010
'*******************************************************************************
' INICIALIZANDO USART
DEFINE HSER_BAUD 9600
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_SPBRG 25
DEFINE HSER_Clear On
SERVO var byte
'*******************************************************************************
PORTA = %00000000
PORTB = %00000000
'*******************************************************************************
inicio:
Hserin 100,continuo,[SERVO]
continuo:
if SERVO = "a" then
gosub foward
pause 3000
endif
if SERVO = "b" then
gosub back
pause 3000
endif
goto inicio
END
FOWARD:
PWM PORTB.0,1,50
RETURN
BACK:
PWM PORTB.0,255,80
RETURN
Pues bien esto funciona rara mente ya que al digitar "b" se mueve pero se mueve en sentido contrario también mediante pulsos como vibrando es decir primero vibra a el sentido contrario y luego se mueve como debería y el cuando digito "a" hace lo mismo, como si el puerto estuviese mandando mas pulsos (solo digito una vez y despacio).
Notase que en el programa quite la parte para saber si el pic vive por que si la pones entonces si vibra como loco sin digitar nada.
Otro problema que tiene es que tarda mucho en recibir la instrucción, tiene un retardo como de 3 seg aproximadamente después de digitar, pero se que es un error de programación, debe de funcionar y aun tengo la esperanza. Los pulsos pwm funcionan correctamente cuando lo hago mediante un pulsador físico, he tratado con distintos PAUSE variandolo pero creo que con 3 segundos vibra menos (al parecer o es imaginación mía) intente poner la pause después del gosub y dentro del gosub después de el pulso pwm pero nada, POR FAVOR espero una respuesta, prometo que si funciona subo un tutorial de este proyecto que es un robot!
Muchas gracias por leer