MobiFlight Community Support

Welcome to the forum for MobiFlight! Feel free to reach out to the community in case you have questions, issues or just want to share great ideas or details about your latest home cockpit project.

You like MobiFlight? Donate via PayPal and support the MobiFlight development. Thanks! 

05/03/2024 - This forum is read-only

The community support for MobiFlight has moved exclusively over to our Discord server. Register for free and enjoy more interactive functions like image and video upload, voice chat. More than 7,000 registered users around the world make it a great experience!

See you on our MobiFlight Community Discord server.

A HUGE Thank You to everyone who participated in the forum, especially obviously to Pizman and Stephan who did an outstanding job over so many years providing an incredible service to the MobiFlight community.

The forum is still providing a lot of good content, hence we keep this information accessible.

icon
Avatar
fbalk
Posts: 11
Erst mal ein Freundliches Hallo in die Runde. Ich fliege schon ein eine Weile Flugsimulatoren. Nun hat mich die Lust gepackt, ein paar Schalter und Anzeigen in den MS2020 zu integrieren. Vorkenntnisse mit solch einem Projekt, habe ich leider keine. Dafür lern ich recht schnell, wenn man mal kapiert hat wie es funktioniert :-) Und da hab ich gerade ein wenig Defizite.
Kurz zu meinem Projekt: Ich möchte ein einfaches Autopilotenpanel bauen, mit Anzeigen für Heading, Höhe und Curse. Enthalten sollen Drehregler (Encoder), Druckschalter und 7seg.Displays sein. Die Hardware liegt bereits auf dem Basteltisch und wurde auch schon mal durchprobiert. Die Tuturials auf dieser Homepage haben allesamt gut funktioniert. Nun zu meinem Verständnisproblem.

1. ich möchte Heading auf einen Drehschalter legen. Dafür habe ich einen Encoder (incl 5V) angeschlossen und ihn auch in der Software eingebunden. Als Preset habe ich "Autopilot - AP Heading Value" verwendet. Als gesetzten Wert habe ich mal eine +1 geschrieben. Tja und da fängt meine Sorge an. Im Simulator wird das Heading beim bewegen auf 0 Grad geswitcht und bleibt dort. Ich denke hier muss ein anderer Wert gesetzt haben, nur welcher und wie setzt sich der zusammen? Gibts da ein Tutorial wie man das verstehen muss?

2. Ich habe ein Display als Heading Anzeige programmiert. Das Funktioniert Grundsätzlich, nur zählt das Display bis 180Grad und geht dann in den minus Bereich um wieder rückwärts zu zählen. Auch hier fehlt mir das Verständnis, wo und was ich Einstellen muss.

Ich bin noch ganz an Anfang, befürchte aber, dass ich hier noch auf mehr Fragezeichen stoßen werde. Hat jemand vielleicht Zeit und Lust mich da ein bisschen an die Hand zu nehmen? Gern auch über Discord. Audio und Video vorhanden.

LG Falk
2020-09-30 07:58
Avatar
StephanHo
Moderator
From: EDDG, Germany
Posts: 1867
Supporter
Hallo Falk,

grundsätzlich werden die Encoder bei MobiFlight ohne irgendwelche Pull-up-Widerstände oder Betriebsspannungen betrieben.
Die Firmware aktiviert die in den Mega eingebauten Pull-Up-Widerstände, insofern sind keine externen Widerstände nötig.

Wie deine Beschaltung des Encoders aussehen müßte, kann ich dir erst sagen, wenn ich weiß, welchen Encoder(-Typ) du benutzt. Insofern wäre es hilfreich gewesen, es bereits anzugeben.

Wenn deine HDG-Anzeige bereits bis 180° funktioniert, dann hast du schon die halbe Miete ;-)
Da der Wert negativ wird, muß er mathematisch angepaßt werden, damit die Anzeige wieder stimmt. Für diese Zwecke wurde die Transform-Zeile eingeführt.
Diese aktivierst du, indem du einen Haken reinsetzt (anklicken).Dann schreibst du in die freigegebene Zeile ohne Leerzeichen: if($<0,$+360,$)

$ ist immer der aktuelle Wert des Offsets, den du weiter oben angegeben hast. Insofern ließt sich die Formel so:
wenn der aktuelle Wert kleiner 0 ist, dann addiere zum aktuellen Wert 360, sonst gib den aktuellen Wert aus
also: wenn(Bedingung [wahr],dann [ausführen],sonst [ausführen])

Wichtig ist hier, daß eine geöffnete Klammer auch wieder geschlossen werden muß und der Trenner für die Bedingungen ein Komma ist und kein Semikolon. Ferner dürfen in der Formel keine Leerzeichen auftreten.

Deine Fragen sind im Grunde völlig normal, denn du arbeitest dich in die Materie ein. Am Besten arbeitest du die Tutorials durch und ließt die Community-Guides. Dann hast du das Wichtigste schon mal gehört bzw. gelesen und erste praktische Erfahrungen gemacht. Ansonsten solltest du dich nicht scheine, hier Fragen zu stellen, denn dafür ist das Forum ja schließlich da. Selbstverständlich kannst du auch auf Discord kommen, denn da gibt es so schöne Dinge wie Live-Chat und Screen-Sharing. Da geht Helfen noch komfortabler und meist auch schneller.

Viel Spaß weiterhin.
Grüße,
Stephan (Time: UTC+2)
2020-09-30 14:51
Avatar
fbalk
Posts: 11
Vielen Dank, für die freundliche und Kompetente Antwort. Die Formel leuchtet mir ein, von selbst wäre ich da aber nie drauf gekommen. Die Tutorials hab ich schon soweit durch, diese sind soweit auch sehr verständlich.
Als Encoder, habe ich diese hier Bestellt: Ich hoffe das sind auch die richtigen. https://www.amazon.de/WayinTop-Encoder-Drehgeber-Drehwinkelgeber-Druckknopf/dp/B07T3672VK/ref=sr_1_5?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=encoder&qid=1601477617&sr=8-5

Ich bin mir noch nicht sicher, welche Werte ich in die untere Zeile einsetzen muss. Da hab ich leider kein Tutorial gefunden. Aber eins nach dem anderen. Discord werd ich mal besuchen. Danke vielmals
2020-09-30 16:56
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Hi.

Deine Probleme kommen weil du einige Grundelemente wie Binäres Zahlensystem, Integer Offset Strucktur und die Mathematischen Funktionen bei Programmen in C# nicht kennst.
Das ist nicht schlimm..... Das kommt von ganz alleine nebenbei beim basteln.
Gerne helfen wir dir. Und wie du verschlägst das geht am besten in Discord mit Headset und einen gemütlichen Kaffee oder Bierchen je nach tageszeit.

Melde dich wenn Stephan oder ich Online sind. Dann reden wir!
Good Luck !
2020-09-30 19:09
Avatar
fbalk
Posts: 11
iconStephanHo:

Hallo Falk,

Wenn deine HDG-Anzeige bereits bis 180° funktioniert, dann hast du schon die halbe Miete ;-)
Da der Wert negativ wird, muß er mathematisch angepaßt werden, damit die Anzeige wieder stimmt. Für diese Zwecke wurde die Transform-Zeile eingeführt.
Diese aktivierst du, indem du einen Haken reinsetzt (anklicken).Dann schreibst du in die freigegebene Zeile ohne Leerzeichen: if($<0,$+360,$)

Viel Spaß weiterhin.



Dieses Problem konnte ich lösen, indem ich die Bitrate von 2 auf 4 gesetzt habe. Plötzlich ging es ohne weitere Einstellungen. Habe das vorgefertigte Preset verwendet.

Beim Thema Encoder, habe ich soeben eine Formel gefunden, die ich heute Abend testen werde. $+600 oder $-600 in der Wertezeile. Mein Fehler war wohl das fehlende $

Ich bleibe dran :-)
2020-10-01 13:10
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Hi nochmal.

Es gibt 2 Sorten Menschen.... Die einen machen Learning by Doing und leben nach dem Motto "Nur das Ergebnis zählt" .... Die Anderen (zu denen ich mich und die meisten professionellen Cockpitbuilder zähle) gehören zu den "Leseratten". Wir "lernen" vorher wie etwas funktioniert und uns reicht auch nicht das das ergebnis passt sondern wir wollen den Weg dahin verstehen und sicher sein das wir die beste Lösung benutzen.

Was heist das nun in deinen Fall....

Du hast ein Problem ( Negatives Heading) und anstatt zu lernen "warum" das so ist versuchst du durch "zufällige" änderungen es auf gut Glück zu lösen.
Probelmatisch wird es wenn du tatsächlich Glück hast und es klappt wie in deinen Fall. ABER.... Stell dir mal die Frage ob du das Problem wirklich gelöst hast oder ob vielleicht Stephan aus guten Grund dir die Formel " if($<0,$+360,$) " gegeben hat.


iconQuote:


Offset: 07CC --- Size 2 Byte Typ INT Autopilot heading value, as degrees*65536/360
Offset: 07D0 --- Size 4 Byte Typ INT Autopilot altitude lock



Wenn du die Größe mal ebenso von 2 auf 4 Byte erhöhst dann liest deine Config zusätzlich 2 Bytes aus die dahinter sind. Durch diesen trick umgeht man tatsächlich die Negativumkehrung des Wertes ( Binäre Zahlenlogik) ..... ABER das klappt hier nur weil durch einen sehr seltenen Zufall die 2 Bytes dahinter leer sind.
Angenommen dahinter wäre direkt der nächste Offset ( wie in 99% der Fälle) dann würde deine Config zusätzlich diesen Wert mit einbeziehen.
Richtig fies wird es wenn dieser Wert dahinter eine Seltene Funktion ist.... z.b. Feuer in Triebwerk 1.
Das heist deine Heading Anzeige würde Jahrelang funktionieren. Aber wenn irgendwann mal dein Triebwerk brennt dann zeigt dein Heading genau in dem Moment was total falsches an. So einen Fehler dann zu ergründen ist der Horror. Denn niemand von uns würde auf die Idee kommen ( im ersten Moment) das du "absichtlich" einen Fehler gemacht hast.

Das selbe gilt für deinen Encoder. JA +/- 600 klappt .... Aber nicht weil es richtig ist sondern weil du durch Glück einen Wert gefunden hast der zufällig gerade funktioniert. Dreh aber mal deinen Encoder länger. Du wirst sehen das er nicht immer arbeitet. Das die Schritte nicht korrekt sind und das dies nicht die Lösung ist.
Man nimmt hier keinen Wert und probiert es aus..... Man berechnet ( oder googelt) nach dem Richtigen. Beim Heading wäre es 182 wenn ich es richtig im Kopf habe!
181 und 183 gehen vermutlich auch zu 99% aber bereits 178 oder 185 wird bei irgendeinen Detent einen Sprung von 2 oder gar keinen Sprung machen.

***************
Nochmal.... Fühl dich nicht angegriffen. Du kannst gerne mit der Taktik weitermachen wenn dir dieser Weg gefällt. Ich sage dir nur vorraus das man damit oft auf die Schnauze fliegt und wieder aufstehen muss. Angebot mit Discord steht. Können gerna mal die Anfängerfragen durchsprechen. Dann wird es deutlich angenehmer und einfacher !
Good Luck !
2020-10-01 15:54
Avatar
fbalk
Posts: 11
Vielen lieben Dank für diese super Antwort. Das zeigt mir, dass ich hier genau im richtigen Forum bin! Klar, ich will es verstehen und ich werde noch vor vielen Fragezeichen stehen ::confused: Teilweise weiß ich aber nicht einmal was ich googeln muss um einen Treffer zu landen :cry: Das ist dann wohl auch der Grund warum ich selbst ein bisschen an den Werten drehe, um zu deuten was für eine Logik dahinter steckt. Der richtige Weg ist das sicher nicht!

Ich habe mir zumindest schon mal die Funktionsweise eines Encoders angeschaut. Das ist auch sehr Interessant und macht Spaß zu verstehen. Was codieren und Programmieren betrifft, da hab ich noch vieeeel Bedarf.

Ich habs mir vlt bissl zu einfach vorgestellt. Dachte ich klemm ein paar Displays an, schraub ein Paar Schalter ein und gebe die Presets in der Software vor. Aber ganz so schnell gehts dann doch nicht :P Was könnt ihr mir raten, wie soll ich Anfangen, oder wo finde ich Tutorials, die mich in meinem Projekt weiter bringen?

Ich bedanke mich jetzt schon für die tolle Hilfe hier im Forum. Und wenns mir too much wird, dann geb ich rechtzeitig Bescheid :thumbup:

Den Tip von StephanHo werde ich beherzigen und es mal genau so versuchen. Hat jemand eine Idee warum ich mein Heading mittels dem Encoder nur auf 179 grad bekomm und in der anderen Richtung bleibt er auf 180grad stehen. Kommt mir so vor als würde die Zahlenlogik nur 360 grad zulassen und dann aufhören zu zählen. Also ich kann links und rechts drehen, aber bei genau 179, bzw 180 grad HDG bleibt die Nadel stehen.

PS: Discord angebot nehme ich gern an. Bin bereits der Community gejoint. Sobald ich daheim bin, gebe ich meinen Discord Namen durch B)
[Last edited by fbalk, 2020-10-02 12:25]
2020-10-02 12:20
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Zu Discord.
Hab dir schon ne PM geschrieben. Einfach schauen wer online ist..... Entweder in den Mobiflight Gruppen schreiben oder PM´s schicken. Ganz easy.
Reden klappt bei mir meist später abend oder an MI und DO. Stephan und Sebastian sind öfter da. Aber auch andere User helfen gerne !

Zu Tutorials.

Baisisfunktionen sind im Offiziellen Tutorial hier auf der Homepage. Tieferes wissen muss man über die Forenbeiträge ( SEARCH) sammeln. Wenn du gerne Videos magst geh auf Youtube und suche nach "Mobiflight" . Einige User haben ihre Projekte dort als Videotagebuch. Z.b. Helimech zeigt eine B737 vom Entwurf bis zum fertigen Full Cockpit. Und Rudy hat viele Stunden Material für ein RadioPanel komplett Step By Step aus Mobiflightsicht .... Und Viele andere User ebenfalls. Einfach mal ein wenig anschauen.
Am Ende gilt die Rattenschwanz Logik. Du wirst immer wieder ne Frage haben.... Und meist beim Googlen und lösen der Frage kommen neue auf die du wieder ergründen wirst.... Und genau so lernt man halt am Ende immer weiter dazu.



Zum Heading

Hier hast du dir leider gleich zu Beginn ein etwas schwereres Element gesucht. Keine Panik. Z.b. in einer PMDG B737NGX ( AddON) ist das Heading als simple saubere Zahl von 0-359 drin. Kein -180 bis +179 und kein Problem bei den Encodern. Hier muss man sagen das die FSUIPC Offsets für die Standardflieger teilweise sehr altmodisch sind. Also krieg keinen schlechten Eindruck. Nur wenige Sachen sind so umständlich wie dein Heading das du gerade machst. Das meiste ist viel einfacher.

Zum Problem mit dem "Swap"
Hier vorweg.... Wir versuchen eigentlich immer sofern vorhanden "Events" zu verwenden. Also wir lesen nicht einen Offset und sagen sowas wie "$+182" sondern wir sagen zum Sim " Führe das gleiche Event aus das du machen würdest wenn wir im Simulator mit der Maus den Virtuellen Heading Taster/Encoder benutzen würden".
Somit brauchen wir nicht rechnen und denken. Denn diese ganzen Formeln würde dann der Sim regeln. Wir sagen schlicht nur " Event Heading incrase" ausführen !
Diese Events stehen auf einer langen Liste..... Auch AddOns wie PMDG haben solche Events !


Zur Frage mit dem Heading bei dir....

Wie Anfangs angedeutet.... Dieser Offset geht nicht von 0-359 . Er geht tatsächlich bis 65535 . Deshlab auch $+182 denn 65535/360 = 182,0416 ~~182
Zusätzlich hat dieser Offset den Optischen Fehler das er nicht von 0-65535 geht sondern von -32768 bis +32767 geht .... ( Nennt sich SIGNED) Also von -180° bis +179°

Jetzt zum "swap" ... STELL DIR VOR der Offset wäre einfach und ginge von 0-359 Und du würdest immer sagen $+1 bzw $-1
Bei einen Wert von 220° drehst du nach Rechts.... 220+1=221.... Er sendet 221 und alles ist gut.
Bist du aber bei 359 dann sagt deine Logik 359+1=360 .... Aber der Sim dreht jetzt durch denn 360 gibt es nicht ! Somit tut er nichts.
Um das zu lösen benötigt man eine Formel.... Wir müssen sagen " Wenn der Wert genau 359 ist dann rechne nicht +1 sondern setzte einfach auf 0 .... Wenn der Wert NICHT 359 ist ( also irgendwas zwischen 0 und 358) dann rechne Wert+1 " ..... Im syntax wäre das if($=359,0,$+1)
Bei Links das gleiche.... Immer vom Aktuellen Wert 1 abziehen aber wenn gerade "0" Grad ist dann eben nicht nochmal -1 sondern hier soll er stattdessen 359 setzten.
Wäre sowas wie if($=0,359,$-1)

Leider ist es im Heading aktuell nicht ganz so einfach..... Denn hier ist der Swap durch den -180 bis +179 nicht bei "0/359" Grad sondern bei -180/+179° .
Du müsstest also in der Formel sagen er soll z.b. nach Rechts immer +182 rechnen.... Ist der wert aber am Oberen Ende (32767-182=32585) Also das ein Weiterer $+182 die Grenze Sprengen würde dann muss er auf "die andere Seite" wechseln. hier z.b. if($>32585,-32768,$+182) .
NOCHMAL: Das ganze hier ist höchst umständlich und wirklich nicht die Norm. Also keine Panik. Sowas braucht ein Anfänger normal nicht !





LÖSUNG: Verwende EventID´s ..... Denn diese machen all diese Berechnungen INTERN. Solche Formeln bauen wir normal nur wenn es umbedingt ein muss !
Leider kann es sein das der FS2020 noch keine Events hat.... Dann müsste man tatsächlich basteln
iconQuote:

65880 HEADING_BUG_DEC
65879 HEADING_BUG_INC

Good Luck !
2020-10-02 15:41
Avatar
fbalk
Posts: 11
ok, das hab ich zumindest im Ansatz verstanden :-) Event IDs wäre die bessere Lösung. Was wäre denn mit vjoy? Könnte ich da nicht eine Taste dafür missbrauchen um das Heading und eventuell andere Dinge zu regeln?
Ich werd euch mal im Discor quälen müssen :scared: Hab deine Nachricht bekommen und beantwortet
2020-10-02 18:08
icon