Uses GPIO to power OLED display

defined in is-cfg.json as
display -> pin_vcc
display -> pin_gnd

currently configured on main thread. Should probably be moved to display initialization.
This commit is contained in:
Fabian Kaup 2022-04-23 13:37:10 +02:00
parent 657cfd7e39
commit 93324c64cf
3 changed files with 24 additions and 1 deletions

View file

@ -100,6 +100,15 @@ void setup() {
LoRaSystem.setBoardConfig(boardConfig);
LoRaSystem.setUserConfig(&userConfig);
if (userConfig.display.vccPin != 0 && userConfig.display.gndPin != 0) {
pinMode(userConfig.display.vccPin, OUTPUT);
digitalWrite(userConfig.display.vccPin, HIGH);
pinMode(userConfig.display.gndPin, OUTPUT);
digitalWrite(userConfig.display.gndPin, LOW);
LoRaSystem.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, MODULE_NAME, "Using GPIO to power display: VCC %d , GND %d", userConfig.display.vccPin, userConfig.display.gndPin);
}
LoRaSystem.getTaskManager().addTask(&displayTask);
LoRaSystem.getTaskManager().addTask(&modemTask);
LoRaSystem.getTaskManager().addTask(&routerTask);
@ -145,6 +154,14 @@ void setup() {
pinMode(userConfig.display.overwritePin, INPUT_PULLUP);
}
if (userConfig.display.vccPin != 0 && userConfig.display.gndPin != 0) {
pinMode(userConfig.display.vccPin, OUTPUT);
digitalWrite(userConfig.display.vccPin, HIGH);
pinMode(userConfig.display.gndPin, OUTPUT);
digitalWrite(userConfig.display.gndPin, LOW);
LoRaSystem.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, MODULE_NAME, "Using GPIO to power display: VCC %d , GND %d", userConfig.display.vccPin, userConfig.display.gndPin);
}
delay(5000);
LoRaSystem.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_INFO, MODULE_NAME, "setup done...");
}

View file

@ -62,6 +62,8 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen
conf.display.alwaysOn = data["display"]["always_on"] | true;
conf.display.timeout = data["display"]["timeout"] | 10;
conf.display.overwritePin = data["display"]["overwrite_pin"] | 0;
conf.display.vccPin = data["display"]["pin_vcc"] | 0;
conf.display.gndPin = data["display"]["pin_gnd"] | 0;
conf.display.turn180 = data["display"]["turn180"] | true;
conf.ftp.active = data["ftp"]["active"] | false;
@ -140,6 +142,8 @@ void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &co
data["display"]["always_on"] = conf.display.alwaysOn;
data["display"]["timeout"] = conf.display.timeout;
data["display"]["overwrite_pin"] = conf.display.overwritePin;
data["display"]["pin_vcc"] = conf.display.vccPin;
data["display"]["pin_gnd"] = conf.display.gndPin;
data["display"]["turn180"] = conf.display.turn180;
data["ftp"]["active"] = conf.ftp.active;
JsonArray users = data["ftp"].createNestedArray("user");

View file

@ -94,12 +94,14 @@ public:
class Display {
public:
Display() : alwaysOn(true), timeout(10), overwritePin(0), turn180(true) {
Display() : alwaysOn(true), timeout(10), overwritePin(0), vccPin(0), gndPin(0), turn180(true) {
}
bool alwaysOn;
int timeout;
int overwritePin;
int vccPin;
int gndPin;
bool turn180;
};