'--------------------------------------------------
'Declaratii variabile,etichete,etc.
'--------------------------------------------------
'=================================================================
'Programul principal
'=================================================================
output Motor1a 'Se declara porturile la care sunt conec-
output Motor1b 'tate motoarele si LED-urile IR ca iesire
output Motor2a '"output" si apoi se seteaza starea
output Motor2b 'portului sus "high" sau jos "low".
low Motor1a 'Porturile nedeclarate vor fi automat
low Motor1b 'setate ca intrare "input".
low Motor2a
low Motor2b
output IRLedSt
output IRLedDr
high IRLedSt
high IRLedDr
output MotorEn
high MotorEn
'-----------------------------------------------------------------
'Bucla principala
'-----------------------------------------------------------------
Mainloop:
'-------------------------------------------------
'citeste senzorii
'-------------------------------------------------
gosub CitireSenzorIR
'-------------------------------------------------
'afiseaza in fereastra Debug valorile citite
'-------------------------------------------------
print "Stanga ",StangaIR," Dreapta ",DreaptaIR
'-------------------------------------------------
'decide directia deplasarii
'-------------------------------------------------
if DreaptaIR = 0 then 'obstacol detectat la dreapta
gosub StangaInapoi 'motorul stanga inapoi
else 'nimic detectat
gosub StangaInainte 'motorul stanga inainte
endif
if StangaIR = 0 then 'obstacol detectat la stanga
gosub DreaptaInapoi 'motorul dreapta inapoi
else 'nimic detectat
gosub DreaptaInainte 'motorul dreapta inainte
endif
'=================================================================
'Subrutine
'=================================================================
'-------------------------------------------------
'Controlul motoarelor
'-------------------------------------------------
DreaptaInainte:
low Motor1b
high Motor1a
return
DreaptaInapoi:
low Motor1a
high Motor1b
return
StangaInainte:
low Motor2b
high Motor2a
return
StangaInapoi:
low Motor2a
high Motor2b
return
'-------------------------------------------------
'Citeste senzorul IR de proximitate
'-------------------------------------------------
CitireSenzorIR:
low IRLedDr 'activeaza LED IR dreapta
output IRmod 'porneste modulatorul
pause 1 'asteapta o milisecunda
input IRmod 'opreste modulatorul
DreaptaIR = inp.IRsenzor 'citeste senzorul
pause 1 'asteapta o milisecunda
high IRLedDr 'dezactiveaza LED IR dreapta
low IRLedSt 'activeaza LED IR stanga
output IRmod 'porneste modulatorul
pause 1 'asteapta o milisecunda
input IRmod 'opreste modulatorul
StangaIR = inp.IRsenzor 'citeste senzorul
pause 1 'asteapta o milisecunda
high IRLedSt 'dezactiveaza LED IR stanga
return