Příkaz "SETINT"
Re: Příkaz "SETINT"
Dúfam, že som plne pochopil situation....
Ideme ovládať PC hru cez reálny pult. Doteraz čo som pozeral, tak ten pokey je vlastne USB-to-LTP konvertor. Primárne je určný k riadeniu CNC strojov. Neviem ako je to cele zapojené, ale moc by ma to zaujímalo. Čo viem, tak MSTS je možné plne ovládať cez bežnú klávesnicu s PS/2 koncoukou. PICAXE viem čítať tieto signály a aj ich vyhodnocovať. Treba zistiť u známeho, čo všetko vie dostať z PC von (napr.: rýchlosť, napätia, indikácie atď...) a akým spôsobom (asi to budú signály tip digital,PWM,...).
Idem si pustiť film, otvoriť vínko, študovať manuály a keď opíšeš spôsob komunikácie s PC tak skúsim niečo ponavrhovať.
Ideme ovládať PC hru cez reálny pult. Doteraz čo som pozeral, tak ten pokey je vlastne USB-to-LTP konvertor. Primárne je určný k riadeniu CNC strojov. Neviem ako je to cele zapojené, ale moc by ma to zaujímalo. Čo viem, tak MSTS je možné plne ovládať cez bežnú klávesnicu s PS/2 koncoukou. PICAXE viem čítať tieto signály a aj ich vyhodnocovať. Treba zistiť u známeho, čo všetko vie dostať z PC von (napr.: rýchlosť, napätia, indikácie atď...) a akým spôsobom (asi to budú signály tip digital,PWM,...).
Idem si pustiť film, otvoriť vínko, študovať manuály a keď opíšeš spôsob komunikácie s PC tak skúsim niečo ponavrhovať.
Re: Příkaz "SETINT"
Zdravím,
jak jsem psal, řízení lokomotivy v MSTS pomocí reálného pultu řešit není třeba. Ovládání je již pomocí převodníku PoKeys 56U, který de facto nahrazuje klávesnicci, vyřešeno a vše funguje bez jakýchkoli problémů ... http://www.youtube.com/watch?v=RiqR0bIzMyM . Stejně tak je funkční zařízení pro kontrolu bdělosti strojvedoucího, které bylo vytvořeno s použitím Picaxe 08M2 pro případy, kdy lokomotiva jede po nekódovaném traťovém úseku ... http://www.youtube.com/watch?v=zJcVBWsO1z8 .
Řešit je tedy třeba chování mobilní části VZ-tky v případě, kdy lokomotiva jede po kódovaném traťovém úseku. Je tedy zcela nepodstatné, jak se lokomotiva v MSTS pomocí reálného pultu ovládá. Důležité je, že se na již zmíněných pinech pararelního portu PC objevují log.1 či log.0 v závislosti na tom, jaký návěstní znak svítí na návěstním opakovači v kabině lokomotivy na monitoru PC.
Picaxe 14M2 by tedy pracoval jen s úrovněmi log.1 či log.0 přiváděnými jak z onoho pararelníko portu PC, tak z tlačítka či spíše dvou pararelně zapojených tlačítek bdělosti, mikrospínače v brzdiči přímočinné brzdy a spínače v řídícím kontroléru. Uvedené prvky jsou umístěny v reálném pultu a v případě zařízení KBS fungují bezchybně. Vše, co se týká té KBS-ky s Picaxe 08M2 je k dispozici zde http://www.edisk.cz/stahni/40290/KB_Pic ... 2.3KB.html . Ke schématu zapojení bych jen doplnil, že aut.výlukou je myšlen spínač v brzdiči přímočinné brzdy (brzdič BP), který je trvale sepnut při plném zabrzdění lokomotivy a elmech.převodníkem zase spínač v řídícím kontroléru, který spíná jen na krátkou chvíli při pohybu volantu kontroléru mezi jednotlivými výkonovými stupni. Právě tento spínač poskytuje zařízení VZ "informaci" o tom, že strojvůdce manipuluje s kontrolérem.
Dám tedy dohromady schéma mého návrhu připojení prvků k Picaxe 14M2 ať je to přehlednější. Bude-li zájem, není problém dojednat osobní skouknutí řešení pultu. Přeci jen je to lepší než sepisování dlouhých elaborátů.
S pozdravem
David
jak jsem psal, řízení lokomotivy v MSTS pomocí reálného pultu řešit není třeba. Ovládání je již pomocí převodníku PoKeys 56U, který de facto nahrazuje klávesnicci, vyřešeno a vše funguje bez jakýchkoli problémů ... http://www.youtube.com/watch?v=RiqR0bIzMyM . Stejně tak je funkční zařízení pro kontrolu bdělosti strojvedoucího, které bylo vytvořeno s použitím Picaxe 08M2 pro případy, kdy lokomotiva jede po nekódovaném traťovém úseku ... http://www.youtube.com/watch?v=zJcVBWsO1z8 .
Řešit je tedy třeba chování mobilní části VZ-tky v případě, kdy lokomotiva jede po kódovaném traťovém úseku. Je tedy zcela nepodstatné, jak se lokomotiva v MSTS pomocí reálného pultu ovládá. Důležité je, že se na již zmíněných pinech pararelního portu PC objevují log.1 či log.0 v závislosti na tom, jaký návěstní znak svítí na návěstním opakovači v kabině lokomotivy na monitoru PC.
Picaxe 14M2 by tedy pracoval jen s úrovněmi log.1 či log.0 přiváděnými jak z onoho pararelníko portu PC, tak z tlačítka či spíše dvou pararelně zapojených tlačítek bdělosti, mikrospínače v brzdiči přímočinné brzdy a spínače v řídícím kontroléru. Uvedené prvky jsou umístěny v reálném pultu a v případě zařízení KBS fungují bezchybně. Vše, co se týká té KBS-ky s Picaxe 08M2 je k dispozici zde http://www.edisk.cz/stahni/40290/KB_Pic ... 2.3KB.html . Ke schématu zapojení bych jen doplnil, že aut.výlukou je myšlen spínač v brzdiči přímočinné brzdy (brzdič BP), který je trvale sepnut při plném zabrzdění lokomotivy a elmech.převodníkem zase spínač v řídícím kontroléru, který spíná jen na krátkou chvíli při pohybu volantu kontroléru mezi jednotlivými výkonovými stupni. Právě tento spínač poskytuje zařízení VZ "informaci" o tom, že strojvůdce manipuluje s kontrolérem.
Dám tedy dohromady schéma mého návrhu připojení prvků k Picaxe 14M2 ať je to přehlednější. Bude-li zájem, není problém dojednat osobní skouknutí řešení pultu. Přeci jen je to lepší než sepisování dlouhých elaborátů.
S pozdravem
David
Re: Příkaz "SETINT"
Krááása! Já chci taky mašinku
Re: Příkaz "SETINT"
Po delší době zdravím,
řeším simulaci ovládání ovládací skříňky traťového radiového systému na lokomotivě a i tentokrát se trápím s příkazem SETINT.
Použit je mikrokontrolér PICAXE 14M2 a níže uvádím velmi "začátečnický" zápis programu zatím bez použití zmíněného příkazu ...
REM TRS pro pult 749 172-3
trs_kopac_zrychli:
low c.1
sleep 156
high c.4
high b.5
pause 3000
low b.5
pause 4000
high c.1
high b.5
pause 3000
low b.5
stop
Mohl bych poprosit o "nakopnutí" jak řešit návrat na začátek programu v případě, kdy bude na konci běhu programu stisknuto tlačítko připojené na vstup C.0 (na pin C.0 přivedena log.1) ? Nějaké pokusy jsem již prováděl, ale nedařilo se.
Co jsem se dočetl (a vlastně i s nezdarem vyzkoušel), příkaz SETINT lze použít jen jednou. Existuje ale řešení i pro situaci, ve které by na konci běhu výše uvedeného programu došlo ke stisku tlačítka na pinu C.0 a poté k "přeskoku" na níže uvedený program ? Objevila-li by se potom na pinu C.0 po stisku tlačítka log.1, je třeba aby se opět aktivoval program "trs_kopac_zrychli" a tak stále dokola ...
trs_zpomal:
low c.1
sleep 156
high c.2
high b.5
pause 3000
low b.5
stop
Děkuji za případné rady či doporučení.
David
řeším simulaci ovládání ovládací skříňky traťového radiového systému na lokomotivě a i tentokrát se trápím s příkazem SETINT.
Použit je mikrokontrolér PICAXE 14M2 a níže uvádím velmi "začátečnický" zápis programu zatím bez použití zmíněného příkazu ...
REM TRS pro pult 749 172-3
trs_kopac_zrychli:
low c.1
sleep 156
high c.4
high b.5
pause 3000
low b.5
pause 4000
high c.1
high b.5
pause 3000
low b.5
stop
Mohl bych poprosit o "nakopnutí" jak řešit návrat na začátek programu v případě, kdy bude na konci běhu programu stisknuto tlačítko připojené na vstup C.0 (na pin C.0 přivedena log.1) ? Nějaké pokusy jsem již prováděl, ale nedařilo se.
Co jsem se dočetl (a vlastně i s nezdarem vyzkoušel), příkaz SETINT lze použít jen jednou. Existuje ale řešení i pro situaci, ve které by na konci běhu výše uvedeného programu došlo ke stisku tlačítka na pinu C.0 a poté k "přeskoku" na níže uvedený program ? Objevila-li by se potom na pinu C.0 po stisku tlačítka log.1, je třeba aby se opět aktivoval program "trs_kopac_zrychli" a tak stále dokola ...
trs_zpomal:
low c.1
sleep 156
high c.2
high b.5
pause 3000
low b.5
stop
Děkuji za případné rady či doporučení.
David
Re: Příkaz "SETINT"
A proč na to chceš použít zrovna ten příkaz SETINT?
Ten se používá v případě, kdy potřebuješ aby se po stisknutí konkrétního tlačítka provedlo něco kdekoli v celém, nebo části programu.
Pokud to má být funkční jen na konci programu, normálně bych to tam zacykloval místo toho STOP a dal tam odkaz na to tlačítko.
Ten se používá v případě, kdy potřebuješ aby se po stisknutí konkrétního tlačítka provedlo něco kdekoli v celém, nebo části programu.
Pokud to má být funkční jen na konci programu, normálně bych to tam zacykloval místo toho STOP a dal tam odkaz na to tlačítko.
Re: Příkaz "SETINT"
Mám trochu problémy pochopit, co přesně by měl program dělat (kdy se má co spouštět). Pokud je to tak, že po stisku tlačítka se má (jednou) spustit (pod)program "trs_kopac_zrychli" a teprve po jeho skončení se má po dalším stisku tlačítka spustit (pod)program "trs_zpomal", tak použitelným řešením je už dříve zmiňovaný "polling" a přepínání "příznaku", který (pod)program se má spustit. Např. nějak takto:
V programu tvrdě předpokládám, že tlačítko bude uvolněno dřív, než 3 sekundy po stisknutí (konec stisku tlačítka prostě nemám nijak ošetřen).
Pokud by to mělo reagovat na stisk tlačítka i v průběhu vykonávání podprogramů (ještě před jejich dokončením), tak pak už bychom se asi bez přerušení (SETINT) neobešli. Dej vědět, jak to má být.
Kód: Vybrat vše
#picaxe 14M2
symbol co = b0 ; jaky program se ma spustit po stisku tlacitka (1 = zrychli, 2 = zpomal)
co = 1
start:
if pinC.0 = 1 then ; bylo stisknuto tlacitko
if co = 1 then
co = 2
gosub trs_kopac_zrychli
else
co = 1
gosub trs_zpomal
endif
endif
goto start
trs_kopac_zrychli:
...
return ; misto end
trs_zpomal:
...
return ; misto end
Pokud by to mělo reagovat na stisk tlačítka i v průběhu vykonávání podprogramů (ještě před jejich dokončením), tak pak už bychom se asi bez přerušení (SETINT) neobešli. Dej vědět, jak to má být.
Re: Příkaz "SETINT"
Zdravím
a děkuji za tip. Vyzkouším.
Upřesnil bych požadavky ...
Po přivedení napětí na PIC se rozběhne program "trs_kopac_zrychli". Po jeho skončení musí být na pinech C.1 a C.4 log.1 a na B.5 log 0. Stisk tlačítka (na pinu C.0 log.1) bude následovat až po skončení programu, tedy ne za jeho běhu. Také předpokládám, že stisk nebude běžně trvat déle než 3 sekundy, ale protože by mohly systém ovládat i děti, dá se nějak ošetřit stisk delší (nevím, dejme tomu sekund 5-10) ?
Po stisku tlačítka (pin C.0 = log.1) by následoval skok na program "trs_zpomal". Na jeho konci kdy bude na pinu C.2 log.1 a B.5 log.0 by opět následoval stisk stejného tlačítka (pin c.0 = log.1) a znovu by naběhl program "trs_kopac_zrychli".
David
a děkuji za tip. Vyzkouším.
Upřesnil bych požadavky ...
Po přivedení napětí na PIC se rozběhne program "trs_kopac_zrychli". Po jeho skončení musí být na pinech C.1 a C.4 log.1 a na B.5 log 0. Stisk tlačítka (na pinu C.0 log.1) bude následovat až po skončení programu, tedy ne za jeho běhu. Také předpokládám, že stisk nebude běžně trvat déle než 3 sekundy, ale protože by mohly systém ovládat i děti, dá se nějak ošetřit stisk delší (nevím, dejme tomu sekund 5-10) ?
Po stisku tlačítka (pin C.0 = log.1) by následoval skok na program "trs_zpomal". Na jeho konci kdy bude na pinu C.2 log.1 a B.5 log.0 by opět následoval stisk stejného tlačítka (pin c.0 = log.1) a znovu by naběhl program "trs_kopac_zrychli".
David
Re: Příkaz "SETINT"
Pořád mi tam ještě nejsou jasné ty sekundy na stisk tlačítka, ale třeba zatím takto?
Kód: Vybrat vše
REM TRS pro pult 749 172-3
trs_kopac_zrychli:
low c.1
rem sleep 156
high c.4
high b.5
pause 3000
low b.5
pause 4000
high c.1
high b.5
pause 3000
low b.5
stop1:
if pinc.0=1 then goto trs_zpomal
goto stop1
trs_zpomal:
low c.1
rem sleep 156
high c.2
high b.5
pause 3000
low b.5
stop2:
if pinc.0=1 then goto trs_kopac_zrychli
goto stop2
Re: Příkaz "SETINT"
Nastavením "sleep 156" je myšlena změna na výstupních pinech po cca.6-ti minutách po spuštění daného programu.
Děkuji. Vyzkouším ...
... Děkuji, funguje přesně tak jak je třeba.
David
Děkuji. Vyzkouším ...
... Děkuji, funguje přesně tak jak je třeba.
David
Re: Příkaz "SETINT"
To jsem pochopil, mě šlo o:
Také předpokládám, že stisk nebude běžně trvat déle než 3 sekundy, ale protože by mohly systém ovládat i děti, dá se nějak ošetřit stisk delší (nevím, dejme tomu sekund 5-10) ?
Ale jestli to takhle vyhovuje, tak už to neřeš.
Také předpokládám, že stisk nebude běžně trvat déle než 3 sekundy, ale protože by mohly systém ovládat i děti, dá se nějak ošetřit stisk delší (nevím, dejme tomu sekund 5-10) ?
Ale jestli to takhle vyhovuje, tak už to neřeš.