Irgendwann ist wirklich alles fertig gebaut – leider. Wirklich alles fertig? Na ja, man könnte ja das DATALOADER Display „beleben“ und ein LCD Display einbauen. Ein ARDUINO mit unbelegten Outputs hatte ich ja noch…
Als Display kommt ein HD44780 16×2 LCD Modul Display Bundle mit I2C Schnittstelle zum Einsatz (Link zu Amazon). Das Display wird mit MOBIFLIGHT betrieben.
Das Display habe ich unten an das Panel geschraubt. Da keine Halterung vorhanden war, habe ich Schrauben an das Panel geklebt und kann das Display mit einer Mutter fixieren.
Die Verkabelung habe ich auf Basis dieses Tutorials so realisiert:
Kabel | Display | Arduino |
---|---|---|
Schwarz | GND | GND |
Weiß | VCC | +5V |
Blau | SDA | Pin 20 (SDA) |
Grün | SCL | Pin 21 (SCL) |
Im Mobiflight habe die beiden Lines so konfiguriert, dass Line 1 die Airline und das Callsign aus der aircraft.cfg anzeigt (Offset 0x3148 und 0x313C). Für die Line 2 habe ich in mein GSX Script eine Statusabfrage implementiert.
Diese ist in meinem Softwareprojekt „peroJeeHellExtPWRbyGSX“ enthalten.
dataloader.mcc
Aktuell schaut das Script so aus (Änderungen werden hier nicht gepflegt und es wird nicht benötigt, wenn man mein GSX Script verwendet):
function checkDataloader()
local simStatus = ipc.readUB(0x3402)
-- GSX Status
if (BOARDING_STATE == 4 or BOARDING_STATE == 5) then
local x = round(ipc.readLvar("FSDT_GSX_NUMPASSENGERS_BOARDING_TOTAL"),0)
local y = round(GSXboardedPax,0)
if (x==y and x>0) then
line2 = "BDG Cargo..."
else
line2 = "BDG ("..x.."/"..y..")"
end
elseif (BOARDING_STATE == 6 and engineLeftRunning==0 and engineRightRunning==0) then
line2 = "BDG completed"
elseif (DEBOARDING_STATE == 4 or DEBOARDING_STATE == 5) then
line2 = "DBDG ("..round(ipc.readLvar("FSDT_GSX_NUMPASSENGERS_DEBOARDING_TOTAL"),0).."/"..round(GSXboardedPax,0)..")"
elseif (DEBOARDING_STATE == 6 and engineLeftRunning==0 and engineRightRunning==0) then
line2 = "DBDG completed"
elseif (CATERING_STATE == 4 or CATERING_STATE == 5) then
line2 = "BDG Catering..."
elseif (REFUELING_STATE == 4 or REFUELING_STATE == 5) then
line2 = "Refueling..."
elseif (DEICING_STATE == 4 or DEICING_STATE == 5) then
line2 = "Deicing..."
elseif (DEPARTURE_STATE == 4 or DEPARTURE_STATE == 5) then
if (ipc.readLvar("FSDT_VAR_Frozen")==1) then
line2 = "Pushback..."
else
line2 = "Departure..."
end
else
if (onGround==1) then
line2 = "In Operation"
else
if (CabinSoundCruiseTime==0 and CabinSoundCruise==1) then CabinSoundCruiseTime = ipc.elapsedtime() end
if (CabinSoundCruiseTime > 0 and ipc.elapsedtime() < CabinSoundCruiseTime + 480000) then
-- 8 Minuten (60*1000*8)
line2 = "Serving Catering"
else
line2 = "In Flight"
end
end
end
-- ipc.Display(line2)
-- Simulator Status
if (logic.And(simStatus,1) ~= 0) and (logic.And(simStatus,2) ~= 0) then
line2 = "** PAUSE/SLEW **"
elseif (logic.And(simStatus,1) ~= 0) then
line2 = "**** PAUSED ****"
elseif (logic.And(simStatus,2) ~= 0) then
line2 = "***** SLEW *****"
end
-- Write to Offset
if (ipc.readSTR(0x66F1, 16) ~= line2) then ipc.writeSTR(0x66F1, line2, 16) end
end
Der Status für GSX wurde final nochmal angepasst:
- BDG in progress
- BDG completed
- DEBDG in progress
- DEBDG completed