TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Manurando en 29 de Mayo de 2008, 07:26:32
-
Necesito ayuda com mi Primer proyecrto estoy comstruyendo un robot rastreador.
;************************************ Randon_1.asm **************************************
; Sistema de gorbierno RS232 del Microbot Randon v1.0.
;
;
;
;
; La pulsación de cualquiera de estas teclas (A, T, L) activa el estado de las salidas correspondiente
; RB2 (Adelante), RB1 (Atrás), RB0 (Luz) y apaga el resto.
;
; ZONA DE DATOS **********************************************************************
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C
TeclaPulsada ; Va a guardar el contenido de la tecla pulsada.
ENDC
#DEFINE SalidaAdelante PORTB,2 ; Define dónde se sitúan las salidas.
#DEFINE SalidaAtras PORTB,1
#DEFINE SalidaLuz PORTB,0
TECLA_ADELANTE EQU 'a' ; Código de las teclas utilizadas.
TECLA_ATRAS EQU 't'
TECLA_LUZ EQU 'l'
TECLA_PARADA EQU ' ' ; Código de la tecla espaciadora.
; ZONA DE CÓDIGOS ********************************************************************
ORG 0
Inicio
call RS232_Inicializa
bsf STATUS,RP0 ; Configura como salidas las 3 líneas del
bcf SalidaAdelante ; del Puerto B respetando la configuración del
bcf SalidaAtras ; resto de las líneas.
bcf SalidaLuz
bcf STATUS,RP0
call Parado ; En principio todas las salidas deben estar
Principal ; apagadas.
call RS232_LeeDato ; Espera a recibir un carácter.
call TesteaTeclado
goto Principal
; Subrutina "TesteaTeclado" -------------------------------------------------------------
;
; Testea el teclado y actúa en consecuencia.
TesteaTeclado
movwf TeclaPulsada ; Guarda el contenido de la tecla pulsada.
xorlw TECLA_ADELANTE ; ¿Es la tecla del movimiento hacia adelante?
btfsc STATUS,Z
goto Adelante ; Sí, se desea movimiento hacia adelante.
;
movf TeclaPulsada,W ; Recupera el contenido de la tecla pulsada.
xorlw TECLA_ATRAS ; ¿Es la tecla del movimiento hacia atrás?
btfsc STATUS,Z
goto Atras ; Sí, se desea movimiento hacia atrás.
;
movf TeclaPulsada,W
xorlw TECLA_LUZ
btfsc STATUS,Z
goto Luz
;
movf TeclaPulsada,W ; Recupera el contenido de la tecla pulsada.
xorlw TECLA_PARADA ; ¿Es la tecla de parada?.
btfss STATUS,Z
goto Fin ; No es ninguna tecla de movimiento. Sale.
Parado
bcf SalidaAdelante ; Como se ha pulsado la tecla de parada se
bcf SalidaAtras ; desactivan todas las salidas.
bcf SalidaLuz
Adelante
bcf SalidaAtras
bsf SalidaAdelante
bcf SalidaLuz
Atras
bcf SalidaAdelante
bsf SalidaAtras
bcf SalidaLuz
Luz
bcf SalidaAdelante
bsf SalidaLuz
bcf SalidaAtras
Fin return
INCLUDE <RS232.INC>
INCLUDE <RETARDOS.INC>
END
Con este programa solo conseguria el movimiento acia adelante y acia atras alguien sabes coomo podria implemtar dicho programa para poder controlar un servo que actuaria como direccion del robot.
-
Hola, no es necesario un servo, simplemente, con un motor para cada una de las dos ruedas...
si andan ambos motores, avanza o retrocede, si es solo un motor, gira cerrado, si modulas en PWM cada motor, obtendras diferentes giros.... :mrgreen:
-
Gracias por tu respuesta :) , pero como chasis de mi robot uso un cochecito de estos electricos de los niños de esos que biene equipado com una direcion por cremallera como las de los coches de verdad seria interesante acoplar a la barra de direcion un servo y poder mover com la cremallera de direccion como si se tratase del volante , no se si me explico. :mrgreen: