Imersion mittels „Cockpitpanels“

Tipps, Tricks und Anleitungen rund um Technik und Hardware
Antworten
Tebraan
Beiträge: 9
Registriert: Mo 20. Sep 2021, 19:18
Hat sich bedankt: 0
Danksagung erhalten: 11 Mal

Imersion mittels „Cockpitpanels“

#1

Imersion mittels „Cockpitpanels“


Idee

Warum macht man sich die Mühe? Nun jedem der versucht sich was zu Basteln ob mit Monitoren, Eingabegeräten oder Remotesteuerung via Tablets braucht man es wohl nicht zu erklären.
Einfach ein besseres Fluggefühl.

Ich bin zum Beispiel ein Freund von etwas mehr an realistischen Situationen angepassten Schaltfunktionen.

Würdet ihr einen Reaktor, der genug energie liefert um mit einem entsprechenden Antrieb die Gesetze der Raumzeit auszuhebeln beim Aussteigen laufen lassen?
Ich nicht, ein Reaktorbruch in diesem Zeitraum und der Halbe Kontinent verdampft wahrscheinlich. und dummerweise steh, wohl eher stand, ich dann da noch drauf.

Will man sich rein auf die Computerelemente der Steuerung verlassen (Touchfelder holographische Eingabefelder oder so)?
Bugs und Hacks sind heute an der Tagesordnung. Im Jahre 3307 wird es sicher mit immer mehr technischen Möglichkeiten nicht harmloser werden. Also wäre doch für den Notfall ein Hardwareoverwright nicht verkehrt usw.

Daher bin ich am überlegen wie man so etwas gestalten kann. Habe mich auch schon im Diskord mit anderen z.B. beko und Blue [GLP] ausgetauscht. Und Infos gesammelt.
Danke schonmal an dieser Stelle.


Umsetzung

Umsetzen möchte ich das Projekt ganz in Ruhe und langsam über mehrere Einzelelemente nach und nach

Ein neuer Widescreenmonitor für das Spiel ist dabei der Anfang Der alte 23,X Zoll kommt als Toolmonitor rechts daneben.

Zwischen den beiden Joisticks soll ein Controlpannel das von 3 Touchfeldern (Smartfone Tablet) dominiert wird. Hier fehlt noch die Abdekung mit der beleuchtung für die Tastaturschublade und die beiden Joysticks ich dachte da an orangene LEDs

Auf die linke Seite soll ein Panel für ein bisschen Imersion. Kippschalter mit Sicherungsklappe für Reaktorkontrolle,Energieverteiler, Cockpitsysteme, FSD Haupttriebwerke und Manöver-düsen für
Dazu als „Anzeige 3 LED Pegelwandler mit vorgeschalteter RC (Widerstand Kondensator) Schaltung, die die Spannung nach dem umlegen des Schalters langsam ansteigen lässt um das Hochfahren der Systeme zu simulieren.

Und über dem Hauptmonitor, also dem Cockpitfenster ein Panel mit ein bis 2 Touchfeldern aus alten Smartfones.
Einem Taster für die Cockpitbeleuchtung und kontrollen für elemente, die die Flugfähigkeit beeinträchtigen. Jeein freigabeschalter und darunter oder daneben eine Taste für Fahrwerk (Furchtbare Übersetzung für unsere Landestützen) Frachtluke und Aufhängungen

Außerdem einen Schalter für die „Freigabe Hardwaroverwright“ mit dem ich über eine kleine Realisplatine alle möglichen anderen tasten, die einem so einfallen können freischalten kann.

Das Input des HID soll über http://www.leobodnar.com/shop/index.php ... cts_id=205 laufen.

Wie gesagt, bin ich derzeit noch in der Planungsphase, wenn ihr Ideen zur Ergänzung habt nur zu.

Schaltpläne, Materialien (mit Link zum schneller finden) und Co. folgen hier im Laufe der Fertigstellung.
Folgende Benutzer bedankten sich beim Autor Tebraan für den Beitrag (Insgesamt 2):
Markus (Razor2)bekopharm
Tebraan
Beiträge: 9
Registriert: Mo 20. Sep 2021, 19:18
Hat sich bedankt: 0
Danksagung erhalten: 11 Mal

Re: Imersion mittels „Cockpitpanels“

#2

So nach etwas Beratung mit beko habe ich beschlossen für die PC Schnitstelle doch einen ARDUINO Leonardo zu verwenden. Mit der richtigen Libory im Program wird dieser von selbst als Controler Joistick oder so erkannt. Ich kann die Programierung also auf ein Minimum reduzieren. (Bei erfolg werde ich den Libary link und den Code auch zur Verfügung stellen.)
Folgende Benutzer bedankten sich beim Autor Tebraan für den Beitrag:
bekopharm
Tebraan
Beiträge: 9
Registriert: Mo 20. Sep 2021, 19:18
Hat sich bedankt: 0
Danksagung erhalten: 11 Mal

Re: Imersion mittels „Cockpitpanels“

#3

Belegung des Arduino

Anzahl der Pins

Digital 14 davon 6 mit PWM
Analog 6 davon 2 I2C

Digital Inputs

Von den 14 Digitalpins werden 2 für Kippschalter verwendet, bleiben noch 12
12 pins für bis zu 32 – 1 Button (Siehe Liste)
wenn ich einige Pins für die Adressierung der Taster opfere kann ich die verbleibenden Pins pro Adresspin verdoppeln.
Bei 2 Adresspins bleiben noch 10 Pins übrig ergibt 10x4 also 40 Buttons.
Verwenden möchte ich Maximal 32 Buttons ergibt 8x4 Pins bleiben also noch 2 pins übrig

Adresspins: Pin5 und Pin6

Offene Pins: Pin10 und Pin11

Kippschalter
Flugstabilisatoren Offline Pin3

Hardwareoverride /Systemoverride Pin9
Wirkt nicht als PC input sondern,
nur auf die Funktion des Arduino.

Buttons

Override-Buttons Name Panelpos. Adresse

Licht oben links 00 Pin0 override wahr?
Nachtsicht oben links 00 Pin1 override wahr?

VSS oben links 00 Pin2 override wahr

Modus unten links 00 Pin4 override wahr
Feuergr. Weiter unten links 00 Pin7 override wahr
Feuergr. Zurück unten links 00 Pin8 override wahr

FSD Cruise oben rechts 00 Pin12 override wahr?
FSD Jump oben rechts 00 Pin13 override wahr?

Kühlkörper unten 01 Pin0 override wahr
Düppel unten 01 Pin1 override wahr
EGM unten 01 Pin2 override wahr

Summe 11 11

Gesicherte Buttons Name Panelpos. Adresse

Fahrwerk oben mitte 01 Pin4
Frachtluke oben mitte 01 Pin7
Aufhängungen oben mitte 01 Pin8

Summe 3 14

Sonstige Buttons Name Panelpos. Adresse
Farbe Cockpitbel. Weiter 11 Pin0
Farbe Cockpitbel. Zurück 11 Pin1

0 Schub Pedal links? 11 Pin2
Boost Pedal rechts? 11 Pin4

Summe 4 18
Tebraan
Beiträge: 9
Registriert: Mo 20. Sep 2021, 19:18
Hat sich bedankt: 0
Danksagung erhalten: 11 Mal

Re: Imersion mittels „Cockpitpanels“

#4

Hallo, mal ein kleines Statusupdate zu meinen Programierversuchen.

Ich habe inzwischen mit einiger Hilfe ein paar Codebeispiel gefunden um meine oben genannten Inputs mit hilfe von 2 ArduinoLeonardo realisieren zu können.
Einen mit 14 Buttons und 6 Achsen als Maximalauslegung.
den 2. mit 20 Buttons ohne Achsen.
Die Anzahl der Achsen ließe sich dabei pro Gerät zwischen 0 und 6 variieren und Pro Achse würde eben ein Button geopfert werden.

Noch nicht ganz das, was ich will.
Aber eine Funktionierende Lösung für meine Anforderung als Eingabegerät.

Wenn ich was neues habe schreibe ich es euch.
Folgende Benutzer bedankten sich beim Autor Tebraan für den Beitrag:
bekopharm
Tebraan
Beiträge: 9
Registriert: Mo 20. Sep 2021, 19:18
Hat sich bedankt: 0
Danksagung erhalten: 11 Mal

Re: Imersion mittels „Cockpitpanels“

#5

Hallo Leute,

Nach vielen .... vielen Stunden des Bastelns und der Programierung..
(Letzteres mit vielen fehlschlägen, da ich das Programieren erst mit diesem Projekt wieder erlernt habe.)

habe ich inzwischen das erste panel am laufen. Allerdings mit einigen technischen Anpassungen am ursprünglichen Plan.

Falls jemand interesse an einem Nachbau hat benötigt er:

diverse Taster, Schalter, Pulldownwiederstände für 14 Eingabekanäle und diverses montagematerial
Einen Arduino Leonardo (oder funktionsgleiches Gerät eines anderen Herstellers)

Einige Beispiele, die ich verwendet habe https://www.amazon.de/gp/product/B08834 ... =UTF8&th=1
https://www.amazon.de/gp/product/B0882R ... UTF8&psc=1
https://www.amazon.de/gp/product/B07BDK ... UTF8&psc=1
https://www.amazon.de/gp/product/B08VNB ... UTF8&psc=1
https://www.amazon.de/gp/product/B07MY2 ... UTF8&psc=1


An Software eine Variante des Arduino IDE z.B. https://www.arduino.cc/en/software

die ArduinoJoistick libary von MHeironimus https://github.com/MHeironimus/ArduinoJoystickLibrary

und folgenden Code

Code: Alles auswählen

#include <Joystick.h>

//Um das problem mit dem Puldown zu umgehen reduziert man die eingänge auf 14 Buttons (die sind dann pin 0-13)

//Die Pins A0 bis A5 lassen sich dann LED steuerung verwenden

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_GAMEPAD,
14, 0, // Button Count, Hat Switch Count
false, false, false, // X and Y, but no Z Axis
false, false, false, // No Rx, Ry, or Rz
false, false, // No rudder or throttle
false, false, false); // No accelerator, brake, or steering

void setup() {
  
// Initialize Button Pins
// Button Pins 0-13 Highactiv for LED-Switch 5V

pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);

// LED rückmeldung

pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);

// Initialize Joystick Library
Joystick.begin();
}
const int pinToButtonMap = 0;

// Last state of the button
int lastButtonState[24] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

void loop() {
for (int index = 0; index < 24; index++)
{
int currentButtonState = digitalRead(index + pinToButtonMap); //!digitalRead bedeutet eine Notverknüpfung
if (currentButtonState != lastButtonState[index])
{
Joystick.setButton(index, currentButtonState);
lastButtonState[index] = currentButtonState;
}
}
delay(50);
}




Als Anmerkung:

Pulldown war erforderlich, weil ich mit Beleuchteten Kippschaltern zur Freigabe arbeite, bzw. die Flugstablisatoren auf halten gestellt sind und mit einem Kippschalter ein und aus schalte.
Das begrenzt die Anzal der Eingabepins auf 14 da der neue ATMEGA... der auf den Boards verbaut wird einen nicht verbundenen Inputpin hat, der in der Chiparchitektur nach pin 13 kommt, und daher permanent flackert, wenn man die Analogen pins für buttons verwenden will.

Fotos folgen
Folgende Benutzer bedankten sich beim Autor Tebraan für den Beitrag:
bekopharm
Antworten

Zurück zu „Technik & Hardware“