Ayuda con microbasic en programacion para seguidor de linea

bueno amigos necesito ayuda, esta es la programacion de mi robot
Dim ade as byte 'reservo las variables de tipo byte donde almaceno
Dim reg as byte 'los bits que hacen que los motores se muevan
Dim izq as byte
Dim der as byte
Dim ci as byte 'reservo variables para cada uno de los sensores 'centro izquierda
Dim cd as byte 'centro derecha
Dim ei as byte 'extremo izquierda
Dim ed as byte 'extremo derecha
Dim ti as byte 'trasero izquierda
Dim td as byte 'trasero derecha
Dim f1 as byte 'primer frontal
Dim f2 as byte 'segundo frontal
Dim sal as byte

main:
ADCON1=%11001111 'envio datos al registro dandole la orden que conbierta todo el puerto b en digitales
trisc=%00000000 'declaro al puerto c como salidas
trisb=%11111111 'declaro al puerto b como entradas
ade=%01010000 'asigno a mis variables los valores que mandarn al puerto c
reg=%01100000
izq=%10010000
der=%01100000
ci=portb.0 'asigno a mis variables el numero del puerto que manejaran
cd=portb.3
ei=portb.7
ed=portb.4
ti=portb.6
td=portb.5
f1=portb.1
f2=portb.2
sal= portc 'asigno a la variable sal todo el puerto c

A:
'LINEA SIN SALIDA
if (cd=0) and (ci=0) and (f1=0) and (ti=0) and (td=0) then 'Condicion para que el robot detecte una linea que termina
portc=%01100000 'mando al robot a regresarse
end if
'FIEL LINEA NEGRA
if (cd=1) and (ci=1) then
portd=ade
end if
'SALE IZQUIERDA
if (ci=0) and (cd=1) and (ti=0) then
sal=der
delay_ms(90)
end if
'SALE DERECHA
if (cd=0) and (ci=1) and (td=0) then
sal=izq
delay_ms(90)
end if
'ANGULO RECTO DERECHA
if (cd=0) and (ci=0)and (ed=1) and (ei=0) then
sal=der
end if
'ANGULO RECTO IZQUIERDA
if (cd=0) and (ci=0)and (ed=0) and (ei=1) then
sal=izq
end if
'LINEA CORTADA
if (ci=0)and(cd=0) and (f1=1) then
sal=ade
end if
'PUNTA ABIERTA DERECHA
if (ci=0)and(cd=0) and (td=1) then
sal=der
end if
'PUNTA ABIERTA IZQUIERDA
if (ci=1)and(cd=0) and (ti=1) then
sal=izq
end if
'PUNTA CERRADA DERECHA
if (ci=1)and(cd=0) and (td=1) then
sal=der
end if
'PUNTA CERRADA IZQUIERDA
if (ci=0)and(cd=1) and (ti=1) then
sal=izq
end if
'CRUCES
if (ci=1)and(cd=1)and(ei=1)and(ed=1)and(f2=0) then
sal=izq
end if
goto A
end.

el problema es que cuando ya reconocen mis sensores un angulo de 90 grados lo gira pero cuando esta girando el sensor que me sirve para que detecte puntas pasa por la linea negra y se activa y se queda ahi sin saver que hacer
entonces queria saber si en micro basic hay algun comando para poner condicion de "no importa" como hay en digitales, me refiero a una como and or y esas pa poner en los if
su ayuda me serviria de mucho

je je ej siempre pregunto cosas dificiles creo porque nunk me responde... XD
 
Última edición:
Hola, si miras la ayuda me mikrobasic, en Lenguaje Reference -> Operators, el apartado Bitwise Operators
estan expresiones Boleanas. Cuando quiero que se den o no se den condiciones hago cadenas del tipo:

*si se cumple la condicion1 comprueba que se cumple la condicion2 y si esta tambien se cumple haz accion1

If "condicion1" then If "condicion2" then "accion" end if end if

se puede complicar con else o utilizar while .... wend

te pongo un poco de codigo escrito para que se cumplan todas las condiciones cd=ci=f1=ti=td=0

'LINEA SIN SALIDA
if cd=0 then
if ci=0 then
if f1=0 then
if ti=0 then
if td=0 then portc=%01100000
end if end if end if end if end if
 
Última edición:
Atrás
Arriba