tenhle příkaz se dá do návěstí smer a už to funguje( tenhle příkaz neni z mojí hlavy a clověk už to tam zabudoval, ale díky němu, protože já mám nulove zkušenosti tak by mě to nikdy takhle nenapadlo)
S zákmitem tlačítka nemám problém.
A zde přikládám program a už to funguje normálně
Kód: Vybrat vše
;B.7 = koncový spínač "Dveře otevřené"
;B.6 = koncový spínač "Dveře zavřené"
;B.5 = tlačítko
;C.0 = 1. výstup do L293
;C.1 = 2. výstup do L293
start:
if pinB.6 = 1 then goto zacit ; zde je kontrola jestli náhodou nejsou dvěře v mezi poloze
if pinB.7 = 1 then goto zacit
high C.0 ; pokud jsou tak se automaticky zavřou
low C.1
goto start
zacit:
low C.1 ; zastaveni motoru
low C.0
if pinB.5 = 1 then goto smer ; podminka na zmáčknutí tlačítka
goto zacit
smer:
if pinB.5=1 then smer ; ošetření stisknutého tlačítka
if pinB.7 = 1 then goto zavirani ; pokud je otevřeno tak at se zavře
if pinB.6 = 1 then goto otvirani ; opak přechozího
goto zacit
otvirani:
high C.1 ; roztočení motoru
low C.0
if pinB.7 = 1 then goto zacit ; pokud dojel na konec tak at se zastavi
if pinB.5 = 1 then gosub pauza ; podmínka zmáčknutí tlačítka v cyklu.. pokud splněno tak jde na pauzu
goto otvirani
zavirani:
high C.0 ; ; roztočení motoru
low C.1
if pinB.6 = 1 then goto zacit ; znovu akorát na opak
if pinB.5 = 1 then gosub pauza
goto zavirani
pauza:
low C.1 ; vypnuti motoru
low C.0
if pinB.5=1 then pauza ; ošetření stisknutého tlačítka
pauza1:
if pinB.5=0 then pauza1 ; čeká na opětovný stisk tlačítka
pauza2:
if pinB.5=1 then pauza2
return ; vrátí na místo vyvolání podprogramu a pokračuje dál