22 Feb

peroPROPSIM – Warn panel

Nun zum wohl letzten Detail, welches einen Lötkolben verlangt – dem „Warn Panel“. Das eigentliche Panel habe ich wieder bei der Schaeffer AG fräsen lassen. Dann habe ich mit Powerpoint eine Datei mit 10 Warnpanels erstellt und auf eine Klebefolie mit dem Laserdrucker ausgedruckt. Die Folien müssen dann präzise ausgeschnitten und passgenau aufeinander geklebt werden. Das ist nicht wirklich einfach. Zwei Folien musste ich neu machen, da der Ansatz beim aufkleben nicht korrekt war.

Die Beleuchtung erreiche ich durch 3mm LED in rot und gelb, die ich auf eine Leiterbahnenplatte RM 2.54 aufgelötet habe. Da der Hintergrund meines Panels aus einer Kunststoffplatte besteht, konnte ich die Ausschnitte gut dazu verwenden, dass eine Reihe LED nicht in einen anderen Bereich strahlt.

Gegenstelle für die LED bildet ein LED Driver 2 von Arcaze.

Software

Auch die Offsets für die LED werden von Arcaze FSUIPC Connector angesteuert. Ein Warnpanel ist dabei nicht ganz einfach, da es bei den Default Flugzeugen kein Offset gibt, um das erleuchten der Warnings abzufragen. Um das nun möglichst vielseitig kompatibel zu machen, verwende ich für mein Panel freie FSUIPC Offsets:

Oil Press: 0x66C0
Volts: 0x66C1
VAC Left: 0x66C2 
VAC Center: 0x66C3 
VAC Right: 0x66C4
Fuel Left: 0x66C5
Fuel Center: 0x66C6
Fuel Right: 0x66C7

Da ich mich entschieden habe, als Basis für den Flugsimulator die A2A C172 Trainer zu verwenden, muss ich nun noch eine Verknüpfung zwischen Offsets und LVars herstellen, da A2A nicht mit den Offsets arbeitet. Dazu habe ich ein kleines LUA Script geschrieben, welches permanent die LVars abfragt und den Zustand in das passende Offset überträgt.

-- Eintrag für LINDA (kann ggf. entfernt werden)
ipc.runlua('linda')

while 1 do
 OilPressLight = ipc.readLvar("L:OilPressLight")
 VoltsLight = ipc.readLvar("L:VoltsLight")
 VacLLight = ipc.readLvar("L:VacLLight")
 VacLight = ipc.readLvar("L:VacLight")
 VacRLight = ipc.readLvar("L:VacRLight")
 FuelLLight = ipc.readLvar("L:FuelLLight")
 FuelLight = ipc.readLvar("L:FuelLight")
 FuelRLight = ipc.readLvar("L:FuelRLight")

 -- OilPres (Offset: 66C0)
 ipc.writeSB(0x66C0, OilPressLight)

 -- Volts (Offset: 66C1)
 ipc.writeSB(0x66C1, VoltsLight)

 -- VAC Left (Offset: 66C2)
 ipc.writeSB(0x66C2, VacLLight)
 
 -- VAC (Offset: 66C3)
 ipc.writeSB(0x66C3, VacLight)
 
 -- VAC Right (Offset: 66C4)
 ipc.writeSB(0x66C4, VacRLight)

 -- Fuel Left (Offset: 66C5)
 ipc.writeSB(0x66C5, FuelLLight)
 
 -- Fuel (Offset: 66C6)
 ipc.writeSB(0x66C6, FuelLight)
 
 -- Fuel Right (Offset: 66C7)
 ipc.writeSB(0x66C7, FuelRLight)
 
end

Diese Script wird in der „ipcReady.lua“ Datei im Modules Ordner des Flugsimulators abgespeichert. Das Script wird somit bei jedem Simulatorstart geladen.

Arcaze FSUIPC Connector reagiert dann passend auf die Offsets. Diese Vorgehensweise ermöglicht mir sogar das „blinken“ der Anzeigen zu simulieren.

Für die Marker verwende ich folgende Offsets, die ich direkt in Arcaze FSUIPC Connector abfrage:

OuterMarker: 0x0BB0
MiddleMarker: 0x0BAE
InnerMarker: 0x0BAC