OLED-Display dunkel schalten

Bekanntermaßen brennt ein OLED-Display mit der Zeit ein, wenn es immer eingeschaltet ist. Der Stromverbrauch ist dabei keine Thema, sondern eher die Lebensdauer des Displays. In diesem Beispiel-Sketch kann man zur Demo das Display mit einer Taste einfach dunkel schalten.

/*
  OLED-Display dunkel schalten
  by m266
  19.01.2022
  Taste zur Demo an D2 angeschlossen (nicht entprellt)
  Dunkelsteuerung über Pin 2 mit Taste, Schalter, Monoflop, FlipFlop o. ä.
*/

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width,  in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
#define OLED_ADDR   0x3C
Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT);
// declare an SSD1306 display object connected to I2C
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

int switchPin = 2;

void setup() {
 Serial.begin(9600);
 Serial.print("Sketch:   ");   Serial.println(__FILE__);
 Serial.print("Uploaded: ");   Serial.println(__DATE__);
 Serial.println("Start");
 pinMode(switchPin, INPUT_PULLUP);
 display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
 display.clearDisplay();
 display.display();
}

void oledDisplay()
{
 display.clearDisplay();
 display.setTextSize(2);
 if (digitalRead(switchPin) == LOW) // OLED-Display dunkel schalten
 {
   display.setTextColor(BLACK);
 }
 else
 {
   display.setTextColor(WHITE);
 }
 display.setCursor(0, 0);
 display.println("Hallo");
 display.print("Welt!");
 display.display();
}
void loop() {
 oledDisplay();
}

Wichtiger Hinweis:
Ein OLED-Display benötigt einiges an Speicher auf dem Arduino. Wenn weitere Funktionen verwendet werden, reicht u. U. der vorhandene Speicher (z. B. bei Arduino Uno bzw. Nano) nicht aus. Dann muss zu einem größeren Modell wie Arduino Mega gewechselt werden!