Dario anterior mente habia posteado un proyecto robot seguidor de linea y cumple con tus exigencias compara dos variables determinadas por dos potenciomentros simulados en proteus , lo que debes realizar es al adecuacion del comando para controlar el Servo motor en las lineas straight,left,right desarrolle la comparacion a 15 con referente a los potenciometros para que el pic conteniera el comando y para el motor por lo que es dificil que ambos esten a la misma medicion generandose un parametro de error y lo desea lo puedes implementar a 6 pero no menor ya que la comparacion sera erronea y el motor realizara giro de derecha a izquierda.
Este es dodigo fuente:
[/QUOTE]
espero te sirva
Este es dodigo fuente:
Código:
@ device xt_osc ; oscilador externo XT
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
;ROBOT SEGUIDOR DE LUZ
b0 var byte ;VARIABLE PARA GUARDAR EL VALOR DE LDR1
b1 var byte ;VARIABLE PARA GUARDAR VALOR DE LDR2
b2 var byte ;VARIABLE DE COMPARACION DE LDR1 Y LDR2
p2 var portb.0 ;SALIDA MOTOR1
p3 var portb.1 ;SALIDA MOTOR2
p4 var portb.2 ;SALIA MOTOR2
EN1 var portb.3 ; habilitador inversor giro MOTOR 2
EN2 VAR PORTB.4 ;HABILITADOR MOTOR UNO
LED1 VAR PORTA.0
LED2 VAR PORTA.1
LED3 VAR PORTA.2
start: ;INICIO
pot portb.5,255,b0 ;LEE LDR1 Y GUARDA VALOR EN BO
pot portb.6,255,b1 ;LEE LDR2 Y GUARDA VALOR EN B1
If b0 = b1 then straight ;SI BO =B1 ENTONCER IR ALA RUTINA STRAIGHT
if b0 > b1 then left ;SI BO ES MAYOR A B1 IR A IZQUIERDA
if b1 > b0 then right ;SI B1 ES MAYOR QUE BO ENTONCES IR A DERECHA
straight: ;RUTINA COMIENZO
pwm EN2,125,30:HIGH p2
LOW EN1: low p3:low p4 ; HABILITA MOTOR 1
high led1
goto start ;IR A INICIO
left: ;RUTINA IZQUIERDA
b2 = b0-b1 ;RESTE EL VALOR DE BOY B1 Y GUARDELO EN LA
;VARIABLE B2
if b2 > 15 then left1 ;SIB2 ES MAYOR QUE 15 ENTONCES IR A RUTINA
;IZQUIERDA 1
goto straight ;IR A INICIO
left1: ;RUTINA IZQUIERDA 1
pwm EN2,125,30:HIGH p2
HIGH EN1: LOW P3:high p4 ;ACTIVA SALIDA P3 Y DESACTIVA SALIDA P4
HIGH LED2 ;ENCIENDE TESTIGO
goto start ;IR A INICIO
right: ;RUTINA DERECHA
b2 = b1-b0 ;RESTE EL VALOR DE B1 CON B0 Y GUARDE EL
;VALOR EN B2
if b2 > 15 then right1 ;SI B2 ES MAYOR QUE 15 ENTONCES IR A RUTINA
;DERECHA 1
goto straight ;IR A INICIO
right1: ;RUTINA DERECHA 1
pwm EN2,125,30:high p2
HIGH EN1:HIGH P3:low p4 ;ACTIVA SALIDA P4 Y DESACTIVA SALIDA P3
HIGH LED3 ;ENCIENDE TESTIGO
goto start ;IR A INICIO
end ;FIN DE PROGRAMA
espero te sirva