#include <U8g2lib.h>
// https://github.com/olikraus/u8g2 // library
// https://github.com/olikraus/u8g2/wiki/u8g2reference // reference
// https://github.com/olikraus/u8g2/wiki/fntlistall // fonts
U8G2_SSD1306_128X64_NONAME_F_SW_I2C display[] = {
// create an array of U8G2 objects
U8G2_SSD1306_128X64_NONAME_F_SW_I2C(U8G2_R0, SCL, SDA, U8X8_PIN_NONE), // first OLED
U8G2_SSD1306_128X64_NONAME_F_SW_I2C(U8G2_R0, SCL, SDA, U8X8_PIN_NONE) // second OLED
};
void setup() {
configOled(0, 0x7A, u8g2_font_squeezed_b7_tr); // address 0x7A = 0x3C
configOled(1, 0x78, u8g2_font_t0_14b_mf); // address 0x78 = 0x3D
displayOled(0, 0, 7, "DISPLAY");
displayOled(1, 0, 0, "display");
}
void loop() {
}
void configOled(int number, int address, const uint8_t* font) {
display[number].setI2CAddress(address);
display[number].begin();
display[number].setFont(font);
display[number].setDrawColor(1); // white
display[number].clearDisplay();
display[number].clearBuffer();
display[number].sendBuffer(); // transfer internal memory to the display
}
void displayOled(int number, int x, int y, const char* text) {
display[number].setFontDirection(number);
// display[number].setDisplayRotation(U8G2_R1); // only works with #define U8G2_Rx
display[number].setCursor(x, y);
display[number].print(text);
display[number].print(number);
display[number].sendBuffer();
display[number].clearBuffer(); // must clear buffer for next display
}