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! 

Go to page 1Go to page 012Go to page 2Go to page 2
Avatar
Bonanza
From: Solar System
Posts: 120
Hat sich schon erledigt, ich hab schlichtweg einen $-Eintrag in den if-Conditions vergessen :-/ :thumbup:

VG Chris

----------------------------
Hallo an alle FMGS-User, :rolleyes:

ich bekomme einfach die richtige Wertezuweisung in MobiFlight 7.4 zu meinem Encoder nicht hin. SPD, HDG und ALT funktionieren wie gewohnt prima, aber V/S will einfach nicht, wenn ich die Werte unter -1, also in die negative Sinkrate unter -100 ft/min verstellen will. Die Erhöhung der Sinkrate unter "Jeehell DataPipe/VS" läuft einwandfrei mit $+1. Auch Reduzieren bis runter auf 0 läuft so wie es soll.

Aber sobald ich unter -1 die Sinkrate mit $-1 jeweils senke, zeigt der FSUIPC-Wert nicht 255, 254, 253... an, sondern hüpft auf 255 und dann auf 3. Am Encoder oder dem Mega liegt's nicht, alles schon mehrfach getestet.
Hab' ich irgendeine Vorbedingung vergessen? :-/ :confused:

VG Chris
[Last edited by Bonanza, 2017-10-30 22:10]
.
"Wer nicht überzeugen kann, sollte wenigstens Verwirrung stiften!" :-)
2017-10-30 20:12
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 3691
Supporter
Klingt nach einen Bug...... Nur Komisch das dies noch niemand gemeldet hat.... Sind ja einige Jeehell Nutzer da !

Ich nutze kein FMGS und kann das also nicht testen/reproduzieren....
Meine Bitte an die anderen Jeehell Freunde..... Könnt ihr das bestätigen ??

Vermutung:
Ich denke wir haben hier ein Signed/unsigned Problem.
Mobiflight wird vermutlich mit einen Wert arbeiten der NUR POSITIV sein kann.... jeehell arbeitet mit einer -/+ Range.

Lösung....
Entweder Sebatian ändert das..... Alternativ müsste man über eine joystick Lösung nachdenken !

Hoffe ein anderer User kann das bestätigen.... Dann wird sich Sebastian darum kümmern !
Good Luck !
2017-10-31 02:41
Avatar
Bonanza
From: Solar System
Posts: 120
:-/ Zu früh gefreut... zwar funktioniert jetzt die V/S-Einstellung perfekt, aber bei HDG gibt es das Problem, dass der eingestellte Wert bei Linksdrehung nicht unter 000 Grad - also Richtung 359, 358, 357 etc Grad läuft., sondern bei 000 Grad stehenbleibt. Das Gleiche passiert, wenn ich nach rechts über 359 Grad hinaus drehen will: der Wert bleibt bei 359 Grad stehen, obwohl er doch wieder auf 000 Grad springen soll. :blink: :confused:
Passiert übrigens auch im Example so - gleicher Effekt, obwohl ich hier lediglich den Encoder und das Display zugewiesen habe.

Die DataPipe in der Jeehell-Software ist leider nicht sehr interfacefreundlich gelöst...
Habt Ihr irgendwelche Tipps für mich? Meine Frau ist schon sauer, weil ich schon Stundeeeen erfolglos in dieses Problem investiert habe. :scared:

VG Chris
[Last edited by Bonanza, 2017-10-31 11:09]
.
"Wer nicht überzeugen kann, sollte wenigstens Verwirrung stiften!" :-)
2017-10-31 10:52
Avatar
StephanHo
From: EDDG, Germany
Posts: 1538
Supporter
Hi Chris,

wie wär's mit einer Bedingung in Transform?

If($>359,0,if($<0,359,$))
Grüße,
Stephan
2017-10-31 11:43
Avatar
Bonanza
From: Solar System
Posts: 120
Hallo Stephan,

danke dir für den Hinweis, das hab' ich alles schon versucht. MobiFlight kommt schon von den FSUIPC-Werten gar nicht unter 0 sprich -1, bzw. auch nicht über 359, also quasi 360, um solche Bedingungen wahr werden zu lassen. Es ist, als bestünde der verfügbare Wertebereich lediglich aus 0-359, jeweils als "Endanschlag". Das ist es, was ich nicht verstehe. Gestern ging's noch, als ich die Probleme mit V/S hatte. V/S-Problem dann gelöst, dafür HDG-Problem bekommen.

Display-Readout-Offset stimmt, denn wenn ich HDG per Maus direkt in der Software-FCU verstelle, wird's auch im MAX7219-Display richtig verstellt und angezeigt. Nur bei der eigenhändigen Encodereingabe geht's nicht :confused: :blink:

VG Chris
.
"Wer nicht überzeugen kann, sollte wenigstens Verwirrung stiften!" :-)
2017-10-31 12:45
Avatar
StephanHo
From: EDDG, Germany
Posts: 1538
Supporter
Hi Chris,


das hier hab ich noch gefunden:

https://www.mobiflight.com/forum/message/5787.html

Ergebnis dort von pizman:
Für's hochzählen: if($=359,0,$+1)
Für's runterzählen: if($=0,359,$-1)

Wenn das auch nicht hilft, bitte warten, bis pizman das liest. Er steckt da tiefer in der Materie. Ich kann gerade mal Jeehell fehlerfrei schreiben ;)
Grüße,
Stephan
2017-10-31 13:30
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 3691
Supporter
Jepp.

Leider hat der User das damals nicht bestätigt.... Und da ich kein Jeehell habe kann ich hier nur die "logische" Lösung liefern.... Ob sie geht müsstest du uns sagen !

Kurz zur Technik ( und somit warum Stephans erste Idee nicht klappt)

Die Datapipe ist ein kombinierter Vorgang intern in Mobiflight.... Jeehell erlaubt uns NICHT einen Read Offset gleichzeitig zu schreiben.
Somit muss Mobiflight den aktuellen Wert aus dem FMGS holen ( Der selbe Offset wie den, den du für das Display verwendest) und setzt diesen bei der INPUT Config als imaginären DOLLAR$ Wert. Somit können wir dann wie bei einen Normalen FSUIPC Offset schlicht sagen z.b. bei Rechtsdrehen Dollar Plus 1 "$+1" . Dieser wird dann mit Parameter auf den kombinierten Input Offset geschrieben !

****

Ich "vermutete" also das Jeehell selbst eine Logiksperre hat das der Wert niemals unter 0 und über 359 sein kann.
Folge... Wenn er aktuell 359 ist und wir lesen ihn und sagen $+1 dann haben wir 360 und senden das an Jeehell..... Jeehell sagt dann "STOP!!!! 360 ist kein erlaubter Wert" und lässt den letzten erlaubten Wert (359) einfach stehen!

Ergebniss:
Wie Chris bereits erkannt hat..... Wenn man Stephans Expressions nimmt.... If($>359,0,if($<0,359,$))
$ ist der aktuelle Ursprungswert des HDG.... Dieser kann nach meiner Logik NIEMALS unter 0 oder über 359 sein 8weil Jeehell das bereits verhindert) ..... Folgerlich treten beide IF´s niemals ein und es wird IMMER das Else ausgeführt..... Im falle von Stephans Lösung ist das ELSE schlicht DOLLAR If($>359,0,if($<0,359,$)) .... Also Egal was mann dreht... Er sendet immer DEN WERT zurück der vor der Drehung war.

******
Aber egal... Das war nur ein wenig Info um das ganze zu verstehen.
Bitte sag bescheid ob die 2 Funktionen die Stepahn verlinkt hat klappen ( denke zu 99% das müsste gehen)

lg.
Good Luck !
2017-10-31 14:13
Avatar
StephanHo
From: EDDG, Germany
Posts: 1538
Supporter
Wenn Jeehell Werte <0 und >359 blockt, dann gibt es bei den Links aber auch Werte, die nie angezeigt werden:
beim Hochzählen gibt es keine 359, weil sofort 0 kommt und beim runterzählen gibt es keine 0, weil sofort 359 kommt,
Wäre aber ein Kompromiß, mit dem man leben könnte.
Grüße,
Stephan
2017-10-31 14:38
Avatar
Bonanza
From: Solar System
Posts: 120
Hallo Leute, Entwarnung! :w00t:

Stephans Vorschlag bzw. dein Hinweis auf den Thread war die Lösung! Jetzt funktioniert es. Ich hatte bei meinen Formelüberlegungen wahrscheinlich 'nen Denkfehler, weil das Problem definitiv über eine Formel lösbar hat sein müssen. B)

Falls Interesse besteht, stelle ich meine jetzt voll funktionsfähige A320-MobiFlight-mcc-Datei gerne zur Verfügung, um in die Jeehell-Beispielsammlung aufgenommen zu werden. Dann muss der Jeehell-User nur die beiden MAX7219-Displays und die vier Encoder für SPD, HDG, ALT und V/S zuweisen. Die Pins lassen sich ja aus den Moduleinstellungen rauslesen oder je nach Bedarf anpassen. Die Erweiterung um QNHs, BATTs, Radios und XPDR steht bei mir noch aus.

Ein großes Dankeschön an "Worlds Best Support Forum", hier heute besonders an Stephan und Pizman! :thumbup: :thumbup:

VG Chris
.
"Wer nicht überzeugen kann, sollte wenigstens Verwirrung stiften!" :-)
2017-10-31 15:39
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 3691
Supporter
@ Chris.... Schön das es klappt.
Wegen deiner Datei..... Leider hat dieses Forum keine Möglichkeit eines Uploads.
Ich werde mal bei Sebastian anregen ob wir dafür nicht eine andere Lösung finden. Hab keine Ahnung was er an Server Technik bzw Webspace nutzt.
Vielleicht hat er ne freie domain die wir als Downloadserver verwenden können.




@ Stephan

iconStephanHo:

Wenn Jeehell Werte <0 und >359 blockt, dann gibt es bei den Links aber auch Werte, die nie angezeigt werden:
beim Hochzählen gibt es keine 359, weil sofort 0 kommt und beim runterzählen gibt es keine 0, weil sofort 359 kommt,
Wäre aber ein Kompromiß, mit dem man leben könnte.



Denkfehler ! Es gibt sowohl 359 als auch 000.....
Der Wert den wir als $ Verwenden ist ja der AKTUELLE bevor wir ihn ändern ! ( In deiner überlegung wäre es der Zukünfitige )
Somit wenn wir gerade z.b. 358 haben und drehen nach rechts dann sagt " if($=359,0,$+1) " das das ELSE gilt ( Denn der Wert ist ja VOR dem Drehen nicht exact 359 )
Folgerlich sagt er $+1 bzw 358+1 = 359 .... Er schreibt also 359 auf den INPUT und der Wert im Sim IST 359 jetzt.

Auf Deutsch.... Er setzt nicht prizipiell 359 auf 000 ( so das es 359 gar nicht gibt)...... Er tut das nur wenn man um 1 erhöht und der Wert bereits VOR dem Drehen 359 WAR !
Selbes gilt umgekehrt.... Von 1 auf 0 macht er $-1 Nur wenn der Wert bereits 0 ist dann sagt er ansattt $-1 jetzt $=359
Good Luck !
2017-10-31 21:26
Avatar
Bonanza
From: Solar System
Posts: 120
Nun, ich maile Sebastian meine a320.mcc auch gerne zu, dann kann er sie in die Beispiele für Jeehell integrieren oder ganz ersetzen.
Läuft jedenfalls alles recht gut jetzt, zumindest mit den mechanischen Encodern.

Ich habe gestern mal einen optischen 2-Kanal-Decoder angeschlossen, der bekanntlich mit Flankenverschiebung je nach Drehrichtung arbeitet. Hier wird momentan nur jeder vierte Drehimpuls/Detent von MobiFlight für eine Aktion erkannt. Leider gibt es in MobiFlight noch keine Möglichkeit, zwischen mechanischen und 2-Kanal-Encodern zu wählen - für letztere wäre eine andere Abfrage notwendig, die im Code implementiert werden müsste. In meinem eigenen Sketch zur Encoderabfrage wird jeder Detent erkannt.

Vielleicht kann Sebastian das mal auf die Wish List setzen? Optische Encoder sind zwar bissel teurer als mechanische, arbeiten aber traumhaft weich, zuverlässig und langlebig. Wie im echten Flugzeug auch :rolleyes:

Viele Grüße

Chris
.
"Wer nicht überzeugen kann, sollte wenigstens Verwirrung stiften!" :-)
2017-11-03 10:02
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 3691
Supporter
Ich habe mich mit optischen Encodern noch nicht befasst..... Somit ist das folgende eine Vermutung ( Und sollte von STEPHAN korrigiert werden falls ich Quatsch rede)

Ich vermute mal schwer das die Optischen ebenfalls über ein "Pulse per Detent" System verfügen.... Wenn dieses nicht 1:1 ist sondern 1:4 dann ist der effekt wie du ihn beschreibst.
Denke also es wird auch optischen Encoder geben die 1:1 arbeiten und diese sollte man dann nutzen.

Aber grundsätzlich hast du schon recht.... Ich hab das Sebastian mal angemerkt ob wir in Zukunft die Impulse einstellen können, so das die Software "alle" gängigen Encoder versteht.
Auch hier ist wieder die Frage.... Will man das dem User antuen das er wieder ein neues Dropdown hat ( In dem fall bei Settings/ Upload/ devices/Encoder ...

Mein Mastergedanke ist ja an der Stelle immer noch das man sowas über die Configfiles und Texteditor lösen könnte.....
Sprich Mobiflight bietet im Grafikinterface hier keine Änderungsmöglichkeit.... Erstellt aber in der MCC Datei bei Encodern eine Zeile wie " Encodersystem = 1 "
Brauchen wir ein anderes dann editieren wir die Datei einfach mit Notepad++ und ändern die "1" in ne andere Zahl....
Denke da an eine art "Manual für Profis" in dem das dann erklärt ist und wo steht das System2 z.b. ein 1:2 encoder ist und System 3 ein 1:4 Encoder.
Resultat: Wir können es ändern wie wir es brauchen.... Der Laie/Anfänger wird aber nicht verwirrt!

( Das könnte man dann auch für die manuelle Servo/Stepper Speed nehmen wo es ja auch Probleme gibt )
Good Luck !
2017-11-03 16:14
Avatar
Bonanza
From: Solar System
Posts: 120
Huhu,

ich glaube nicht, dass es schrecklich aufwändig ist, hier zwischen 1-Kanal- und 2-Kanal-Encodern zu differenzieren.

Gerade habe ich einen Test gemacht, bei dem ich sechs optische Encoder an ein einzelnes Arduino ProMicro angeschlossen habe, deren Impulse als Joystick-Tastendruck ausgegeben werden. Dieses ProMicro wird als HID (also als Joystick-Karte) vom PC erkannt und man kann in FSUIPC, XPUIPC, FSX, P3D oder direkt in Jeehells FMGS-Config jede Encoder-Richtung als entsprechende Autopilot-Encoderfunktion definieren (QNH CPT, SPD, HDG, ALT, V/S, QNH F/O). Läuft wie ein Traum und jeder Detent wird als Impuls erkannt.
Man benötigt zwar in der Arduino-IDE sowohl die joystick- als auch die encoder-Bibliothek, aber das Ganze belegt gerade mal 52 Codezeilen im Sketch (< 9kB )

Sebastian: falls du dir mal meinen Code anschauen oder testen möchtest, maile ich ihn dir gerne zu. Vielleicht kann man das Ganze ja in MobiFlight integrieren, auch weil man mit dieser Abfrage genauso gut mechanische 1-Kanal-Encoder betreiben kann. Letzteres habe ich gerade eplizit nochmal getestet.

Viele Grüße Chris
[Last edited by Bonanza, 2017-11-04 14:02]
.
"Wer nicht überzeugen kann, sollte wenigstens Verwirrung stiften!" :-)
2017-11-04 13:50
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 3691
Supporter
Wow !
iconBonanza:


Gerade habe ich einen Test gemacht, bei dem ich sechs optische Encoder an ein einzelnes Arduino ProMicro angeschlossen habe, deren Impulse als Joystick-Tastendruck ausgegeben werden. Dieses ProMicro wird als HID (also als Joystick-Karte) vom PC erkannt



DAS würde eine große lücke schließen.

Aktuell können wir zwar die teuren LEOBodnar umgehen was Button/Schalter Inputs betrifft ( z.b. mit der Joystick Lib ) . Wenn wir aber encoder brauchten gab es meines Wissens nur die LeoBodnar mit den speziell dafür gedachten encodern ( Sehr Teuer).

Hast du diesen sketch selber gemacht oder ist das von jemanden anderes.... bzw.... sind die verwendeten Libs Opensource ?

Damit das ganze nicht OT wird.... Könntest du mir bei gelegenheit das ganze mal in ne Email werfen..... pizman@freenet.de
Danke !
Good Luck !
2017-11-04 14:46
Avatar
StephanHo
From: EDDG, Germany
Posts: 1538
Supporter
Hi zusammen,

ich hatte seinerzeit mal Encoder in den USA bestellt. So kam ich auch in Kontakt zu dem Shopbetreiber. Von ihm habe ich ein paar Snipets erhalten, die ich Sebastian zur Verfügung gestellt habe.
Sebastian hat das wohl auch schon in eine Testversion eingebaut, aber bislang habe ich die zum Testen noch nicht erhalten - widrige Umstände. Sobald ich die habe, teste ich die mit ein paar Encodern, die ich hier vorrätig habe, durch. Vielleicht sollte Chris diese Testversion auch mal probieren.

Nein, pizman, es wäre mir neu, daß du Quatsch erzählst, vielleicht nach dem 6. Bier ;) . Hinsichtlich der Handhabung gebe ich dir sogar Recht. MF muß im Grunde das Verhältnis von Impuls zu Detent wissen. Andernfalls lassen sich mit so einem Encoder keine exakten Werte mehr einstellen. Kommen 4 Impulse/Detent, würden die Anzeige immer 4 Einheiten weiterzählen, was natürlich suboptimal wäre. Würden aber bei einem Verhältnis von 4:1, also 4 Detents/Puls kommen, dürften auch die Zwischenimpulse der 3 Detents mitzählen. Im Grunde würde dann jeder Encoder als 1:1 arbeiten.

Wie das dann in MF verpackt werden würde, das ist Entwicklungsarbeit, aber ich denke, lösbar. Eine Frage von Aufwand und Zeit.

Das Prinzip der optischen Encoder arbeitet im Endeffekt wie ein mechanischer, nur eben ohne Verschleiß. Im Grunde dreht sich eine Schlitzscheibe über eine LED, die hinter dem Schlitz "abgefragt" wird - mit zwei "Empfängern". Dadurch ist die Drehrichtung ebenfalls auswertbar. Wer mehr dazu wissen möchte, lese dies in Wikipedia nach.

EDIT: Die Encoder von Bodnar sind nicht zwingend erforderlich. Bei der Firmware von ihm ist das Verhältnis Detent/Puls einstellbar. So braucht man zwar den BBI32 aber nicht seine Encoder.
[Last edited by StephanHo, 2017-11-04 15:30]
Grüße,
Stephan
2017-11-04 15:25
Go to page 1Go to page 012Go to page 2Go to page 2