So, ... zur Abwechslung mal was konstruktives
Jürgen hatte ja sein Taster-Panel bereits feritg, also hab ich Ihm ein Sketch gebaut, mit dem er die Werte der einzelnen Tasten ausgeben konnte:
Code: Alles auswählen
const int AnalogPin = A7;
int Wert = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Wert = analogRead(AnalogPin);
Serial.println(Wert);
delay(100);
}
Damit konnte er mir eine eindeutige Zuordnung der Tasten zu den Werten geben.
Dann habe ich mich auf die Suche nach der passenden Möglichkeit gemacht, die Funktionen in X-Plane zu schalten.
Ich finde es am einfachsten die entsprechenden Kommandos (Übersicht siehe: XplaneOrdner/Resources/plugins/Commands.txt) direkt über UDP an X-Plane zu senden.
Also gab es ein paar IF-Blöcke mit den passenden Werten welche dann das entprechende Command senden.
Leider kann man nicht alles über Commands regeln und leider sind auch die Commands nicht kosequent umgesetzt.
Beispiel:
Ich kann die Positionsbeleuchtung einschalten mit:
Und ebenso wieder ausschalten mit:
Was für Schalter schon mal nicht verkerht ist.
Jedoch hat Jürgen ja Taster welche bei dem Beispiel optimaler Weise einfach mit:
um- (also aus- oder an-) geschaltet werden können.
Leider ist das wie schon erwähnt nicht konsequent für alle Funktionen umgesetzt worden.
Soll heißen: Speziell "toggle" ist nicht immer verfügbar, weshalb man auf "on" und "off" zurückgreifen muss.
Daher habe ich mir überlegt, ob es nicht schlauer ist (in Anbetracht der Tatsache, dass ja später auch noch Schalterpanels folgen) ausschließlich mit "on" und "off" zu arbeiten und das "toggle" in meinem Code bereitzustellen.
Dies bringt mir einen weiteren Vorteil:
Da Jürgens Taster ja beleuchtet sind und die LED den Zustand der jeweiligen Tasterfunktion (An/Aus) darstellen soll , könnte ich entweder einfach auf die X-Plane Datarefs (Übersicht siehe: XplaneOrdner/Resources/plugins/DataRefs.txt) zurückgreifen und dementsprechend die LED an oder aus schalten:
Code: Alles auswählen
sim/cockpit/electrical/nav_lights_on int y bool Navigation Light
Was aber bedingt, dass ich diese Dataref von X-Plane auch auslesen und auswerten muss, oder aber ich verlasse mich auf meinen selbst getoggelten Zustand.
Ein "Nachteil" (?) dabei wäre jedoch auch wieder, dass ich dann die Möglichkeit verliere, die Taster auch als solche zu benutzen und im Virtuellen Cockpit ebenfalls auf die Knöpfe drücken zu können ...
Um mal wieder die Kurve zu bekommen ... ein weiteres Problem was sich mir gerade darstellt ist:
Was passiert denn überhaupt, wenn mehrere Taster gleichzeitig gedrückt werden?
Momentan ist es (wie beim BU-USB-Board in der Schaltermatrix ohne Dioden) so, dass die Werte sich aufsummieren und durch den "falschen" Stromfluss ungewollte Werte übermittelt werden könnten (bzw. umgekehrt - der Strom nimmt natürlich immer den Weg des geringsten Widerstandes).
Zwar ist die Wahrscheinlichkeit bei dem Tasterfeld geringer, jedoch bringt uns das wieder zum Schalter-Feld...
Wenn wir also Dioden einsetzen um den Stromfluss (bzw. die Flussrichtung) zu kontrollieren, wären wir das Problem schon mal los.
Aber ich verstehe noch nicht ganz, wie ich eine Schalter-Matrix aufbauen müsste ?!?
Jede Reihe und jede Spalte auf einen Digial-Pin oder wie habt ihr euch das vorgestellt?