Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions OpenFIREmain/OpenFIREdisplay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#define SSD1306_NO_SPLASH

#include <Arduino.h>
#include <Adafruit_GFX.h>
//#include <Adafruit_GFX.h> // move a OpenFIREdisplay.h
#include <Wire.h>
#include <TinyUSB_Devices.h>

Expand All @@ -36,7 +36,11 @@ bool ExtDisplay::Begin()
// SDA/SCL are indeed on verified correct pins
Wire1.setSDA(OF_Prefs::pins[OF_Const::periphSDA]);
Wire1.setSCL(OF_Prefs::pins[OF_Const::periphSCL]);
display = new Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire1, -1);
#ifdef USE_LOVYAN_GFX
display = new LGFX_SSD1306(1,OF_Prefs::pins[OF_Const::periphSDA], OF_Prefs::pins[OF_Const::periphSCL], OF_Prefs::toggles[OF_Const::i2cOLEDaltAddr] ? 0x3D : 0x3C, SCREEN_WIDTH, SCREEN_HEIGHT);
#else
display = new Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire1, -1);
#endif //USE_LOVYAN_GFX
} else return false;
} else if(!bitRead(OF_Prefs::pins[OF_Const::periphSCL], 1) && !bitRead(OF_Prefs::pins[OF_Const::periphSDA], 1)) {
// I2C0
Expand All @@ -45,12 +49,20 @@ bool ExtDisplay::Begin()
// SDA/SCL are indeed on verified correct pins
Wire.setSDA(OF_Prefs::pins[OF_Const::periphSDA]);
Wire.setSCL(OF_Prefs::pins[OF_Const::periphSCL]);
display = new Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#ifdef USE_LOVYAN_GFX
display = new LGFX_SSD1306(0,OF_Prefs::pins[OF_Const::periphSDA], OF_Prefs::pins[OF_Const::periphSCL], OF_Prefs::toggles[OF_Const::i2cOLEDaltAddr] ? 0x3D : 0x3C, SCREEN_WIDTH, SCREEN_HEIGHT);
#else
display = new Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#endif //USE_LOVYAN_GFX
} else return false;
} else return false;
} else return false;

if(display->begin(SSD1306_SWITCHCAPVCC, OF_Prefs::toggles[OF_Const::i2cOLEDaltAddr] ? 0x3D : 0x3C)) {
#ifdef USE_LOVYAN_GFX
if(display->init()) {
#else
if(display->begin(SSD1306_SWITCHCAPVCC, OF_Prefs::toggles[OF_Const::i2cOLEDaltAddr] ? 0x3D : 0x3C)) {
#endif //USE_LOVYAN_GFX
display->clearDisplay();
ScreenModeChange(Screen_None);
return true;
Expand Down
54 changes: 52 additions & 2 deletions OpenFIREmain/OpenFIREdisplay.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,60 @@
#ifndef _OPENFIREDISPLAY_H_
#define _OPENFIREDISPLAY_H_

#define USE_LOVYAN_GFX // remove for use adafruit library

#include <stdint.h>
#include <Adafruit_SSD1306.h>

#ifdef USE_LOVYAN_GFX
#define LGFX_USE_V1
#include <LovyanGFX.hpp>
#else
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#endif //USE_LOVYAN_GFX

#include "OpenFIREDefines.h"

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#ifdef USE_LOVYAN_GFX

#define BLACK TFT_BLACK
#define WHITE TFT_WHITE

class LGFX_SSD1306 : public lgfx::LGFX_Device
{
lgfx::Panel_SSD1306 _panel_instance;
lgfx::Bus_I2C _bus_instance;
public:
LGFX_SSD1306(uint8_t i2c_port, int16_t sda, int16_t scl, uint8_t i2c_addr, uint16_t width, uint16_t height)
{
{
auto cfg = _bus_instance.config();
cfg.i2c_port = i2c_port;
cfg.pin_sda = sda;
cfg.pin_scl = scl;
cfg.i2c_addr = i2c_addr;
cfg.freq_write = 400000;
cfg.freq_read = 400000;
_bus_instance.config(cfg);
_panel_instance.setBus(&_bus_instance);
}
{
auto cfg = _panel_instance.config();
cfg.panel_width = width;
cfg.panel_height = height;
_panel_instance.setRotation(2);
_panel_instance.setBrightness(255);
_panel_instance.config(cfg);
}
setPanel(&_panel_instance);
}
};

#endif //USE_LOVYAN_GFX

class ExtDisplay {
public:
/// @brief Attempt to start display using current pin numbers from SamcoPreferences
Expand Down Expand Up @@ -94,7 +140,11 @@ class ExtDisplay {
ScreenSerial_Both
};

Adafruit_SSD1306 *display = nullptr;
#ifdef USE_LOVYAN_GFX
LGFX_SSD1306 *display = nullptr;
#else
Adafruit_SSD1306 *display = nullptr;
#endif //USE_LOVYAN_GFX

/// @brief Whether life updates are in lifebar or life glyphs form
bool lifeBar = false;
Expand Down
2 changes: 1 addition & 1 deletion OpenFIREmain/OpenFIREmain.ino
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ void setup() {
if(OF_Prefs::profiles[i].topOffset >= 32768 || OF_Prefs::profiles[i].topOffset <= -32768 ||
OF_Prefs::profiles[i].bottomOffset >= 32768 || OF_Prefs::profiles[i].bottomOffset <= -32768 ||
OF_Prefs::profiles[i].rightOffset >= 32768 || OF_Prefs::profiles[i].rightOffset <= -32768 ||
OF_Prefs::profiles[i].leftOffset >= 32768 || OF_Prefs::profiles[i].leftOffset <= -32768 || ) {
OF_Prefs::profiles[i].leftOffset >= 32768 || OF_Prefs::profiles[i].leftOffset <= -32768) {
OF_Prefs::profiles[i].topOffset = 0;
OF_Prefs::profiles[i].bottomOffset = 0;
OF_Prefs::profiles[i].leftOffset = 0;
Expand Down
Loading