I have included some relevant code
Code: Select all
#include <arduino.h>
#include <XPLDirect.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>
#include <Fonts/FreeSans24pt7b.h>
#include <Fonts/DSEG7_Classic_Italic_24.h>
#define OLED_RESET 4
#define TCAADDR 0x70
XPLDirect Xinterface(&Serial);
Adafruit_SH1106 display(OLED_RESET);
long int altitudePre;
long int beacon;
long int avionicsSwitchOn;
int masterOn = 0;
int avionicsOn = 1;
long int com1Freq;
long int com1StandbyFreq;
long int nav1Freq;
long int nav1StandbyFreq;
String Com1Standby = String("12170") ;
String Com1Active = String("11820") ;
String Com2Standby = String("12170") ;
String Com2Active = String("11820") ;
String nav1Standby = String("12170") ;
String nav1Active = String("11820") ;
String nav2Standby = String("12170") ;
String nav2Active = String("11820") ;
// 'AltutudeBlank', 60x32px
const unsigned char myBitmap [] PROGMEM = {
0xf8, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf8, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
0xc3, 0xf0, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xe1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xc7, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x0f, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7e, 0x1f, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf8, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf8, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
0xc3, 0xf0, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xe1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xc7, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x8f, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7e, 0x1f, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf8, 0x7e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xfc, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
0xc3, 0xf0, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xe1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xc3, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x8f, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7e, 0x1f, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf8, 0x7e, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe1, 0xf0, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xe1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xc3, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x87, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x0f, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00
};
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(XPLDIRECT_BAUDRATE);
Xinterface.begin("XplaneUno");
display.begin(SH1106_SWITCHCAPVCC, 0x3C);
Xinterface.registerDataRef("sim/cockpit/autopilot/altitude", XPL_READ, 100, 0, &altitudePre);
Xinterface.registerDataRef("sim/cockpit2/switches/beacon_on", XPL_READ, 100, 0, &beacon);
Xinterface.registerDataRef("sim/cockpit/electrical/avionics_on", XPL_READ, 100, 0, &avionicsSwitchOn);
Xinterface.registerDataRef("sim/cockpit/radios/com1_freq_hz", XPL_READ, 100, 0, &com1Freq);
Xinterface.registerDataRef("sim/cockpit/radios/com1_stdby_freq_hz", XPL_READ, 100, 0, &com1StandbyFreq);
Xinterface.registerDataRef("sim/cockpit/radios/nav1_freq_hz", XPL_READ, 100, 0, &nav1Freq);
Xinterface.registerDataRef("sim/cockpit/radios/nav1_stdby_freq_hz", XPL_READ, 100, 0, &nav1StandbyFreq);
}
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
void loop() {
Xinterface.xloop();
tcaselect(0);
writeAltitude();
tcaselect(1);
nav1Display();
}