Stránka 2 z 2
Re: nefungující omezení proměnné
Napsal: 20 bře 2019, 22:37
od DavidO
Vítek píše: ↑20 bře 2019, 18:30
Děkuji všem za ochotu, toto již funguje jen jsem musel změnit pontb = 1 na pontb = 0, aby světlo úplně zhaslo.
což se ovšem netýká problému podtečení
ale to neva, hlavně žes to zjistil.
Vítek píše: ↑20 bře 2019, 18:30
kdyby někoho zajímala celá současná verze programu zde je:
...
Pár připomínek:
1. Když něco voláš přes
gosub
, tak to něco musí končit
return
em. Ty tam ale ve všech těch (barva)op máš skok zase na začátek toho podprogramu.
2. místo
použij
3. modraop, zlutaop a lustrop se liší jen tím, kam se to nakonec pošle tím pwmduty. Čili správněji bys to měl mít jako podprogram, který určí hodnotu pontb a až se to vrátí, tak se pontb pošle kam má, asi takhle:
V rozhodování z ovladače:
Kód: Vybrat vše
case 6
gosub spocitej
pwmduty modra,pontb
case 7
gosub spocitej
pwmduty zluta,pontb
case 8
gosub spocitej
pwmduty lustr,pontb
a pak to spočítání:
Kód: Vybrat vše
spocitej:
irin [3000,ovladac],ir,irb
select case irb
case 17
IF pontb < 11 THEN let pontb=0 ENDIF
IF pontb > 10 THEN let pontb=pontb-10 ENDIF
case 16
let pontb=pontb+10 max 1023
case 73
pontb=1023
case 74
pontb=0
end select
let irb=0
return
Re: nefungující omezení proměnné
Napsal: 21 bře 2019, 22:20
od Vítek
Děkuji za opravení chyb, chyba s gosub a return vznikla postupnými změnami v programu, o možnosti použití do a loop jsem nevěděl. Třetí chybu jsem zatím neopravil, protože když jsem při použití správného programu chtěl stmívat led pásek, musel jsem pokaždé vybrat pásek, který chci stmívat potom snížit/zvednout hodnotu pontb o deset a opět volit led pásek. pokusil jsem se to opravit, ale nepodařilo se tak snad později.