Pár slov úvodem
Panel jističů je další část kokpitu, kterou jsem začal stavět na základech kokpitu C172 Kapitána Boba. Ale tato část se ukázala být trochu náročnější. Začalo to s drobnými zádrhely, jako například tím, že elektromagnety, které Kapitán Bob použil, už nebyly k dispozici. Takže jsem si musel objednat podobné a samozřejmě jsem kvůli tomu musel provést drobné úpravy v 3D tištěných modelech.
Další věc je, že část kokpitu C172 „s jističi“ Kapitána Boba je také ještě „rozpracovaná“… dokumentace k zapojení a programování je neúplná, takže se nejedná o přímočaré a jednoduché „svépomocí“ řešení . Ale zkušenosti, které jsem získal při stavbě předchozích částí kokpitu, se mi teď hodily.
Galerie
Popis je dobrá věc, ale obrázeky jsou lepší:
V galerii si můžete prohlédnout tělo jističe – což je prvek, do kterého bude namontován elektromagnet a mikrospínač. Tím vznikne simulovaný jistič, který bude namontován do panelu. Jsou zde 2 obrázky znázorňující můj návrh panelu s namontovanými jističi. Tento panel je samozřejmě specifický pro můj kokpit, protože má nepravidelné tvary. Ale myslím, že ide je jasná. Poslední dva obrázky ukazují „montážní krabici elektroniky“, protože simulované jističe potřebují trochu víc… Například místo, kde se setkávají dráty a kde bude deska s relátky (které ve skutečnosti ovládají elektromagnety).
Zapojení
Níže je obrázek zapojení panelu jističů:

Ok, „obvod“ jističe má o něco více drátů než kterýkoli jiný, který jsem doposud při stavbě mého kokpitu použil. Je tam deska Arduino Mega 2560 (vpravo nahoře na diagramu), která bude naprogramována tak, aby tvořila „mozek“ mezi obvodem a simulátorem. Je napájena vlastním 9V zdrojem – ten na obrázku není nakreslený.
Pod ní (v pravé dolní části obrázku) jsou znázorněny zdroje napájení – 12V a 5V získaných z modulu 20/24pinového napájecího adaptéru ATX, který používám k napájení většiny kokpitu. Elektromagnety pracují s 12V, spínače s 5V.
Na levé straně obrázku vidíte mých osm jističů, z nichž každý se skládá z elektromagnetu a spínače. Oba jsou namontovány na těle jističe zmíněném v předchozích odstavcích. Elektromagnet je obousměrný, samodržící. Co to znamená? Znamená to, že může pohybovat tou osičkou, která jím prochází, oběma směry v závislosti na směru napětí přivedeného na jeho vstupy. A osa si udrží svou polohu i po odpojení napětí. Potřeboval jsem, aby elektromagnet „vyskočil“ z těla jističe. Metodou pokus-omyl jsem zjistil, že pro můj směr montáže elektromagnetu do těla jističe potřebuji +12V na jeho černém vodiči a GND na červeném vodiči.
Elektromagnet je řízen skrze relé, které je řízeno deskou Arduino. Kombinace tedy funguje jako elektronický spínač, který pouze říká jističi (elektromagnetu), aby se „vysunul“. Stačí nám pouze krátký signál ke změně stavu – tedy, pouze k „vysunutí“, neexistuje způsob, jak obrátit polaritu napětí, aby se „zasunul“ (v tomto obvodu, ne že by to vůbec nešlo). Což u jističe ani není potřeba, jakmile se vysune, měl by být zasunut zpět ručně. Dalším důvodem je, že pokud by na elektromagnetu bylo trvale přítomno napětí, nebylo by možné ho zasunout zpět. Elektromagnet má také tendenci se při trvalém zatížení dost zahřívat, takže k němu chceme přivádět napájení pouze v případě potřeby. To je také důvod, proč byla použita specifická deska s relé.
Všimněte si, že deska s relátky má jumpery, které umožňují nastavit, zda budou relé pracovat s logickou 1 (HIGH) nebo 0 (LOW). Požadované chování je následující: Arduino (prostřednictvím programování MobiFlight) nastaví na určitou dobu požadovaný výstup na HIGH, aby jistič „vyskočil“. Relé se zapne, čímž pustí +12V na elektromagnet, čímž se obvod uzavře a jistič se „vysune“. Takže +12V je na elektromagnetu pouze po krátkou, nezbytně nutnou dobu. Většinou je elektromagnet bez napájení. To vše 8krát 🙂
Jenže, většina relé desek pro Arduino pracuje s logickou 0 (LOW) a s takovou logikou je velmi problematické dosáhnout stejného požadovaného chování. Vyžadovalo by to nějaká elektronická řešení, jako jsou tranzistory, úpravy firmwaru MobiFlight nebo jiné programátorské šílenosti…
No, je trochu náročné popsat všechna „proč“… takže to prostě berte tak, jak je to napsáno, a pořiďte si desku s relé, která umožňují pracovat s logickou 1 (HIGH) 🙂
Možná se ptáte, k čemu ty spínače? No, elektromagnet sice můžeme přepnout, ale bez spínače bychom v žádném případě nevěděli, v jaké poloze se právě nachází. Se spínačem můžeme reagovat na obě situace – jistič byl „zasunut“ nebo „vysunut“ (ať už elektronicky nebo ručně).
+5V je připojeno ke svorce C (Common) spínače. Zem je připojena ke svorce NC spínače přes 10K-Ohm pull-down rezistor . Svorka NC je také připojena ke vstupu Arduina. V tomto zapojení bude na vstupu Arduina logická 1 (HIGH), když spínač není stisknutý. To znamená, že elektromagnet (a tedy i jistič) je „vysunutý“. Když je spínač „zasunutý“, bude na odpovídajícím vstupu Arduina pro spínač logická 0. To vše 8krát 🙂
Jen tak pro info, častější je mít logiku obrácenou – HIGH při stisknutí spínače a LOW při uvolnění spínače. V této „simulaci“ jističů však očekávám, že spínače budou většinu času, kdy je obvod napájen (při použití simulátoru), stisknuty. A stejně jako v případě elektromagnetů jsem je chtěl mít pod napětím pouze tehdy, když to funkčnost vyžaduje.
To je v podstatě vše, co se týče zapojení. Střední část obrázku obsahuje zmíněný modul desky s relátky a propojovací vodiče – což jsou pouze uzly pro distribuci +5V a +12V ke komponentám, které je vyžadují. Všimněte si, že GND je pro obvody 5V a 12V oddělen, takže jejich setkávací bod je někde v modulu 20/24pinové desky napájecího adaptéru ATX nebo dále v napájecím zdroji.
Podívejte se na obrázky skutečného „fyzického“ zapojení a následujte dráty (ne bílého králíka):
Níže je galerie s použitými díly… snad vám pomohou najít alternativy, až za pár měsíců odkazy níže přestanou být platné 🙁
Programování – základní úvahy
No, programování panelu jističů bylo trochu… složitější. Nejdřív si na to najít čas, přijít na to, jak to udělat a s jakým letadlem to … udělat. Vlastně nejdřív najít letadlo, pak to vymyslet 🙂 Protože, možná jste si všimli, že ne každé letadlo v MSFS jističe simuluje. Dělají to jen některá z nich, nebo bychom možná měli říct, že jen někteří vývojáři to dělají, a většinou spíše ne.
To je také další úskalí jističů. Pro každé letadlo budete potřebovat jinou konfiguraci (programování) MobiFlightu. Není to něco jako čtení rychlosti letu, což je standardní funkce implementovaná stejným způsobem pro všechna letadla, takže můžete vytvořit simulovaný ukazatel rychlosti letu, který bude fungovat se všemi letadly.
Ne, musíme najít letadla, která simulují jističe, zjistit, jak fungují, a vytvořit pro ně profil (programování) pro MobiFlight.
Vybral jsem letadlo, jedno z mých oblíbených, které má simulované jističe, a začal jsem vymýšlet, jak přimět své „fyzické“ jističe, aby fungovaly tak, jak chci. Což je:
- „Fyzický“ jistič by se měl „vysunout“, když je jistič v simulátoru vysunut – bez ohledu na to, zda tím, že na něj bylo kliknuto, nebo zda je to spuštěno nějakou poruchou (tedy když skutečně chrání obvod).
- Když „vytáhnu“ „fyzický“ jistič, musí být vytážen i příslušný jistič v simulátoru.
- Když „zasunu“ „fyzický“ jistič, musí být zasunout i příslušný jistič v simulátoru.
Zní to docela logicky, ne? Dále, pokud v simulátoru zasunete vytažený jistič, zatímco je ten „fyzický“ vytažený, ten „fyzický“ zůstane vytažený. Myslím, že i ve skutečném letadle je nutné je „resetovat“ ručně, takže se nemohou samy „zapnout“. A jak už bylo řečeno, zapojení našich simulovaných jističů to ani neumožňuje.
Každopádně mi chvíli trvalo, než jsem přišel na to, jak to v MobiFlightu udělat. Protože když jsem se do toho ponořil hlouběji, pracoval jsem s přepínacími událostmi – pro spuštění/vypnutí jističe. Když se ponořím ještě hlouběji, přicházejí na řadu složitější „pokud“, například když vytáhnu „fyzický“ jistič, měl by se vytáhnout i ten v simulátoru. Máme ale pouze událost přepnutí, takže ji musíme spustit pouze tehdy, když je jistič v simulátoru zasunut, jinak se zasune i při vytahování „fyzického“ jističe. Události vytažení nebo zasunutí „fyzického“ jističe se zachycují pomocí spínače namontovaného na každém tělese jističe spolu s elektromagnetem. A když se jistič v simulátoru vysune, měl by se vysunout i „fyzický“ jistič. Toho zas dosáhneme pomocí elektromagnetu. Ale jakmile se elektromagnet spustí, spínač, který držel, spustí událost „Při uvolnění“, čímž se spustí událost „vysunutí jističe“ – která, pokud není správně implementována, může jistič v simulátoru „zpět zasunout“. Také není nutné spouštět elektromagnet, když jistič vysuneme ručně. Musíme tedy rozlišit, zda k „vytažení“ došlo v důsledku události v simulátoru, či nikoli. A ještě je nutné „vypnout“ elektromagnet, jakmile jistič „vyskočí“. Protože pokud to neuděláme, nepůjde nám jistič „zatlačit“ zpět. Nemluvě o tom, že dlouhodobé napájení elektromagnetu ho bude zahřívat, což může zkrátit jeho životnost, zbytečně spotřebovávat energii atd.
Pořád jste se mnou? Dobře, když jsem našel řešení a později jej zkoušel s dalšími letadly, ukázalo se, že některé části programování MibiFlightu jsou pro všechna letadla stejná. Ale začněme od začátku, se vstupy a výstupy.
„Vstupy“ a „výstupy“
Arduino Mega 2560, které jsem použil při implementaci první fáze kokpitu mého leteckého simulátoru, je téměř kompletně využité. Musel jsem tedy přidat druhé (na což jsem byl připraven), protože samotný panel jističů spotřebuje dalších 16 vstupů/výstupů.
Můj panel s jističi má dvě řady jističů, každá řada obsahuje čtyři. Pro každý jistič je k Arduinu připojen jeden „vstup“ a jeden „výstup“ (tedy dva vodiče pro jeden jistič). „Vstup“ je spínač namontovaný na jističi a „výstup“ je kabel ovládající relé, které zase ovládá elektromagnet jističe. Vstupy jsem tedy pojmenoval CB_SW_HR1 až CB_SW_HR4 – to jsou spínače ve „vyšší řadě“ a CB_SW_LR1 až CB_SW_LR4 – spínače ve „spodní řadě“. Podobně jsou „výstupy“ pro „elektromagnety“ pojmenovány EM_CB_HR1 až EM_CB_HR4 a EM_CB_LR1 až EM_CB_LR4. Dejme si to i do tabulky:
| Číslo jističe | Vstup / Výstup | Horní řada | Spodní řada | 
| 1 | Spínač | CB_SW_HR1 | CB_SW_LR1 | 
| Elektromagnet | EM_CB_HR1 | EM_CB_LR1 | |
| 2 | Spínač | CB_SW_HR2 | CB_SW_LR2 | 
| Elektromagnet | EM_CB_HR2 | EM_CB_LR2 | |
| 3 | Spínač | CB_SW_HR3 | CB_SW_LR3 | 
| Elektromagnet | EM_CB_HR3 | EM_CB_LR3 | |
| 4 | Spínač | CB_SW_HR4 | CB_SW_LR4 | 
| Elektromagnet | EM_CB_HR4 | EM_CB_LR4 | 
Myslím, že uvádět zde skutečná čísla PINů použitých na Arduinu není potřeba, protože si to můžete zapojit jinak. Jen pokud chcete vyzkoušet mé profily MobiFlight, musíte použít výše uvedené pojmenování, pokud nechcete všechno znovu naklikávat.
„Společné“ programování
Prvním letadlem, se kterým jsem jističe vyzkoušel, byl Beechcraft Bonanza A36, respektive úžasná verze Steam Gauge Overhaul – Analog Bonanza od Black Square.
Doufám, že jste nějakým způsobem pochopili ten dlouhý odstavec v úvodu k programování výše – abych nemusel opakovat myšlenky a mohli jsme začít s těmi jednoduchými věcmi.
Zapamatování si stavu jističe (jeho spínače)
Abychom znali stav jističe, vytvoříme v MobiFlight proměnnou a nastavíme ji na příslušnou hodnotu, kdykoli je jistič „vysunut“ nebo „zasunut“.
Podívejme se na příklad jističe číslo 4 v horní řadě. Vytvořte novou konfiguraci na záložce Input configs v MobiFlight. Dal jsem k ní popis: CB – HR4 (Button State).

Na první kartě – Input, v sekci Choose input vyberte v seznamu Module možnost MF_Mega_CB. To je deska Arduino, ke které je připojen náš panel s jističi. V seznamu Device vyberte CB_SW_HR4. To je spínač namontovaný na čtvrtém jističi v horní řadě panelu.
Dále, níže, uvidíte další záložky jako On Press, On Release atd. Zůstaňte na té první – On Press. Zde v části Action Type vyberte MobiFlight – Variable. Po provedení výběru se níže zobrazí sekce Variable Settings. V části Type vyberte Number (myslím, že je to výchozí hodnota, takže už možná bude vybrána). Do pole Name zadejte iCBHR4BtnState. Toto je název naší proměnné. Nemusíte ji nikde deklarovat, deklaruje se (vytváří) tímto prvním použitím. Do pole Value zadejte 1. Nyní přepněte na záložku On Release.
Na této kartě je to stejné jako na kartě On Press. Vyberte tedy MobiFlight – Variable pro volbu Action Type. Nastavení proměnné bude opět Type=Number, Name=iCBHR4BtnState (možná už jej budete moct vybrat, poku ne, napiště jej. Výběr bude pravděpodobně fungovat po opětovném otevření celého dialogu, až se MobiFlight o nové proměnné skutečně dozví). Zde je ale změna, nastavte Value na 0. Pak už je to zde vše. Kliknutím na Ok můžete dialog zavřít a dokončit tak úpravy této vstupní konfigurace.
Dobře, takže co že jsme to udělali? Právě jsme nakonfigurovali jednoduchou vstupní akci, která uloží 1 do proměnné MobiFlight s názvem iCBHR4BtnState vždy, když je stisknut spínač čtvrtého jističe v horní řadě panelu jističů. To znamená, že jistič je „zatlačen“, protože hřídel procházející elektromagnetem stiskne spínač. Pokud je jistič „vysunut“, hřídel již na spínač netlačí, takže se „uvolní“ a MobiFlight uloží do proměnné iCBHR4BtnState hodnotu 0.
Tato konfigurace, jak asi tušíte, je nezávislá na letadle, které máte načtené v simulátoru. A existuje ještě jedna.
Odpojení elektromagnetu jističe
Tentokrát přidejte novou konfiguraci výstupu na záložce Output configs. Pojmenoval jsem ji (dal jí popis): CB – HR 4 – Em OFF when CB switch released OUT.
Na první kartě – Sim Variable vyberte v první dostupné možnosti, kterou je Select Variable Type, možnost Mobi Flight Variable. Poté se zobrazí sekce Variable Settings. Zde v možnosti Type vyberte Number (možná bude předvybrána). Jako Name by jste měli být schopni vybrat proměnnou iCBHR4BtnState, protože jsme ji již definovali v předchozí „vstupní“ konfiguraci. Pokud ne, tak ji tam zapiště. Poté přejděte na kartu Display.
Zde v sekci Display type vyberte v možnosti Choose možnost Output Device. Ve výběru modulu Module vyberte desku Arduino MF_Mega_CB. A v typu použití Use type of vyberte „LED / Output“ (výstupy připojené k desce relé, která řídí elektromagnety, jsou konfigurovány jako LED / Output zařízení). Měla by se zobrazit sekce Display Settings, pokud se tak již nestalo. V části Select Pins vyberte EM_CB_HR_4, což je výstup připojený k relé ovládajícímu příslušný elektromagnet pro čtvrtý jistič v horní řadě. Poté můžete přepnout na kartu Precondition.
V seznamu Precondition list by měla být „prázdná položka“. Vyberte ji. Po provedení této akce by se dole měly zobrazit sekce Precondition type a Precondition settings, které by i mělo být možné upravovat. V poli Use type of v sekci Precondition type vyberte MobiFlight Variable. V sekci Precondition settings vyberte nebo zadejte iCBHR4BtnState do možnosti Choose variable a poté nastavte hodnotu If current value is na = 0.
Tato konfigurace výstupu je zodpovědná za vypnutí elektromagnetu, když je fyzický jistič „vysunut“, tj. když hřídel elektromagnetu přestane tlačit na příslušný spínač.
Možná si teď říkáte: Jseš si jistej? Ano, jen se mnou mějte strpení. Později, až vám ukážu, jak spustit elektromagnet, uvidíte, že se nejedná o „chvilkovou“ událost. Takže od okamžiku oné události by na elektromagnetu bylo napětí a zůstalo by tam – což by vám bránilo v opětovném zapnutí jističe, zahřívalo by elektromagnet atd. Jakmile je tedy jistič „vytažený“, musíme přerušit napájení jeho elektromagnetu. Jak to dělá výše uvedená konfigurace výstupu?
Stav tlačítka (jističe) známe díky předchozí vstupní konfiguraci. Je uložen v MobiFlight proměnné iCBHR4BtnState. Ta má hodnotu 1 při stisknutí spínače a 0 při jeho uvolnění. V této konfiguraci výstupu jsme na první kartě Sim Variable definovali reakci na změnu této proměnné. Poté jsme na kartě Display řekli MobiFlightu, aby hodnotu této proměnné odeslal jako výstup na PIN Arduina, který ovládá elektromagnet (zde 0 znamená VYP, 1 znamená ZAP). Doposud by tato konfigurace výstupu reagovala na změnu proměnné mezi oběma hodnotami. Také jsme ale definovali předběžnou podmínku, která říká, že iCBHR4BtnState musí být 0, což znamená, že konfigurace bude zpracována pouze tehdy, když je iCBHR4BtnState = 0, tedy pouze při uvolnění jističe, když jistič „vyskočí“ (bez ohledu na to, zda byl aktivován simulátorem nebo ručně), a proto bude hodnota odeslaná na výstupní PIN ovládající elektromagnet vždy 0 (v případě této konfigurace). Takže elektromagnet vypne, pokud byl ZAPNUT, nebo to bude „jakoby nic“, pokud už byl VYPNUT.
Uvedená konfigurace vstupů a výstupů je stejná pro všech 8 jističů a pro všechna letadla. Samozřejmě nejsou „úplně stejné“, mění se název proměnné, popis, vstupy a výstupy.
Programování jističů pro Steam Gauge Overhaul – Analog Bonanza
Než budeme moci pokračovat ve vytváření konfigurací MobiFlightu, musíme si nejprve určit, které jističe simulované letadlem chceme propojit s našimi fyzickými jističi. Možná budete chtít všechny, ale můj panel jističů jich má pouze 8, takže si musím vybrat jen některé, protože letadlo jich bude pravděpodobně mít více. A pak musíme zjistit, jak fungují.
Analýza jističů letadla
Prohlížel jsem si tedy virtuální kokpit letadla – objevoval různé dostupné jističe a zkoušel, co dělají (které mi způsobí největší problémy, když se vypnou a související systémy přestanou fungovat), a rozhodl jsem se propojit následující jističe s mými fyzickými jističi:
| ACC POWER | ANCVS RELAY | A/P CONT | AUD PANEL | 
| FLAP MOTOR | LANDING GEAR RELAY | COM 1 | NAV 1 | 
Nyní, když víme, jaké jističe chceme propojit, dalším krokem je zjistit, jak fungují. Jak je můžeme aktivovat – vysunout a zasunout zpět, aniž bychom na ně museli klikat.
Jednou z cest, kterou se můžete vydat, je prostudovat soubory s chováním modelů letadel (model behavior). Například letadla z Black Square jsou docela pěkně komentovaná, takže není tak těžké tam nějaké informace najít. Nebo, určitě také můžete získat nějaké poznatky otevřením letadla v editoru MSFS (po povolení nástrojů pro vývojáře). Ale už je to nějaký čas, co jsem si s tím hrál, a bylo to kvůli scenériím… a obojí jsou spíše cesty „MSFS vývojáře“. A to je opravdu mimo rámec tohoto článku. Pokusím se tedy stručně popsat, jak jsem našel co jsem potřeboval s pomocí FSUIPC.
Spustil jsem si tedy MSFS, nahrál požadované letadlo, změnil velikost okna MSFS na zhruba polovinu plochy (abych viděl i ostatní programy) a otevřel FSUIPC z té „skrýše ikon“ poblíž hodin v pravém dolním rohu hlavního panelu Windows.
V FSUIPC je potřeba povolit logování do konzole – stačí kliknout na nabídku Log a tam na Open console. Měla by se otevřít černá konzole, která vypadá jako okno příkazového řádku, ale moc se tam toho nestane, dokud nezaškrtnete nějakou možnost pro logování v nabídce Log. Jednou z možností, která se nabízí, je možnost Events.
Ale s touhle volbou musíte být rychlí. Letadla obvykle generují spoustu událostí. Proto také jakmile jsem ji povolil, konzole se samozřejmě začala rychle plnit různými událostmi. Rychle jsem pak přesunul kurzor na jistič, který jsem chtěl vyzkoušet, a několikrát na něj klikl a občas jsem dokonce koutkerm oka zaznamenal v konzoli jinou událost. Pak se musíte rychle vrátit do okna FSUIPC a vypnout protokolování událostí, což výstup do konzole zase zastaví. Nyní máte možnost si v klidu projít výstup v konzoli a hledat „něco jiného“. Většina zaznamenaných událostí bude stejných a budou se opakovat, protože se spouštějí automaticky bez jakéhokoli zásahu uživatele. Ale s největší pravděpodobností mezi nimi najdete i nějaké další. Jejich počet by měl odpovídat počtu kliknutí na jistič, ale samozřejmě jsem to nikdy nepočítal. Prostě jsem jen jistič stiskl několikrát, abych zachytil „vzorec“, který by mi pomohl identifikovat správnou událost.
Na obrázku výše vidíte, že jsem vyzkoušel jistič COM 1. V konzoli jsem zvýraznil událost ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE. To je událost spuštěná přepnutím jističe. A můžete ji vidět ještě dvakrát výše mezi všemi těmi opakujícími se událostmi. Na zvýrazněném řádku si všimněte, že má 2 parametry – Param 1 = 3 a Param 2 = 52. Param 1 je index zdrojové sběrnice a Param 2 je cílový obvod. Událost ELECTRICAL BUS_TO_CIRCUIT_CONNECTION TOGGLE je jakýmsi programovým ekvivalentem elektrického spínače. Jak název napovídá, přepíná (připojuje nebo odpojuje) obvod k a od napájecí sběrnice. Více si o ní můžete přečíst zde. Hlubší ponoření se do ní také přesahuje rámec tohoto článku. Prozatím nám stačí mít událost a parametry.
Pojďme se podívat ještě na jeden příklad:
Na obrázku výše jsem se pokusil najít událost pro jistič ANCY RELAY. A můžete si všimnout, že tento jistič je řízen jinou událostí: ELECTRICAL_BUS_TO_BUS_CONNECTION_TOGGLE. Má také parametry, Param1 = 3 a Param2 = 5. Tentokrát se jedná o zdrojovou a cílovou sběrnici, protože tato událost spojuje/odpojuje dvě napájecí sběrnice. Princip je ale stejný.
Poté, co jsem takto prozkoumal všechny jističe, které mě zajímaly, jsem skončil s následující tabulkou:
| Jistič | Číslo sběrnice | Číslo obvodu | Událost | 
|---|---|---|---|
| ACC POWER | 2 | 21 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| ANCVS RELAY | 3 | 5 | ELECTRICAL_BUS_TO_BUS_CONNECTION_TOGGLE | 
| A/P CONT | 3 | 61 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| AUD PANEL | 3 | 49 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| FLAP MOTOR | 4 | 3 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| LANDING GEAR RELAY | 2 | 6 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| COM 1 | 3 | 52 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| NAV 1 | 3 | 56 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
Nastavení konfigurace MobiFlight pro spínač jističe
Začněme znovu s konfigurací vstupů. Doufám, že jste si přečetli kapitolu „společné programování“ výše, pokud ne, udělejte to. Abychom to shrnuli, již jsme definovali jednu konfiguraci vstupů pro uložení stavu jističe do proměnné MobiFlight. Ale ta nemá vůbec žádný vztah k simulátoru. Nyní řekneme MobiFlightu, aby „vysunul“ jistič letadla, když se náš fyzický jistič „vysune“, a aby ho „zasunul“, když se náš fyzický jistič zasune. A níže je jak na to.
Znovu začněte s novou konfigurací vstupu na kartě Input configs. Pojmenoval jsem ji takto: CB – HR 4 (Switch CB on switch PRESS/RELEASE).
Na první kartě Input vyberte v možnosti Module desku MF_Mega_CB a v možnosti Device možnost CB_SW_HR_4. Jedná se o spínač namontovaný na čtvrtém jističi v horní řadě panelu jističů. Tedy stejně, jako jsme to udělali pro konfiguraci vstupu v „společném“ programování. Zbytek je ale jiný. Na kartě On Press vyberte v možnosti Action Type volbu Microsoft Flight Simulator. Dále v části Select Preset zaškrtněte políčko Show Preset Code, díky čemuž se tobrazí textového pole pro zadání kódu předvolby. Zadejte (nebo zkopírujte) následující kód:
3 (>A:BUS LOOKUP INDEX, Number) (A:CIRCUIT CONNECTION ON:56, Bool) 1 != if{ 56 3 (>K:2:ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE) }A nyní ta část, kde se to pokusím vysvětlit 🙂 Syntaxi vysvětlovat nebudu, je to napsané v RPN notaci a pokaždé, když v ní potřebuji něco napsat, se mi z toho točí hlava. Asi proto, že to bývá obvykle jednou tak za půl roku, takže se to učím pořád od začátku :/ O RPN notaci si můžete přečíst zde. Začněme touto částí:
56 3 (>K:2:ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE)Tato část kódu představuje událost, kterou jsme našli v předchozí kapitole – Analýza jističů letadla – viz tabulka. Událost má 2 parametry, které jsou v notaci RPN zapsány před voláním události. Podle názvu události a parametrů 56 a 3 zjistíte, že toto volání události slouží k přepnutí jističe COM 1. Protože se však jedná o událost typu „přepnutí“, nemůžeme ji pouze „zavolat“ v události On Press fyzického jističe. Pak bychom se totiž mohli ocitnout v následující situaci. Zatlačíme jistič, čímž se stiskne spínač a spustí se událost On Press v MobiFlight, která následně spustí kód pro přepnutí jističe letadla. Pokud by však jistič v letadle již byl stisknutý (obvod připojen), vyskočí (obvod se odpojí). To by nakonec desynchronizovalo náš fyzický jistič s jističem v simulátoru. Tomu má za úkol předejít zbytek kódu:
3 (>A:BUS LOOKUP INDEX, Number) (A:CIRCUIT CONNECTION ON:56, Bool) 1 != if{ ... }Jak jsem již zmínil, událost ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE de facto připojuje/odpojuje „obvod“ k/od „napájecí sběrnice“. V tomto případě stiskneme jistič, a chceme aby byl obvod ke sběrnici připojen. Protože když jsou jističe stisknuty, resetují se, aby se obnovila funkčnost zařízení, která jsou jím chráněna. Než však událost spustíme, musíme otestovat, zda je skutečně obvod číslo – 56 odpojen od napájecí sběrnice – 3. To dělá výše uvedený kód. Kód 3 (>A:BUS LOOKUP INDEX, Number) vyhledá interní číslo sběrnice simulátoru pro napájecí sběrnici číslo 3 a uloží ho do zásobníku. Kód (A:CIRCUIT CONNECTION ON:56, Bool) testuje „proměnnou letadla (A)“ – která udává zda je obvod s daným číslem zapojen. Tato kontrola vyžaduje číslo obvodu – 56 a číslo napájecí sběrnice – 3 (které se bere z vrcholu zásobníku). Výraz 1 != pak kontroluje, zda výsledek kontroly není 1 (protože 1 – true – znamená, že obvod je připojen ke sběrnici, 0 znamená, že obvod není připojen ke sběrnici). Pokud bychom to popsali obráceně, událost spínače se spustí, když je výsledek kontroly 0 – tedy když obvod není připojen ke sběrnici a chceme ho připojit zpět . A to, co je mezi if{ a }, je ten kód, který se spustí, když je kontrola pravdivá – zde je volání události pro připojení obvodu ke sběrnici.
Přeloženo do lidské řeči to znamená: „Pokud obvod číslo 56 není připojen ke sběrnici číslo 3, připoj obvod číslo 56 na sběrnici číslo 3.“
Snad se mi to alespoň trochu podařilo vysvětlit 🙂 Samozřejmě, pokud jste k tomu přišli jako k „nepopsaná kniha“, takže věci jako „zásobník“, „proměnná letadla“ nebo „událost“ jsou pro vás zcela cizí, budete se muset taky trochu začíst do MSFS SDK.
Stejný přístup je použit na kartě On Release:
Action Type bude opět Microsoft Flight Simulator. Níže v části Select Preset zaškrtněte políčko Show Preset Code, čímž zobrazíte textové pole pro zadání kódu předvolby, a zadejte nebo zkopírujte následující kód:
3 (>A:BUS LOOKUP INDEX, Number) (A:CIRCUIT CONNECTION ON:56, Bool) 0 != if{ 56 3 (>K:2:ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE) }Toto je téměř stejný kód, jaký jsme zadali na záložce On Press, liší se pouze podmínkou 0 != , která pouze invertuje logiku – testuje, zda je obvod číslo 56 připojen k napájecí sběrnici 3, než se spustí událost, která jej přepne a tím odpojí obvod 56 od napájecí sběrnice 3.
Nastavení konfigurace MobiFlight pro elektromagnet jističe
Zbývá implementovat ještě jedno chování, a to aktivovat elektromagnet „fyzického“ jističe, aby se jistič „vysunul“ v případě, že „vyletí“ jistič v simulátoru .
Za tímto účelem přidáme do seznamu na kartě Output configs v MobiFlight další konfiguraci. Zadal jsem si k ní popis: CB – HR 4 – Em ON when CB switch pressed IN. Stále pokračujeme v nastavování čtvrtého jističe v horní řadě panelu jističů, který ovládá COM 1 pro letadlo Bonanza A36.
Na první kartě SimVariable vyberte u možnosti Select Variable Type možnost SimConnect (MSFS). Poté v části Select Preset zaškrtněte políčko Show Preset Code, protože opět zadáme vlastní kód předvolby a napište nebo zkopírjte následující kód:
3 (>A:BUS LOOKUP INDEX, Number) (A:CIRCUIT CONNECTION ON:56, Bool) 0 ==Tento kód napsaný v notaci RPN kontroluje, zda je obvod číslo 56 odpojen od napájecí sběrnice číslo 3. Tato konfigurace výstupu se tedy spustí, když je to pravda, a to je v okamžiku, kdy jistič COM 1 „vyskočí“. Nespustí se to ale také vytažením „fyzického“ jističe? Počkejte si na záložku Precondition.
Jak jste si samozřejmě všimli, toto je část kódu, kterou jsme zadali do události On Press jističe v kapitole Nastavení konfigurace MobiFlight pro spínač jističe, jen je podmínka pro lepší čitelnost zapsána jako 0 == místo 1 !=. Ale co se logiky týče, jedná se o naprosto stejné podmínky.
3 (>A:BUS LOOKUP INDEX, Number) (A:CIRCUIT CONNECTION ON:56, Bool) 1 !=Na kartě Display nejprve nastavíme sekci Display type. V možnosti Choose vyberte Output Device. Poté v seznamu Module vyberte MF_Mega_CB a v možnosti Use type of vyberte LED / Output.
V seznamu Select Pins vyberte EM_CB_HR_4, což je výstup Arduina připojený ke vstupu reléové desky ovládající relé připojené k elektromagnetu čtvrtého jističe v horní řadě našeho panelu jističů. Hodnota, kterou MobiFlight nastaví na výstup, bude 1 (HIGH – 5V), protože 1 bude výsledkem sledovaného kódu definovaného na předchozí kartě Sim Variable.
Chceme zapnout elektromagnet jističe pouze tehdy, když jistič v důsledku události v simulátoru „vyskočí“, nikoli při ručním vytažení „fyzického“ jističe. Jak toho dosáhneme? Přidáme předběžnou podmínku, kde iCBHF4BtnState = 1, což znamená, že „fyzický“ spínač jističe je stisknut, takže „fyzický“ jistič je „zasunut“. Tato „konfigurace výstupu“ tak říká MobiFlightu, aby zapnul elektromagnet, když je spínač jističe stisknut a obvod číslo 56 je odpojen od sběrnice číslo 3. Tím fyzický jistič „vyskočí“, čímž se spustí událost On Release na spínači, která následně spustí další událost k odpojení elektromagnetu, jak je popsáno v kapitole „Společné“ programování. Elektromagnet se nespustí ručním vytažením fyzického jističe, protože v takovém případě se spustí akce On Release, která nastaví iCBHF4BtnState na 0 a také přepne stav obvodu v simulátoru. Tato změna sama o sobě by spustila tuto výstupní událost, ale protože iCBHF4BtnState už byla nastavena na 0, tak se nespustí.
Programování jističů pro WB-Sim C172
Musím uznat, že spousta výchozích letadel v MSFS je skvělých, ale já jsem z tábora „hard-core simmerů“, takže čím víc toho letadlo simuluje, třeba jako pot pilota, tím víc se mi bude líbit 🙂 Takže v případě jednoho z nejpoužívanějších cvičných letadel jsem samozřejmě sáhl po něčem pokročilejším, než je to výchozí.
Analýza jističů letadla
Níže je tabulka obsahující názvy jističů, které jsem se rozhodl propojit s mými „fyzickými“ jističi. Tabulka odráží „fyzické“ mapování, kde horní řádek je horní řádek v mém panelu jističů, spodní je spodní řádek a sloupce představují příslušné jističe v každém řádku, 1 až 4, zleva doprava.
| AUTO PILOT | INST | AVN BUS 1 | AVN BUS 2 | 
| TURN COORD | FLAPS | ADF | XPNDR | 
a zde je tabulka zjištěných událostí / LVar proměnných, které tyto jističe ovládají:
| Jistič | Číslo sběrnice | Číslo obvodu | Událost nebo proměnná LVar | 
|---|---|---|---|
| AUTO PILOT | L:C172X_AP_BREAKER_PULLED | ||
| INST | L:C172X_INST_BREAKER_PULLED | ||
| AVN BUS 1 | 1 | 3 | ELECTRICAL_CIRCUIT_TOGGLE | 
| AVN BUS 2 | 2 | 4 | ELECTRICAL_CIRCUIT_TOGGLE | 
| TURN CORD | L:C172X_TURNCOORD_BREAKER_PULLED | ||
| FLAPS | L:C172X_FLAPS_BREAKER_PULLED | ||
| ADF | L:C172X_ADF_BREAKER_PULLED | ||
| XPNDR | L:C172X_XPNDR_BREAKER_PULLED | 
Nastavení konfigurací MobiFlightu
Zde jen stručně popíšu některá „specifika“ tohoto letadla. Podrobnější informace a popis najdete v kapitole „Společné“ programování, která platí i pro toto letadlo, a v kapitole Programování jističů pro Steam Gauge Overhaul – Analog Bonanza, kde získáte podrobnější informace a popis postupů „programování MobiFlightu“ a „Jak a proč?“.
Cessna 172 od WB-Sim je pro nás pěkným příkladem odlišného způsobu, jakým mohou funguvat jističe v letadle v simulátoru. Když jsem si hrál s jističi v letadle a snažil se „dohnat“ nějaké události, tak jako jsem to udělal s Bonanzou A36, žádné jsem nenašel. Takže jsem musel zkusit jiný přístup, a to vypsat si pomocí FSUIPC LVar proměnné, podívat se, jaké tam jsou, a možná zavadím o nějaké co by mohly souviset s jističi.
No a byly tam… když to nejsou události, obvykle to jsou LVar proměnné 🙂
Ale předpokládám, že to už víte, když byla „tabulka jističů“ letadla uvedena před tímto odstavcem, takže víte, že většina vybraných jističů je řízena proměnnou LVar a pouze AVN BUS 1 a AVN BUS 2 událostí.
Konfigurace pro jistič AUTO PILOT
Podívejme se na kód pro spínač jističe HR 1 (spínač pro první jistič v horní řadě našeho panelu jističů), který pracuje s proměnnou LVar a ovládá jistič AUTO PILOT, nejprve událost On Press:
(L:C172X_AP_BREAKER_PULLED, Bool) 1 == if{ 0 (>L:C172X_AP_BREAKER_PULLED, Bool) }Přeloženo do jednoduché mluvy, znamená to „pokud jistič AUTO PILOT není zasunutý, zasuň ho“. Část pro zasunutí je kód 0 (>L:C172X_AP_BREAKER_PULLED, Bool), který ukládá hodnotu 0 do lokální proměnné C172X_AP_BREAKER_PULLED (LVar). Tím se jistič zasune. Podmínkovou částí je kód (L:C172X_AP_BREAKER_PULLED, Bool) 1 == if{ }. Testuje, zda je hodnota proměnné C172X_AP_BREAKER_PULLED 1, což je stav, kdy je jistič autopilota „vysunutý“.
Kód pro událost On Release je stejný, jen s invertovanou logikou:
(L:C172X_AP_BREAKER_PULLED, Bool) 0 == if{ 1 (>L:C172X_AP_BREAKER_PULLED, Bool) }A kód, který se používá ve výstupní konfiguraci pro „puštění napájí“ k elektromagnetu HR 1, čímž se fyzický jistič „vysune“, je pouze podmínkovou částí:
(L:C172X_AP_BREAKER_PULLED, Bool) 1 ==Konfigurace pro jistič AVN BUS 1
Podívejme se na kód pro spínač HR 3 (spínač pro třetí jistič v horní řadě našeho panelu jističů), který pracuje s událostí a ovládá jistič AVN BUS 1, ale používá mírně odlišný test než v případě Bonanza A36. Přednastavený kód On Press:
1 (>A:BUS LOOKUP INDEX, Number)(A:BUS CONNECTION ON:3, Bool) 1 != if{  46 (>K:ELECTRICAL_CIRCUIT_TOGGLE) }Logika kódu je stejná jako u událostí popsaných v kapitole Nastavení konfigurace MobiFlight pro spínač jističe pro Bonanzu A36, ale překvapivě nefungovala kontrola (A) proměnné: CIRCUIT CONNECTION ON jako v Bonanze, i když bych to od události ELECTRICAL_CIRCUIT_TOGGLE očekával. Jak je vidět výše, v testovací podmínce je použita proměnná letadla (A) BUS CONNECTION ON. V události On Release je logika obrácená.
Programování jističů pro DHC-2 Beaver
Konkrétněji řečeno, pro skvělý DHC-2 Beaver vyvinutý vývojáři z Blackbird Simulations, který byl přidán do MSFS v aktualizaci k 40. výročí. Pokud znáte příspěvky na mém webu týkající se leteckých simulátorů, víte, že DHC-2 je jedno z mých nejoblíbenějších letadel, a má funkční jističe, takže… 🙂
Analýza jističů letadla
Níže je tabulka obsahující názvy jističů, které jsem se rozhodl propojit s mými „fyzickými“ jističi. Tabulka odráží „fyzické“ mapování, kde horní řádek je horní řádek v mém panelu jističů, spodní je spodní řádek a sloupce představují příslušné jističe v každém řádku, 1 až 4, zleva doprava.
| COMM/NAV | XPONDER | AP | RADIO RELAY | 
| START RELAY | FUEL BOOST PUMP | LANDING LIGHTS | INST LIGHT | 
a zde je tabulka zjištěných událostí, které tyto jističe ovládají:
| Jistič | Číslo sběrnice | Číslo obvodu | Událost | 
|---|---|---|---|
| COMM/NAV | 4 | 12 | ELECTRICAL_CIRCUIT_BREAKER_TOGGLE | 
| XPONDER | 4 | 6 | ELECTRICAL_CIRCUIT_BREAKER_TOGGLE | 
| AP | 4 | 14 | ELECTRICAL_CIRCUIT_BREAKER_TOGGLE | 
| RADIO RELAY | 4 | 5 | ELECTRICAL_CIRCUIT_BREAKER_TOGGLE | 
| 4 | 8 | ||
| 4 | 9 | ||
| 4 | 10 | ||
| 4 | 11 | ||
| START RELAY | 1 | 4 | ELECTRICAL_CIRCUIT_BREAKER_TOGGLE | 
| FUEL BOOST PUMP | 3 | 2 | ELECTRICAL_CIRCUIT_BREAKER_TOGGLE | 
| LANDING LIGHTS | 3 | 18 | ELECTRICAL_CIRCUIT_BREAKER_TOGGLE | 
| INST LIGHT | 3 | 19 | ELECTRICAL_CIRCUIT_BREAKER_TOGGLE | 
Nastavení konfigurací MobiFlightu
Zde jen stručně popíšu některá „specifika“ tohoto letadla. Podrobnější informace a popis najdete v kapitole „Společné“ programování, která platí i pro toto letadlo, a v kapitole Programování jističů pro Steam Gauge Overhaul – Analog Bonanza, kde získáte podrobnější informace a popis postupů „programování MobiFlightu“ a „Jak a proč?“.
Konfigurace vstupu pro jistič RADIO RELAY
DHC-2 Beaver používá jinou událost pro spuštění přepínání jističů. Všechny jističe, které jsem vybral, používají stejnou událost – ELECTRICAL_CIRCUIT_BREAKER_TOGGLE. Ukážu vám kód pro jistič RADIO RELAY, který je odlišný a zajímavý v tom, že spouští 5 těchto událostí místo jedné, jako to dělají ostatní.
Níže uvedený přednastavený kód je pro událost On Press spínače HR 4 (patřícího ke čtvrtému fyzickému jističi v horním řádku), který mapujeme na jistič RADIO RELAY v letadle:
4 (>A:BUS LOOKUP INDEX, Number)
(A:CIRCUIT BREAKER PULLED:5, Bool) 0 != if{ 5 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }
(A:CIRCUIT BREAKER PULLED:8, Bool) 0 != if{ 8 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }
(A:CIRCUIT BREAKER PULLED:9, Bool) 0 != if{ 9 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }
(A:CIRCUIT BREAKER PULLED:10, Bool) 0 != if{ 10 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }
(A:CIRCUIT BREAKER PULLED:11, Bool) 0 != if{ 11 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }Vím, že se kód může zdát delší (což také je) a složitější (což zase tak moc není). U jiných jističů jsme měli jen jednu podmínku a jednu akci, tady jich máme 5.
Dobré je, že vzhledem k fungování kódu RPN stačí nastavit číslo sběrnice pro testy pouze jednou: 4 (>A:BUS LOOKUP INDEX, Number) a poté ho všechny následující testovací podmínky používají. Pak je to vlastně jen série podmínek -> akcí s měnícími se parametry: (A:CIRCUIT BRACKER PULLED:5, Bool) 0 != if{ 5 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) } . Ano, existuje další nová proměnná letadla (A): CIRCUIT BRACKER PULLED. Kód tedy kontroluje, zda hodnota této proměnné pro daný jistič – v tomto příkladu číslo 5 – není 0. Pokud není 0, znamená to, že je jistič „vysunutý“ a v takovém případě ho přepneme, aby se zasunul, protože to se má stát při stisknutí spínače jističe.
Všimněte si, že tento kód provádí 5 kontrol podmínek a spustí 5 akcí za sebou. Nejedná se tedy o vztah „A SOUČASNĚ“. Pokud by se kvůli jinému kódu nebo třeba chybě stalo, že některé z těchto 5 proměnných budou mít různé hodnoty, přepnou se pouze ty, které splňují podmínky. Ale neočekávám, že se to stane, alespoň ne v mé „konfiguraci kokpitu“. Jde jen o to, že RADIO RELAY je jeden jistič, který funguje jako pět.
V kódu pro událost On Release je opět jen obrácená logika podmínek:
4 (>A:BUS LOOKUP INDEX, Number)
(A:CIRCUIT BREAKER PULLED:5, Bool) 1 != if{ 5 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }
(A:CIRCUIT BREAKER PULLED:8, Bool) 1 != if{ 8 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }
(A:CIRCUIT BREAKER PULLED:9, Bool) 1 != if{ 9 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }
(A:CIRCUIT BREAKER PULLED:10, Bool) 1 != if{ 10 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }
(A:CIRCUIT BREAKER PULLED:11, Bool) 1 != if{ 11 4 (>K:2:ELECTRICAL_CIRCUIT_BREAKER_TOGGLE) }Konfigurace výstupu pro jistič RADIO RELAY
Také ukážu kód v konfiguraci výstupu pro jistič RADIO RELAY, který rozhoduje, zda se aktivuje elektromagnet jističe, aby se jistič „vysunul“. Také se trochu liší od těch, které byly dosud popsány v tomto článku, protože, jak jste si pravděpodobně všimli v předchozí kapitole, RADIO RELAY ve skutečnosti funguje jako 5 jističů. Zde je kód:
4 (>A:BUS LOOKUP INDEX, Number) 
(A:CIRCUIT BREAKER PULLED:5, Bool)
(A:CIRCUIT BREAKER PULLED:8, Bool) *
(A:CIRCUIT BREAKER PULLED:9, Bool) *
(A:CIRCUIT BREAKER PULLED:10, Bool) *
(A:CIRCUIT BREAKER PULLED:11, Bool) *
1 ==Kód nejprve vyhledá vnitřní index sběrnice číslo 4 v simulátoru a uloží ho na vrchol zásobníku. To dělá tento kód: 4 (>A:BUS LOOKUP INDEX, Number). Poté provede pět kontrol hodnot proměnných letadla (A): (A:CIRCUIT BRACKER PULLED:5, Bool). Všimněte si * mezi kontrolami. Hvězdička je operátor „AND“. Na konci kontroly všech pěti proměnných bude na vrcholu zásobníku buď hodnota 1, nebo 0. 1 tam bude pouze tehdy, pokud všech 5 proměnných má hodnotu 1. Pokud jedna nebo více z nich má hodnotu 0, výsledek bude 0. Pak provede poslední kontrolu: 1 == , která testuje, zda je výsledná hodnota 1. Pokud je 1, znamená to, že všech pět jističů skrytých za jističem RADIO RELAY je „zatlačeno“ – a proto můžeme elektromagnetem „vysunout“ „fyzický“ jistič. Samozřejmě, aby k tomu došlo, musí být splněna i předběžná (Precodnition) podmínka. Pokud chcete změnit vztah na „NEBO“, tedy že alespoň jedna z pěti proměnných musí být 1, stačí změnit * na +.
Programování jističů pro Blacksquare Turbine Duke
Turbínový (a pístový) Duke patřily k mým nejoblíbenějším letadlům ve FSX/Prepar3D. V té době patřily také k nejrealističtějším a obzvláště turbínová verze byla výzvou na správné ovládání motorů. Takže jsem byl velmi šťastný, když byly dostupné pro MSFS, vyvinuté vývojáři z Black Square, protože jsou opět špičkové. Propojení jejich jističů s „fyzickými“ bylo pro mě samozřejmě nutností.
Analýza jističů letadla
Níže je tabulka obsahující názvy jističů, které jsem se rozhodl propojit s mými „fyzickými“ jističi. Tabulka odráží „fyzické“ mapování, kde horní řádek je horní řádek v mém panelu jističů, spodní je spodní řádek a sloupce představují příslušné jističe v každém řádku, 1 až 4, zleva doprava.
| AUTO PLT | ENG INSTR | COM 1 | COM 2 | 
| FLAP MOTOR | GEAR MOTOR | WING PUMP L | WING PUMP R | 
a zde je tabulka zjištěných událostí, které tyto jističe ovládají:
| Jistič | Číslo sběrnice | Číslo obvodu | Událost | 
|---|---|---|---|
| AUTO PLT | 8 | 51 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| ENG INSTR | 8 | 49 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| COM 1 | 10 | 69 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| COM 2 | 11 | 73 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| FLAP MOTOR | 7 | 13 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| GEAR MOTOR | 9 | 14 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| WING PUMP L | 3 | 58 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
| WING PUMP R | 4 | 59 | ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE | 
Nastavení konfigurací MobiFlightu
Zde jen stručně popíšu některá „specifika“ tohoto letadla. Podrobnější informace a popis najdete v kapitole „Společné“ programování, která platí i pro toto letadlo, a v kapitole Programování jističů pro Steam Gauge Overhaul – Analog Bonanza, kde získáte podrobnější informace a popis postupů „programování MobiFlightu“ a „Jak a proč?“.
Jelikož Turbine Duke vyvinuli Black Square, tak jsem tak nějak očekával, že jističe budou fungovat stejně, nebo velmi podobně, jako v případě Steam Gauge Overhaul – Analog Bonanza (protože ji také vyvinuli). A měl jsem pravdu. V tomto smyslu fungují stejně, s využitím události ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE. Takže jediné, co se zde liší od Bonanzy, jsou samozřejmě použitá čísla sběrnic a obvodů 🙂
Takže jen pro zopakování, toto je například přednastavený kód události On Press pro jistič AUTO PLT:
8 (>A:BUS LOOKUP INDEX, Number) (A:CIRCUIT CONNECTION ON:51, Bool) 1 != if{ 51 8 (>K:2:ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE) }a události On Release:
8 (>A:BUS LOOKUP INDEX, Number) (A:CIRCUIT CONNECTION ON:51, Bool) 0 != if{ 51 8 (>K:2:ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE) }Ve výše uvedené tabulce vidíte, že všechny vybrané jističe používají událost ELECTRICAL_BUS_TO_CIRCUIT_CONNECTION_TOGGLE. Takže opravdu nejtěžší věcí při nastavování konfigurace MobiFlight je nezadat špatně čísla sběrnic a/nebo obvodů.
Ke stažení
Níže si můžete stáhnout archiv s mým upraveným tělem jističe, panely a také zdrojovým projektem (projekty) pro jejich další úpravy. Další soubor ke stažení obsahuje soubory s programováním MobiFlightu.
Odkazy
Začněme odkazy na zdrojové soubory….
- Video návod na stavbu Přepínatelných jističů od Kapitána Boba
- Web Kapitána Boba
- Projekt Cessna 172 Kapitána Boba na Githubu
- Zdrojové soubory k Přepínatelným jističům Kapitána Boba na Githubu
A pár odkazů na použité součástky:
- Arduino Mega2560
- 8x ZHK-0735 DC 12V DC solenoidový elektromagnet samodržící sací typ s tlačným a tažným mechanismem
- 8x KW11-3Z Citlivý koncový mikrospínač
- 8-kanálový relé modul 5V s LED signalizací L/H
A použitý software:
- Autodesk Fusion
- MobiFlight
- Microsoft Flight Simulator 2020
- FSUIPC
- Steam Gauge Overhaul – Analog Bonanza
- Black Square – Turbine Duke
- Blackbird Simulations DHC-2 Beaver – součást MSFS od 40th Anniversary updatu
- WB-Sim C172 – už nelze koupit
Související četba
Pokud vám to náhodou uniklo, možná by jste se chtěli ponořit do některých článků z 1. fáze stavby kokpitu mého leteckého simulátoru…
 
            














































