ESP - DHT Mess­da­ten auf Wavesha­re 1,54 Zoll E-Ink anzeigen



Lösung

Zie­le des Projekts

Die Mess­da­ten eines DHT-Sen­sors auf einem 1,54 Zoll E-Ink-Dis­play darstellen

  • als Text
  • als Text und dem Zeit­punkt der letz­ten Messung
  • als Text mit Sym­bo­len und dem Zeit­punkt der letz­ten Messung

So sieht es aus:

Die Hard­ware

Als Elek­tro­ni­sches Papier (E-Paper/-E-Ink) wird die Tech­nik bezeich­net das Aus­se­hen von Tin­te auf Papier nach­zu­bil­den. Die Anzei­ge leuch­tet nicht selbst, der Inhalt wird solan­ge dar­ge­stellt bis eine Ände­rung erfolgt. Die Anzei­ge ist trä­ge, ein Wech­sel des Inhalts dau­ert meh­re­re Sekun­den, schnel­le Bild­wech­sel sind nicht mög­lich.
Das Wavesha­re 1,54 Zoll E-Ink Dis­play hat eine Auf­lö­sung von 200×200 Pixeln und kann die Far­ben weiß, rot und schwarz darstellen.

Die Sen­so­ren DHT11 und DHT22 mes­sen Tem­pe­ra­tur und Luftfeuchtigkeit

Ver­gleich DHT11/DHT22

DHT11DHT22
Mess­be­reich Temperatur0 - +50°C-40 - +80°C
Auf­lö­sung Temperatur1°C0,1°C
Mess­ge­nau­ig­keit Temperatur± 2 °C± 0,5 °C
Mess­be­reich Luftfeuchtigkeit20 - 90%0 - 100%
Auf­lö­sung Luftfeuchtigkeit1%0,1%
Mess­ge­nau­ig­keit Luftfeuchtigkeit± 5 %± 2 %

Benö­tig­te Bauteile

  • ESP32-Mikro­con­trol­ler oder ESP8266-Mikrocontroller
  • DHT11/DHT22 Tem­pe­ra­tur­sen­so­ren
  • Wavesha­re 1,54 Zoll E-Ink Display
  • Lei­tungs­dräh­te

Kon­fi­gu­ra­ti­on der Mikrocontroller

Benö­tig­te Bibliotheken

Instal­lie­re auch die benö­tig­ten zusätz­li­chen Bibliotheken

Anschluss des Displays

Die Pins CLK und DIN (COPI) sind durch den SPI-Bus des jewei­li­gen Mikro­con­trol­lers fest­ge­legt, die ande­ren Pins kön­nen frei ver­ge­ben werden.

PinESP32 WROOMNodeM­CUESP32-C6Ardui­no Nano ESP32
BUSY4D111D9
RST22D22D7
DC23D63D6
CS5D418D10
CLK18 (SPI)D5 (SPI)21 (SPI)D13 (SPI)
DIN23 (SPI)D7 (SPI)19 (SPI)D11 (SPI)
GNDGNDGNDGNDGND
VCC3,3V3,3V3,3V3,3V

Gra­fik­funk­tio­nen

Funk­tio­nen der Biblio­thek GxEPD2

Schlüs­sel­wortPara­me­terAkti­on
width();Bild­schirm­brei­te feststellen
height();Bild­schirm­hö­he feststellen
init();Dis­play starten
setRotation(Richtung);Rich­tung = 0 → nicht drehen
Rich­tung = 1 → 90° drehen
Rich­tung = 2 → 180° drehen
Rich­tung = 3 → 270 ° drehen
Bild­schirm ausrichten
fillScreen(Farbe);Stan­dard­far­ben:
GxEPD_WHITE
GxEPD_BLACK
GxEPD_RED
Bild­schirm­hin­ter­grund
setFull­Win­dow();gesam­ten Bild­schirm nutzen
setPartialWindow(StartX, Star­tY, End­eX, EndeY);Teil des Bild­schirm nutzen
drawPixel(x, y, Farbe);ein­zel­nen Pixel zeichnen
drawLine(StartX, Star­tY, End­eX, EndeY, Farbe);Linie zeich­nen
drawFastHLine(StartX, Star­tY, Län­ge, Farbe);hori­zon­ta­le Linie zeichnen
drawFastVLine(StartX, Star­tY, Län­ge, Farbe);ver­ti­ka­le Linie zeichnen
drawRect(StartX, Star­tY,, Brei­te, Höhe, Farbe);Recht­eck zeichnen
drawRoundRect(StartX, Star­tY, Brei­te, Höhe, Ecken­ra­di­us, Farbe);abge­run­de­tes Recht­eck zeichnen
fillRect(StartX, Star­tY, Brei­te, Höhe, Füllfarbe);aus­ge­füll­tes Recht­eck zeichnen
drawCircle(MittelpunkX, Mit­tel­punk­tY, Radi­us, Farbe);Kreis zeich­nen
fillCircle(MittelpunktX, Mit­tel­punk­tY, Radi­us, Füllfarbe);Aus­ge­füll­ten Kreis zeichnen
setCursor(x, y);Cur­sor setzen
setTextSize(Textgröße);Text­grö­ße bestimmen
setTextColor(Farbe);Text­far­be setzen
print("Text"); println("Text");Text schrei­ben
setTextWrap(true/false);fal­se → Text fließt über den Rand des Dis­plays hinaus
true → Text wird am Ende umgebrochen
Zei­len­um­bruch
drawBitmap(x, y, Bitmap_Array, Brei­te, Höhe, Farbe);Bit­map dartsellen

Bei­spiel­pro­gramm

Das Pro­gramm zeigt

  • mit der inter­nen Funk­ti­on der Biblio­thek Text an
  • mit der Biblio­thek U8g2_for_Adafruit_GFX Text an
    Die­se Biblio­thek ver­fügt über eine gro­ße Aus­wahl von Schrif­ten in ver­schie­de­nen Grö­ßen, sie kann im Gegen­satz zur inter­nen Text­dar­stel­lung auch Son­der­zei­chen und Umlau­te darstellen
  • Krei­se, Lini­en und Rechtecke
Text mit u8g2Krei­sehori­zon­ta­le Linienabge­run­de­te Rechtecke

Du musst ab Zei­le 10 den ent­spre­chen­den Mikro­con­trol­ler auswählen.

#include "GxEPD2_3C.h"
#include "U8g2_for_Adafruit_GFX.h"

// Objekt u8g2Schriften
U8G2_FOR_ADAFRUIT_GFX u8g2Schriften;

#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c

// ESP32-Wroom
// Anschlüsse: CLK -> 18, DIN -> 23, CS -> 5, DC-> 2, RST -> 22, BUSY -> 4
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/5, /*DC=*/2, /*RST=*/22, /*BUSY=*/4));

// NodeMCU
// CLK - D5, DIN -> D7, CS -> D8, DC -> D6, RST -> D2, BUSY -> D1
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/D4, /*DC=*/D6, /*RST=*/D2, /*BUSY=*/D1));

// ESP32-C6
// Anschlüsse: CLK -> 21, DIN -> 19, CS -> 18, DC-> 3, RST -> 10, BUSY -> 11
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 18, /*DC=*/ 3, /*RST=*/2, /*BUSY=*/11));

// Nano ESP32
// Anschlüsse: CLK -> D13, DIN -> D11, CS -> D10, DC-> D6, RST -> D8, BUSY -> D9
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D6, /*RST=*/ D7, /*BUSY=*/ D9));

void setup() 
{
  display.init(115200, true, 2, false);

  // Schriften von u8g2 display zuordnen
  u8g2Schriften.begin(display); 

  // interne Schriften
  Text();
  delay(5000);

  // u8g2 Schriften
  TextFonts();
  delay(5000);

  // ausgefüllte Kreise
  Kreise();
  delay(5000);

  // horizontale Linien
  LinienHorizontal();
  delay(5000);

  // vertikale Linien
  LinienVertikal();
  delay(5000);

  // abgerundete Rechtecke
  Rechtecke();
  display.hibernate();
}

void Text()
{
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);
  
  display.firstPage();
  do 
  {
    display.setCursor(1, 10);
    display.setTextColor(GxEPD_BLACK);
    display.setTextSize(2);
    display.print("Text");

    display.setCursor(1, 40);
    display.setTextColor(GxEPD_RED);
    display.setTextSize(3);
    display.print("Text");

    display.setCursor(1, 80);
    display.setTextColor(GxEPD_BLACK);
    display.setTextSize(4);
    display.print("Text");

    display.setCursor(1, 120);
    display.setTextColor(GxEPD_RED);
    display.setTextSize(6);
    display.print("Text");
  } 
  while (display.nextPage());
}

// alle Schriften können Umlaute darstellen
void TextFonts()
{ 
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);

  u8g2Schriften.setForegroundColor(GxEPD_BLACK);   
  u8g2Schriften.setBackgroundColor(GxEPD_WHITE);

  display.firstPage();
  do 
  {
    u8g2Schriften.setCursor(1, 30);
    u8g2Schriften.setFont(u8g2_font_helvB24_tf);   
    u8g2Schriften.print("Text");

    u8g2Schriften.setCursor(1, 70);
    u8g2Schriften.setFont(u8g2_font_fub30_tf);   
    u8g2Schriften.print("Text");

    u8g2Schriften.setCursor(1, 120);
    u8g2Schriften.setFont(u8g2_font_inb38_mf);   
    u8g2Schriften.print("Text");

    u8g2Schriften.setCursor(1, 190);
    u8g2Schriften.setFont(u8g2_font_inb49_mr);   
    u8g2Schriften.print("Text");
  } 
  while (display.nextPage());

}
void Kreise() 
{
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);

  display.firstPage();
  do 
  {
    int Radius = 5;
    int StartX = Radius;
    int StartY = 5;

    while (StartX < display.width() - Radius) 
    {
      for (int i = StartY; i < display.height() - Radius; i += 15) 
      {
        display.fillCircle(StartX, i, Radius, GxEPD_RED);
        delay(1);
      }
      StartX += 15;
    }
  } 
  while (display.nextPage());
}

void LinienHorizontal() 
{
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);
  do 
  {
    for (int i = 0; i < display.height() - 1; i += 10) 
    {
      display.drawFastHLine(0, i, display.width(), GxEPD_BLACK);
      delay(1);
    }
  } 
  while (display.nextPage());
}

void LinienVertikal() 
{
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);
  do 
  {
    for (int i = 0; i < display.width() - 1; i += 10) 
    {
      display.drawFastVLine(i, 0, display.height(), GxEPD_BLACK);
      delay(1);
    }

  } 
  while (display.nextPage());
}

void Rechtecke() 
{
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);
  do 
  {
    for (int i = 0; i < display.height() / 2; i += 10) 
    {
      display.drawRoundRect(i, i, display.width() - 2 * i, display.height() - 2 * i, 5, GxEPD_BLACK);
      delay(10);
    }
  } 
  while (display.nextPage());
}

void loop()
{
  // bleibt leer, Programm läuft nur einmal
}

Bit­maps darstellen

Array des Bit­maps erstellen

Bit­maps kön­nen nicht direkt auf dem Dis­play dar­ge­stellt wer­den, sie müs­sen als Array hexa­de­zi­ma­ler Wer­te vor­lie­gen.
Wäh­le oder erstel­le ein Bild mit den maxi­ma­len Maßen 200×200 Pixeln. Das Online-Tool 🔗https://​javl​.git​hub​.io/​i​m​a​g​e​2​c​pp/ wan­delt das Bild in ein Array um.

Das Pro­gramm

Das erstell­te Array muss in den Kopf des Pro­gramms ein­ge­fügt wer­den.
draw­Bit­map zeigt das Bild an.
Du musst ab Zei­le 8 den ent­spre­chen­den Mikro­con­trol­ler auswählen.

#include "GxEPD2_3C.h"

// Display-Parameter
// GxEPD2_154_Z90c: Chip SSD1681 Bildschirm: 200x200 3C: 3 Farben
#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c

// Board wählen:
// ESP32-Wroom
// Anschlüsse: CLK -> 18, DIN -> 23, CS -> 5, DC -> 2, RST -> 22, BUSY -> 4
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 2, /*RST=*/ 22, /*BUSY=*/ 4));

// NodeMCU
// CLK - D5, DIN -> D7, CS -> D8, DC -> D6, RST -> D2, BUSY -> D1
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/D4, /*DC=*/ D6, /*RST=*/ D2, /*BUSY=*/ D1));

// ESP32-C6
// Anschlüsse: CLK -> 21, DIN -> 19, CS -> 18, DC -> 3, RST -> 10, BUSY -> 11
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 18, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 11));

// Nano ESP32
// Anschlüsse: CLK -> D13, DIN -> D11, CS -> D10, DC-> D6, RST -> D8, BUSY -> D9
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D6, /*RST=*/ D7, /*BUSY=*/ D9));

const unsigned char Thermometer[] PROGMEM = {
  // '231080, 49x100px
  0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01,
  0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff,
  0xe0, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x01, 0xf8, 0x00,
  0x00, 0x00, 0x1f, 0x80, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
  0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00,
  0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c,
  0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00,
  0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff,
  0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
  0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00,
  0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07,
  0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00,
  0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c,
  0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00,
  0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f,
  0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00,
  0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00,
  0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x07, 0xe0, 0x7c, 0x00, 0x00, 0x00,
  0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f,
  0xf0, 0x7c, 0x00, 0x00, 0x03, 0xff, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x0f, 0xf0, 0x7c,
  0x00, 0x00, 0x07, 0xff, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x0f, 0xf0, 0x7c, 0x00, 0x00,
  0x00, 0x3f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f,
  0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0,
  0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00,
  0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x3f, 0x0f, 0xf0, 0x7e, 0x00, 0x00, 0x00,
  0x7f, 0x0f, 0xf0, 0x7f, 0x00, 0x00, 0x01, 0xff, 0x0f, 0xf0, 0x7f, 0xc0, 0x00, 0x03, 0xfe, 0x0f,
  0xf0, 0x3f, 0xe0, 0x00, 0x03, 0xf8, 0x0f, 0xf0, 0x1f, 0xe0, 0x00, 0x07, 0xf0, 0x0f, 0xf0, 0x07,
  0xf0, 0x00, 0x0f, 0xe0, 0x0f, 0xf0, 0x03, 0xf8, 0x00, 0x0f, 0xc0, 0x1f, 0xfc, 0x01, 0xf8, 0x00,
  0x1f, 0x80, 0x7f, 0xfe, 0x01, 0xfc, 0x00, 0x3f, 0x00, 0xff, 0xff, 0x80, 0xfe, 0x00, 0x3f, 0x01,
  0xff, 0xff, 0xc0, 0x7e, 0x00, 0x3e, 0x03, 0xff, 0xff, 0xe0, 0x7e, 0x00, 0x7e, 0x07, 0xff, 0xff,
  0xe0, 0x3f, 0x00, 0x7c, 0x0f, 0xff, 0xff, 0xf0, 0x3f, 0x00, 0x7c, 0x0f, 0xff, 0xff, 0xf0, 0x3f,
  0x00, 0x7c, 0x0f, 0xff, 0xff, 0xf8, 0x1f, 0x00, 0xfc, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xfc,
  0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xf8, 0x1f, 0xff,
  0xff, 0xf8, 0x1f, 0x80, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xfc, 0x1f, 0xff, 0xff, 0xf8,
  0x1f, 0x80, 0xfc, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xfc, 0x0f, 0xff, 0xff, 0xf8, 0x1f, 0x80,
  0x7c, 0x0f, 0xff, 0xff, 0xf0, 0x3f, 0x00, 0x7c, 0x0f, 0xff, 0xff, 0xf0, 0x3f, 0x00, 0x7e, 0x07,
  0xff, 0xff, 0xe0, 0x3f, 0x00, 0x7e, 0x03, 0xff, 0xff, 0xe0, 0x7f, 0x00, 0x3f, 0x01, 0xff, 0xff,
  0xc0, 0x7e, 0x00, 0x3f, 0x00, 0xff, 0xff, 0x80, 0xfe, 0x00, 0x1f, 0x80, 0x7f, 0xfe, 0x01, 0xfc,
  0x00, 0x1f, 0xc0, 0x1f, 0xf8, 0x01, 0xfc, 0x00, 0x0f, 0xe0, 0x01, 0x80, 0x03, 0xf8, 0x00, 0x0f,
  0xf0, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x03, 0xfe, 0x00,
  0x00, 0x3f, 0xe0, 0x00, 0x01, 0xff, 0x80, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xf0, 0x07, 0xff,
  0x80, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfe, 0x00, 0x00,
  0x00, 0x0f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00,
  0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00
};

const unsigned char Uhr [] PROGMEM = {
	// 'Uhr, 80x80px
	0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 
	0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 
	0xe0, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 
	0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x03, 0xff, 0x80, 0x00, 0x00, 
	0x01, 0xff, 0xc0, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x0f, 
	0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x03, 0xc0, 0x00, 0x0f, 
	0xf8, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x03, 0xc0, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x7f, 0xc0, 0x00, 
	0x01, 0x80, 0x00, 0x03, 0xfe, 0x00, 0x00, 0xff, 0x80, 0x70, 0x00, 0x00, 0x0e, 0x01, 0xff, 0x00, 
	0x00, 0xff, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x70, 0x00, 0x00, 
	0x0e, 0x00, 0x7f, 0x80, 0x03, 0xfc, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x3f, 0xc0, 0x03, 0xf8, 
	0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x1f, 0xc0, 0x07, 0xf0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 
	0x0f, 0xe0, 0x07, 0xf0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x0f, 0xe0, 0x00, 0x00, 
	0x01, 0x80, 0x00, 0x00, 0x07, 0xf0, 0x0f, 0xc0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0xf0, 
	0x1f, 0xc0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0xf8, 0x1f, 0x80, 0xe0, 0x00, 0x01, 0x80, 
	0x00, 0x03, 0x81, 0xf8, 0x3f, 0x80, 0xe0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x81, 0xfc, 0x3f, 0x80, 
	0xe0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x81, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 
	0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0xfe, 0x7e, 0x00, 0x00, 0x00, 
	0x01, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x7e, 
	0x7e, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x01, 0x80, 
	0x00, 0x00, 0x00, 0x7e, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x00, 
	0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 
	0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x0c, 0x00, 0x00, 
	0x01, 0x80, 0x00, 0x00, 0x30, 0x3f, 0xfc, 0x1c, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x78, 0x3f, 
	0xfc, 0x1c, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x3f, 0xfc, 0x0c, 0x00, 0x00, 0x1f, 0x80, 
	0x00, 0x00, 0x30, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 
	0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 
	0x00, 0x3f, 0xfe, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7e, 0x00, 0x00, 0x3f, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 
	0x7e, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x07, 0xe0, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x7e, 0x7f, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 
	0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 
	0x80, 0xfc, 0x3f, 0x81, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0xfc, 0x1f, 0x80, 0xc0, 0x00, 
	0x00, 0x00, 0x00, 0x03, 0x81, 0xf8, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 
	0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x07, 0xf0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x1f, 0xc0, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x01, 0xfe, 0x00, 0x70, 
	0x00, 0x00, 0x0e, 0x00, 0x7f, 0x80, 0x00, 0xff, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0xff, 0x00, 
	0x00, 0xff, 0x80, 0x70, 0x00, 0x00, 0x0e, 0x01, 0xff, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x01, 0x80, 
	0x00, 0x03, 0xfe, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x03, 0xc0, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x1f, 
	0xf0, 0x00, 0x03, 0xc0, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 
	0xf0, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x03, 0xff, 0x80, 
	0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 
	0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x07, 
	0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 
	0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
	0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00
};

const unsigned char Arduino [] PROGMEM = {
	// 'Arduino, 100x72px
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xf8, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 
	0x00, 0x00, 0x0f, 0xff, 0xf8, 0x7c, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x0f, 
	0xff, 0xf8, 0xfd, 0x24, 0x01, 0x25, 0xc0, 0x24, 0x90, 0x0c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xfd, 
	0x20, 0x00, 0x25, 0xc0, 0x04, 0x80, 0x0c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x01, 
	0xe0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xfc, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 
	0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x0e, 0xff, 0xe0, 
	0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x0c, 0x7f, 0xf1, 0x87, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0x1f, 0xc7, 0xff, 0xff, 0xfc, 0x00, 
	0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x07, 0x01, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 
	0xfd, 0x5f, 0xc3, 0xfc, 0xf2, 0x39, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x07, 0xc3, 
	0xfd, 0xf8, 0xfc, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf9, 0x9c, 0xc4, 
	0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xe0, 0x03, 0xc1, 0xf9, 0xf8, 0xec, 0xff, 0xff, 0xff, 
	0x00, 0x1f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfc, 0xf0, 0x7c, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 
	0xff, 0xe0, 0x03, 0xc3, 0xfc, 0x43, 0x11, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xf0, 0x03, 
	0xc3, 0xfe, 0x0f, 0x83, 0xf0, 0xc3, 0xfb, 0x80, 0x1f, 0xff, 0xff, 0xe0, 0x03, 0xff, 0xff, 0xff, 
	0xff, 0xf0, 0xc3, 0xf9, 0x80, 0x1f, 0xff, 0xff, 0xf0, 0x03, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xf9, 0x80, 0x1f, 0xff, 0xff, 0xf0, 0x07, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 
	0xff, 0xff, 0xfd, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x08, 0x3f, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0c, 0x7f, 0xf0, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0x81, 0x80, 0x00, 0x0f, 0xff, 0xe0, 0x39, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x85, 0x80, 
	0x00, 0x0f, 0xff, 0xc0, 0x39, 0xff, 0xf8, 0x3d, 0xb6, 0xe4, 0x27, 0x83, 0x80, 0x00, 0x0f, 0xff, 
	0xe0, 0x79, 0xc3, 0xfc, 0x3f, 0xff, 0xe0, 0x07, 0x81, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc3, 
	0xff, 0xff, 0xff, 0xfb, 0xcf, 0xa5, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xff, 
	0xfb, 0xcf, 0x81, 0x80, 0x00, 0x0f, 0xff, 0xf3, 0x1f, 0xc1, 0xf8, 0x00, 0x7f, 0xfb, 0xcf, 0x81, 
	0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xf1, 0x8f, 0xa5, 0x80, 0x00, 0x0f, 
	0xff, 0xff, 0xff, 0xc3, 0xf8, 0x00, 0x7f, 0xe4, 0x27, 0x81, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 
	0xc3, 0xf8, 0x00, 0xe0, 0xec, 0x37, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xfc, 0x03, 0xff, 0xff, 0xff, 
	0xf0, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0x80, 0x00, 0x0f, 0xff, 0xf8, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 
	0x0f, 0x00, 0xfc, 0x03, 0xff, 0x5a, 0xad, 0x5a, 0xad, 0x5a, 0xff, 0x80, 0x00, 0x0e, 0x00, 0x18, 
	0x01, 0xff, 0x52, 0xa1, 0x42, 0xa1, 0x42, 0xff, 0x80, 0x00, 0x0c, 0x00, 0x1c, 0x03, 0xfe, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x0c, 0x00, 0x78, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x7f, 0x80, 0x00, 0x0c, 0x00, 0x1c, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 
	0x00, 0x0c, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x0c, 0x00, 
	0x7f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x0c, 0x00, 0x1f, 0xff, 0xfe, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x0f, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x7f, 0x80, 0x00, 0x0f, 0xff, 0xf8, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 
	0x80, 0x00, 0x0f, 0xff, 0xf8, 0x07, 0xff, 0x52, 0xa5, 0x52, 0xa5, 0x42, 0xff, 0x80, 0x00, 0xff, 
	0xff, 0xb8, 0x07, 0xff, 0x5e, 0xbf, 0x7e, 0xbd, 0x7e, 0xff, 0x80, 0x00, 0xff, 0xff, 0xfc, 0x07, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0x8f, 0x07, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0x80, 0x00, 0xff, 0xff, 0x8e, 0x03, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x80, 0x00, 
	0xff, 0xff, 0x8c, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x00, 0xff, 0xff, 0x8c, 
	0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x00, 0xff, 0xff, 0xfc, 0x01, 0x00, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xfd, 0x80, 0x00, 0xff, 0xff, 0xfc, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xfe, 0x03, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 
	0x00, 0xff, 0xff, 0xff, 0x07, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xf0, 
	0x7f, 0xff, 0xff, 0xe0, 0x00, 0x07, 0x80, 0x00, 0x0e, 0x00, 0x00, 0x0f, 0xf0, 0xff, 0xff, 0xff, 
	0xe9, 0x24, 0x97, 0xa4, 0x92, 0x2c, 0x00, 0x00, 0x0f, 0xfd, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x07, 
	0x80, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

const unsigned char Laptop [] PROGMEM = {
	// 'Laptop, 85x85px
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 
	0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 
	0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 
	0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 
	0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
	0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 
	0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 
	0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 
	0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 
	0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
	0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 
	0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x37, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb8, 
	0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x60, 0x00, 0x00, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x60, 0x00, 0x01, 0x8c, 0xf9, 
	0xe7, 0x8f, 0x3c, 0xf9, 0xe3, 0xce, 0xc0, 0x00, 0x01, 0x98, 0xf1, 0xc3, 0x0e, 0x38, 0x71, 0xe3, 
	0x8c, 0xc0, 0x00, 0x03, 0x18, 0xe3, 0xc7, 0x1e, 0x38, 0xe1, 0xc3, 0x0d, 0x80, 0x00, 0x03, 0x3f, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x80, 0x00, 0x06, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xfb, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0c, 
	0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x06, 0x00, 0x00, 0x0c, 0x1f, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0x06, 0x00, 0x00, 0x18, 0x18, 0xe1, 0xc7, 0x1c, 0x38, 0xe1, 0xc6, 0x0c, 0x00, 0x00, 
	0x18, 0x10, 0xe3, 0x86, 0x1c, 0x78, 0xe3, 0x86, 0x0c, 0x00, 0x00, 0x30, 0x31, 0xe3, 0x8f, 0x3c, 
	0x79, 0xe3, 0x8c, 0x18, 0x00, 0x00, 0x30, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x18, 0x00, 
	0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x60, 
	0x00, 0x00, 0xc6, 0x36, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xc6, 0x60, 0x00, 0x00, 0xcc, 0x36, 0x00, 
	0x00, 0x00, 0x01, 0xe3, 0x8c, 0xc0, 0x00, 0x01, 0x8c, 0x6c, 0x00, 0x00, 0x00, 0x01, 0xc3, 0x8c, 
	0xc0, 0x00, 0x01, 0x8f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x80, 0x00, 0x03, 0x0f, 0xcf, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80, 0x00, 
	0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 
	0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 
	0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 
	0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x04, 
	0x00, 0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x00, 
	0x30, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x1f, 0xff, 
	0xf8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00
};

void setup() 
{
  // Bildschirm starten
  display.init(115200, true, 2, false);
  display.setRotation(2);

  // vollständigen Bildschirm nutzen
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);
  display.firstPage();
  do 
  {
    // x, y, Bild-Array, Breite, Höhe, Farbe
    display.drawBitmap(20, 1, Thermometer, 49, 100, GxEPD_BLACK);
    display.drawBitmap(90, 1, Uhr, 80, 80, GxEPD_BLACK);
    display.drawBitmap(5, 120, Arduino, 100, 72, GxEPD_BLACK);  
    display.drawBitmap(110, 110, Laptop, 85, 85, GxEPD_BLACK);  

  } while (display.nextPage());
}


void loop()
{
  // bleibt leer, Programm läuft nur einmal
}

Teil­be­rei­che des Bild­schirms verwenden

Das Pro­gramm zeigt im set­up-Teil zunächst auf der lin­ken Sei­te einen Text an. Im loop-Teil wird mit set­Par­ti­al­Win­dow ein Bild­schirm­be­reich defi­niert. Dort wer­den die Bit­maps ange­zeigt, der lin­ke Teil des Bild­schirms bleibt unverändert.

Du musst ab Zei­le 9 den ent­spre­chen­den Mikro­con­trol­ler auswählen.

#include "GxEPD2_3C.h"
#include "U8g2_for_Adafruit_GFX.h"

// Display-Parameter
// GxEPD2_154_Z90c: Chip SSD1681 Bildschirm: 200x200
#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c

// ESP32-Wroom
// Anschlüsse: CLK -> 18, DIN -> 23, CS -> 5, DC-> 2, RST -> 22, BUSY -> 4
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/5, /*DC=*/2, /*RST=*/22, /*BUSY=*/4));

// NodeMCU
// CLK - D5, DIN -> D7, CS -> D8, DC -> D6, RST -> D2, BUSY -> D1
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/D4, /*DC=*/D6, /*RST=*/D2, /*BUSY=*/D1));

// ESP32-C6
// Anschlüsse: CLK -> 21, DIN -> 19, CS -> 18, DC-> 3, RST -> 10, BUSY -> 11
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 18, /*DC=*/ 3, /*RST=*/2, /*BUSY=*/11));

// Nano ESP32
// Anschlüsse: CLK -> D13, DIN -> D11, CS -> D10, DC-> D6, RST -> D8, BUSY -> D9
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D6, /*RST=*/ D7, /*BUSY=*/ D9));  

// Objekt u8g2Schriften
U8G2_FOR_ADAFRUIT_GFX u8g2Schriften;

const unsigned char Thermometer[] PROGMEM = {
  // '231080, 49x100px
  0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01,
  0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff,
  0xe0, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x01, 0xf8, 0x00,
  0x00, 0x00, 0x1f, 0x80, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
  0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00,
  0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c,
  0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00,
  0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff,
  0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
  0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00,
  0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07,
  0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00,
  0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c,
  0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00,
  0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f,
  0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00,
  0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x7c, 0x00,
  0x00, 0x00, 0x1f, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x07, 0xe0, 0x7c, 0x00, 0x00, 0x00,
  0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f,
  0xf0, 0x7c, 0x00, 0x00, 0x03, 0xff, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x0f, 0xf0, 0x7c,
  0x00, 0x00, 0x07, 0xff, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x07, 0xff, 0x0f, 0xf0, 0x7c, 0x00, 0x00,
  0x00, 0x3f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f,
  0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0,
  0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00,
  0x00, 0x00, 0x1f, 0x0f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x3f, 0x0f, 0xf0, 0x7e, 0x00, 0x00, 0x00,
  0x7f, 0x0f, 0xf0, 0x7f, 0x00, 0x00, 0x01, 0xff, 0x0f, 0xf0, 0x7f, 0xc0, 0x00, 0x03, 0xfe, 0x0f,
  0xf0, 0x3f, 0xe0, 0x00, 0x03, 0xf8, 0x0f, 0xf0, 0x1f, 0xe0, 0x00, 0x07, 0xf0, 0x0f, 0xf0, 0x07,
  0xf0, 0x00, 0x0f, 0xe0, 0x0f, 0xf0, 0x03, 0xf8, 0x00, 0x0f, 0xc0, 0x1f, 0xfc, 0x01, 0xf8, 0x00,
  0x1f, 0x80, 0x7f, 0xfe, 0x01, 0xfc, 0x00, 0x3f, 0x00, 0xff, 0xff, 0x80, 0xfe, 0x00, 0x3f, 0x01,
  0xff, 0xff, 0xc0, 0x7e, 0x00, 0x3e, 0x03, 0xff, 0xff, 0xe0, 0x7e, 0x00, 0x7e, 0x07, 0xff, 0xff,
  0xe0, 0x3f, 0x00, 0x7c, 0x0f, 0xff, 0xff, 0xf0, 0x3f, 0x00, 0x7c, 0x0f, 0xff, 0xff, 0xf0, 0x3f,
  0x00, 0x7c, 0x0f, 0xff, 0xff, 0xf8, 0x1f, 0x00, 0xfc, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xfc,
  0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xf8, 0x1f, 0xff,
  0xff, 0xf8, 0x1f, 0x80, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xfc, 0x1f, 0xff, 0xff, 0xf8,
  0x1f, 0x80, 0xfc, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x80, 0xfc, 0x0f, 0xff, 0xff, 0xf8, 0x1f, 0x80,
  0x7c, 0x0f, 0xff, 0xff, 0xf0, 0x3f, 0x00, 0x7c, 0x0f, 0xff, 0xff, 0xf0, 0x3f, 0x00, 0x7e, 0x07,
  0xff, 0xff, 0xe0, 0x3f, 0x00, 0x7e, 0x03, 0xff, 0xff, 0xe0, 0x7f, 0x00, 0x3f, 0x01, 0xff, 0xff,
  0xc0, 0x7e, 0x00, 0x3f, 0x00, 0xff, 0xff, 0x80, 0xfe, 0x00, 0x1f, 0x80, 0x7f, 0xfe, 0x01, 0xfc,
  0x00, 0x1f, 0xc0, 0x1f, 0xf8, 0x01, 0xfc, 0x00, 0x0f, 0xe0, 0x01, 0x80, 0x03, 0xf8, 0x00, 0x0f,
  0xf0, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x03, 0xfe, 0x00,
  0x00, 0x3f, 0xe0, 0x00, 0x01, 0xff, 0x80, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xf0, 0x07, 0xff,
  0x80, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfe, 0x00, 0x00,
  0x00, 0x0f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00,
  0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00
};

const unsigned char Uhr [] PROGMEM = {
	// 'Uhr, 80x80px
	0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 
	0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 
	0xe0, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 
	0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x03, 0xff, 0x80, 0x00, 0x00, 
	0x01, 0xff, 0xc0, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x0f, 
	0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x03, 0xc0, 0x00, 0x0f, 
	0xf8, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x03, 0xc0, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x7f, 0xc0, 0x00, 
	0x01, 0x80, 0x00, 0x03, 0xfe, 0x00, 0x00, 0xff, 0x80, 0x70, 0x00, 0x00, 0x0e, 0x01, 0xff, 0x00, 
	0x00, 0xff, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x70, 0x00, 0x00, 
	0x0e, 0x00, 0x7f, 0x80, 0x03, 0xfc, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x3f, 0xc0, 0x03, 0xf8, 
	0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x1f, 0xc0, 0x07, 0xf0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 
	0x0f, 0xe0, 0x07, 0xf0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x0f, 0xe0, 0x00, 0x00, 
	0x01, 0x80, 0x00, 0x00, 0x07, 0xf0, 0x0f, 0xc0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0xf0, 
	0x1f, 0xc0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0xf8, 0x1f, 0x80, 0xe0, 0x00, 0x01, 0x80, 
	0x00, 0x03, 0x81, 0xf8, 0x3f, 0x80, 0xe0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x81, 0xfc, 0x3f, 0x80, 
	0xe0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x81, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 
	0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0xfe, 0x7e, 0x00, 0x00, 0x00, 
	0x01, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x7e, 
	0x7e, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x01, 0x80, 
	0x00, 0x00, 0x00, 0x7e, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x00, 
	0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 
	0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x0c, 0x00, 0x00, 
	0x01, 0x80, 0x00, 0x00, 0x30, 0x3f, 0xfc, 0x1c, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x78, 0x3f, 
	0xfc, 0x1c, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x3f, 0xfc, 0x0c, 0x00, 0x00, 0x1f, 0x80, 
	0x00, 0x00, 0x30, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 
	0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 
	0x00, 0x3f, 0xfe, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7e, 0x00, 0x00, 0x3f, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 
	0x7e, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x07, 0xe0, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x7e, 0x7f, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 
	0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 
	0x80, 0xfc, 0x3f, 0x81, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0xfc, 0x1f, 0x80, 0xc0, 0x00, 
	0x00, 0x00, 0x00, 0x03, 0x81, 0xf8, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 
	0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x07, 0xf0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x1f, 0xc0, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x01, 0xfe, 0x00, 0x70, 
	0x00, 0x00, 0x0e, 0x00, 0x7f, 0x80, 0x00, 0xff, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0xff, 0x00, 
	0x00, 0xff, 0x80, 0x70, 0x00, 0x00, 0x0e, 0x01, 0xff, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x01, 0x80, 
	0x00, 0x03, 0xfe, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x03, 0xc0, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x1f, 
	0xf0, 0x00, 0x03, 0xc0, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 
	0xf0, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x03, 0xff, 0x80, 
	0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 
	0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x07, 
	0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 
	0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
	0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00
};

const unsigned char Arduino [] PROGMEM = {
	// 'Arduino, 100x72px
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xf8, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 
	0x00, 0x00, 0x0f, 0xff, 0xf8, 0x7c, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x0f, 
	0xff, 0xf8, 0xfd, 0x24, 0x01, 0x25, 0xc0, 0x24, 0x90, 0x0c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xfd, 
	0x20, 0x00, 0x25, 0xc0, 0x04, 0x80, 0x0c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x01, 
	0xe0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xfc, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 
	0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x0e, 0xff, 0xe0, 
	0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x0c, 0x7f, 0xf1, 0x87, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0x1f, 0xc7, 0xff, 0xff, 0xfc, 0x00, 
	0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x07, 0x01, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 
	0xfd, 0x5f, 0xc3, 0xfc, 0xf2, 0x39, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x07, 0xc3, 
	0xfd, 0xf8, 0xfc, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf9, 0x9c, 0xc4, 
	0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xe0, 0x03, 0xc1, 0xf9, 0xf8, 0xec, 0xff, 0xff, 0xff, 
	0x00, 0x1f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfc, 0xf0, 0x7c, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 
	0xff, 0xe0, 0x03, 0xc3, 0xfc, 0x43, 0x11, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xf0, 0x03, 
	0xc3, 0xfe, 0x0f, 0x83, 0xf0, 0xc3, 0xfb, 0x80, 0x1f, 0xff, 0xff, 0xe0, 0x03, 0xff, 0xff, 0xff, 
	0xff, 0xf0, 0xc3, 0xf9, 0x80, 0x1f, 0xff, 0xff, 0xf0, 0x03, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xf9, 0x80, 0x1f, 0xff, 0xff, 0xf0, 0x07, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 
	0xff, 0xff, 0xfd, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x08, 0x3f, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0c, 0x7f, 0xf0, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0x81, 0x80, 0x00, 0x0f, 0xff, 0xe0, 0x39, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x85, 0x80, 
	0x00, 0x0f, 0xff, 0xc0, 0x39, 0xff, 0xf8, 0x3d, 0xb6, 0xe4, 0x27, 0x83, 0x80, 0x00, 0x0f, 0xff, 
	0xe0, 0x79, 0xc3, 0xfc, 0x3f, 0xff, 0xe0, 0x07, 0x81, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc3, 
	0xff, 0xff, 0xff, 0xfb, 0xcf, 0xa5, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xff, 
	0xfb, 0xcf, 0x81, 0x80, 0x00, 0x0f, 0xff, 0xf3, 0x1f, 0xc1, 0xf8, 0x00, 0x7f, 0xfb, 0xcf, 0x81, 
	0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xf1, 0x8f, 0xa5, 0x80, 0x00, 0x0f, 
	0xff, 0xff, 0xff, 0xc3, 0xf8, 0x00, 0x7f, 0xe4, 0x27, 0x81, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 
	0xc3, 0xf8, 0x00, 0xe0, 0xec, 0x37, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xfc, 0x03, 0xff, 0xff, 0xff, 
	0xf0, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0x80, 0x00, 0x0f, 0xff, 0xf8, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 
	0x0f, 0x00, 0xfc, 0x03, 0xff, 0x5a, 0xad, 0x5a, 0xad, 0x5a, 0xff, 0x80, 0x00, 0x0e, 0x00, 0x18, 
	0x01, 0xff, 0x52, 0xa1, 0x42, 0xa1, 0x42, 0xff, 0x80, 0x00, 0x0c, 0x00, 0x1c, 0x03, 0xfe, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x0c, 0x00, 0x78, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x7f, 0x80, 0x00, 0x0c, 0x00, 0x1c, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 
	0x00, 0x0c, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x0c, 0x00, 
	0x7f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x0c, 0x00, 0x1f, 0xff, 0xfe, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x0f, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x7f, 0x80, 0x00, 0x0f, 0xff, 0xf8, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 
	0x80, 0x00, 0x0f, 0xff, 0xf8, 0x07, 0xff, 0x52, 0xa5, 0x52, 0xa5, 0x42, 0xff, 0x80, 0x00, 0xff, 
	0xff, 0xb8, 0x07, 0xff, 0x5e, 0xbf, 0x7e, 0xbd, 0x7e, 0xff, 0x80, 0x00, 0xff, 0xff, 0xfc, 0x07, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0x8f, 0x07, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0x80, 0x00, 0xff, 0xff, 0x8e, 0x03, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x80, 0x00, 
	0xff, 0xff, 0x8c, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x00, 0xff, 0xff, 0x8c, 
	0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x00, 0xff, 0xff, 0xfc, 0x01, 0x00, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xfd, 0x80, 0x00, 0xff, 0xff, 0xfc, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xfe, 0x03, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 
	0x00, 0xff, 0xff, 0xff, 0x07, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xf0, 
	0x7f, 0xff, 0xff, 0xe0, 0x00, 0x07, 0x80, 0x00, 0x0e, 0x00, 0x00, 0x0f, 0xf0, 0xff, 0xff, 0xff, 
	0xe9, 0x24, 0x97, 0xa4, 0x92, 0x2c, 0x00, 0x00, 0x0f, 0xfd, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x07, 
	0x80, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

const unsigned char Laptop [] PROGMEM = {
	// 'Laptop, 85x85px
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 
	0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 
	0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 
	0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 
	0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
	0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 
	0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 
	0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 
	0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 
	0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
	0xf8, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0x80, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 
	0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x37, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb8, 
	0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x60, 0x00, 0x00, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x60, 0x00, 0x01, 0x8c, 0xf9, 
	0xe7, 0x8f, 0x3c, 0xf9, 0xe3, 0xce, 0xc0, 0x00, 0x01, 0x98, 0xf1, 0xc3, 0x0e, 0x38, 0x71, 0xe3, 
	0x8c, 0xc0, 0x00, 0x03, 0x18, 0xe3, 0xc7, 0x1e, 0x38, 0xe1, 0xc3, 0x0d, 0x80, 0x00, 0x03, 0x3f, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x80, 0x00, 0x06, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xfb, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0c, 
	0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x06, 0x00, 0x00, 0x0c, 0x1f, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0x06, 0x00, 0x00, 0x18, 0x18, 0xe1, 0xc7, 0x1c, 0x38, 0xe1, 0xc6, 0x0c, 0x00, 0x00, 
	0x18, 0x10, 0xe3, 0x86, 0x1c, 0x78, 0xe3, 0x86, 0x0c, 0x00, 0x00, 0x30, 0x31, 0xe3, 0x8f, 0x3c, 
	0x79, 0xe3, 0x8c, 0x18, 0x00, 0x00, 0x30, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x18, 0x00, 
	0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x60, 
	0x00, 0x00, 0xc6, 0x36, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xc6, 0x60, 0x00, 0x00, 0xcc, 0x36, 0x00, 
	0x00, 0x00, 0x01, 0xe3, 0x8c, 0xc0, 0x00, 0x01, 0x8c, 0x6c, 0x00, 0x00, 0x00, 0x01, 0xc3, 0x8c, 
	0xc0, 0x00, 0x01, 0x8f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x80, 0x00, 0x03, 0x0f, 0xcf, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80, 0x00, 
	0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 
	0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 
	0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 
	0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x04, 
	0x00, 0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x00, 
	0x30, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x1f, 0xff, 
	0xf8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00
};

void setup()
{
  // Bildschirm starten
  display.init(115200, true, 2, false);
  display.setRotation(1);

  // Schriften von u8g2 display zuordnen
  u8g2Schriften.begin(display); 

  display.firstPage();
  
  do
  {
    display.fillScreen(GxEPD_WHITE);

    u8g2Schriften.setFont(u8g2_font_fub20_tr);  
    u8g2Schriften.setForegroundColor(GxEPD_BLACK);
    u8g2Schriften.setBackgroundColor(GxEPD_WHITE);
    u8g2Schriften.setCursor(10, 100);           
    u8g2Schriften.print("Bild "); 
  }
  while (display.nextPage());
}

void loop() 
{
  display.setPartialWindow(90, 50, 200, 150);
  display.firstPage();

  do
  {
    display.fillScreen(GxEPD_WHITE);
    display.drawBitmap(100, 50, Thermometer, 49, 100, GxEPD_BLACK);
  }
  while(display.nextPage());

  delay(5000);

  do
  {
    display.fillScreen(GxEPD_WHITE);
    display.drawBitmap(100, 50, Uhr, 80, 80, GxEPD_BLACK);
  }
  while(display.nextPage());

  delay(5000);
  do
  {
    display.fillScreen(GxEPD_WHITE);
    display.drawBitmap(100, 50, Arduino, 100, 72, GxEPD_BLACK);  
  }
  while(display.nextPage());

  delay(5000);
  do
  {
    display.fillScreen(GxEPD_WHITE);
    display.drawBitmap(100, 50, Laptop, 85, 85, GxEPD_BLACK); 
  }
  while(display.nextPage());
  delay(5000);
}

Anzei­ge der Mess­da­ten als Text

Du musst in Zei­le 9 den Pin des DHT-Sen­sors, in Zei­le 13 den Typ des DHT-Sen­sors anpas­sen und ab Zei­le 26 den pas­sen­den Mikro­con­trol­ler auswählen.

#include "GxEPD2_3C.h"
#include "DHT.h"
#include "U8g2_for_Adafruit_GFX.h"

// Objekt u8g2Schriften
U8G2_FOR_ADAFRUIT_GFX u8g2Schriften;

// freien Pin auf dem Board wählen
int SENSOR_DHT = 9;

// Sensortyp festlegen
// DHT22
#define SensorTyp DHT22

// DHT11
// #define SensorTyp DHT11

// Sensor einen Namen zuweisen
DHT dht(SENSOR_DHT, SensorTyp);

// Display-Parameter
// GxEPD2_154_Z90c: Chip SSD1681 Bildschirm: 200x200
#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c  

// Board wählen:
// ESP32-Wroom
// Anschlüsse: CLK -> 18, DIN -> 23, CS -> 5, DC -> 2, RST -> 22, BUSY -> 4
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 2, /*RST=*/ 22, /*BUSY=*/ 4));

// NodeMCU
// CLK - D5, DIN -> D7, CS -> D8, DC -> D6, RST -> D2, BUSY -> D1
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/D4, /*DC=*/ D6, /*RST=*/ D2, /*BUSY=*/ D1));

// ESP32-C6
// Anschlüsse: CLK -> 21, DIN -> 19, CS -> 18, DC -> 3, RST -> 10, BUSY -> 11
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 18, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 11));

// Nano ESP32
// Anschlüsse: CLK -> D13, DIN -> D11, CS -> D10, DC-> D6, RST -> D8, BUSY -> D9
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D6, /*RST=*/ D7, /*BUSY=*/ D9));

void setup() 
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial);
  delay(1000);

  // Sensor starten
  dht.begin();

  // Bildschirm starten
  display.init(115200, true, 2, false); 

  // Bildschirm um 90° drehen
  display.setRotation(1);

  // vollständigen Bildschirm nutzen
  display.setFullWindow();

  // weißer Hintergrund
  display.fillScreen(GxEPD_WHITE);

  // Schriften von u8g2 display zuordnen
  u8g2Schriften.begin(display); 
}

void loop() 
{
  // Temperatur lesen
  String Temperatur = String(dht.readTemperature());

  // replace -> . durch , ersetzen
  Temperatur.replace(".", ",");

  // Luftfeuchtigkeit lesen
  String Luftfeuchtigkeit = String(dht.readHumidity());

  // replace -> . durch , ersetzen
  Luftfeuchtigkeit.replace(".", ",");

  // Anzeige aufbauen
  display.firstPage();
  do 
  {
    display.fillScreen(GxEPD_WHITE);

    u8g2Schriften.setForegroundColor(GxEPD_BLACK);   
    u8g2Schriften.setBackgroundColor(GxEPD_WHITE);
    u8g2Schriften.setFont(u8g2_font_fub35_tf);  

    u8g2Schriften.setCursor(1, 80);
    u8g2Schriften.print(Temperatur + " °C");
    u8g2Schriften.setCursor(1, 180);
    u8g2Schriften.print(Luftfeuchtigkeit + " %");
  } 
  while (display.nextPage());

  // alle 5 Minuten aktualisieren
  delay(300000);
}

Anzei­ge der Mess­da­ten als Text und der mit WiFi ermit­tel­ten Zeit der letz­ten Messung

Du musst die ent­spre­chen­de WiFi-Biblio­thek aus­wäh­len, in Zei­le 16 den Pin des DHT-Sen­­sors, in Zei­le 20 den Typ des DHT-Sen­­sors anpas­sen und ab Zei­le 70 den pas­sen­den Mikro­con­trol­ler aus­wäh­len.
Die Zeit der letz­ten Mes­sung wird erst nach dem ers­ten Durch­lauf (im Bei­spiel nach fünf Minu­ten) angezeigt.

// ESP32
// #include "WiFi.h"

// ESP8266
// #include "ESP8266WiFi.h"

#include "time.h"
#include "GxEPD2_3C.h"
#include "U8g2_for_Adafruit_GFX.h"
#include "DHT.h"

// Objekt u8g2Schriften
U8G2_FOR_ADAFRUIT_GFX u8g2Schriften;

// freien Pin auf dem Board wählen
int SENSOR_DHT = 9;

// Sensortyp festlegen
// DHT22
#define SensorTyp DHT22

// DHT11
// #define SensorTyp DHT11

// Sensor einen Namen zuweisen
DHT dht(SENSOR_DHT, SensorTyp);

// Schriftart
#include "Fonts/FreeMonoBold24pt7b.h"

char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";

// NTP-Server aus dem Pool
#define Zeitserver "de.pool.ntp.org"

/*
  Liste der Zeitzonen
  https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
  Zeitzone CET = Central European Time -1 -> 1 Stunde zurück
  CEST = Central European Summer Time von
  M3 = März, 5.0 = Sonntag 5. Woche, 02 = 2 Uhr
  bis M10 = Oktober, 5.0 = Sonntag 5. Woche 03 = 3 Uhr
*/
#define Zeitzone "CET-1CEST,M3.5.0/02,M10.5.0/03"

// time_t enthält die Anzahl der Sekunden seit dem 1.1.1970 0 Uhr
time_t aktuelleZeit;

/* 
  Struktur tm
  tm_hour -> Stunde: 0 bis 23
  tm_min -> Minuten: 0 bis 59
  tm_sec -> Sekunden 0 bis 59
  tm_mday -> Tag 1 bis 31
  tm_mon -> Monat: 0 (Januar) bis 11 (Dezember)
  tm_year -> Jahre seit 1900
  tm_yday -> vergangene Tage seit 1. Januar des Jahres
  tm_isdst -> Wert > 0 = Sommerzeit (dst = daylight saving time)
*/
tm Zeit;
WiFiServer Server(80);
WiFiClient Client;

// Display-Parameter
// GxEPD2_154_Z90c: Chip SSD1681 Bildschirm: 200x200
#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c  

// Board wählen:
// ESP32-Wroom
// Anschlüsse: CLK -> 18, DIN -> 23, CS -> 5, DC -> 2, RST -> 22, BUSY -> 4
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 2, /*RST=*/ 22, /*BUSY=*/ 4));

// NodeMCU
// CLK - D5, DIN -> D7, CS -> D8, DC -> D6, RST -> D2, BUSY -> D1
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/D4, /*DC=*/ D6, /*RST=*/ D2, /*BUSY=*/ D1));

// ESP32-C6
// Anschlüsse: CLK -> 21, DIN -> 19, CS -> 18, DC -> 3, RST -> 10, BUSY -> 11
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 18, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 11));

// Nano ESP32
// Anschlüsse: CLK -> D13, DIN -> D11, CS -> D10, DC-> D6, RST -> D8, BUSY -> D9
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D6, /*RST=*/ D7, /*BUSY=*/ D9));

void setup() 
{
  // Schriften von u8g2 display zuordnen
  u8g2Schriften.begin(display); 
  
  // Zeitzone: Parameter für die zu ermittelnde Zeit
  configTzTime(Zeitzone, Zeitserver);

  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial);
  delay(1000);

  // WiFi starten
  WiFi.begin(Router, Passwort);

  Serial.println("------------------------");

  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Verbunden mit ");
  Serial.println(Router);
  Serial.print("IP über DHCP: ");
  Serial.println(WiFi.localIP());

  // Sensor starten
  dht.begin();

  // Bildschirm starten
  display.init(115200, true, 2, false); 

  // Bildschirm um 90° drehen
  display.setRotation(1);

  // vollständigen Bildschirm nutzen
  display.setFullWindow();

  // weißer Hintergrund
  display.fillScreen(GxEPD_WHITE);
}

void loop() 
{
  // aktuelle Zeit holen
  time(&aktuelleZeit);

  // localtime_r -> Zeit in die lokale Zeitzone setzen
  localtime_r(&aktuelleZeit, &Zeit);

  // Temperatur lesen
  String Temperatur = String(dht.readTemperature());

  // replace -> . durch , ersetzen
  Temperatur.replace(".", ",");

  // Luftfeuchtigkeit lesen
  String Luftfeuchtigkeit = String(dht.readHumidity());

  // replace -> . durch , ersetzen
  Luftfeuchtigkeit.replace(".", ",");

  // Anzeige aufbauen
  display.firstPage();
  do 
  {
    display.fillScreen(GxEPD_WHITE);
    
    u8g2Schriften.setForegroundColor(GxEPD_BLACK);   
    u8g2Schriften.setBackgroundColor(GxEPD_WHITE);
    u8g2Schriften.setFont(u8g2_font_fub35_tf); 
    
    u8g2Schriften.setCursor(1, 50);

    // Stunde: wenn Stunde < 10 -> 0 davor setzen
    if (Zeit.tm_hour < 10) u8g2Schriften.print("0");
    u8g2Schriften.print(Zeit.tm_hour);
    u8g2Schriften.print(":");

    // Minuten
    if (Zeit.tm_min < 10) u8g2Schriften.print("0");
    u8g2Schriften.print(Zeit.tm_min);

    // horizontale Linie
    display.fillRect(1, 62, display.width(), 4, GxEPD_BLACK);

    u8g2Schriften.setCursor(1, 110);

    u8g2Schriften.print(Temperatur + " °C");
    u8g2Schriften.setCursor(1, 170);
    u8g2Schriften.print(Luftfeuchtigkeit + " %");
  } 
  while (display.nextPage());

  // alle 5 Minuten aktualisieren
  delay(300000);
}

Anzei­ge der Mess­da­ten als Text, mit Sym­bo­len und der mit WiFi ermit­tel­ten Zeit der letz­ten Messung

Du musst die ent­spre­chen­de WiFi-Biblio­thek aus­wäh­len, in Zei­le 16 den Pin des DHT-Sen­­sors, in Zei­le 20 den Typ des DHT-Sen­­sors anpas­sen und ab Zei­le 67 den pas­sen­den Mikro­con­trol­ler auswählen.

// ESP8266
// #include "ESP8266WiFi.h"

// ESP32
// #include "WiFi.h"

#include "time.h"
#include "GxEPD2_3C.h"
#include "U8g2_for_Adafruit_GFX.h"
#include "DHT.h"

// Objekt u8g2Schriften
U8G2_FOR_ADAFRUIT_GFX u8g2Schriften;

// Pin DHT
int SENSOR_DHT = 9;

// Sensortyp festlegen
// DHT22
#define SensorTyp DHT22

// DHT11
// #define SensorTyp DHT11

// Sensor einen Namen zuweisen
DHT dht(SENSOR_DHT, SensorTyp);

char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";

// NTP-Server aus dem Pool
#define Zeitserver "de.pool.ntp.org"

/*
  Liste der Zeitzonen
  https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
  Zeitzone CET = Central European Time -1 -> 1 Stunde zurück
  CEST = Central European Summer Time von
  M3 = März, 5.0 = Sonntag 5. Woche, 02 = 2 Uhr
  bis M10 = Oktober, 5.0 = Sonntag 5. Woche 03 = 3 Uhr
*/
#define Zeitzone "CET-1CEST,M3.5.0/02,M10.5.0/03"

// time_t enthält die Anzahl der Sekunden seit dem 1.1.1970 0 Uhr
time_t aktuelleZeit;

/* 
  Struktur tm
  tm_hour -> Stunde: 0 bis 23
  tm_min -> Minuten: 0 bis 59
  tm_sec -> Sekunden 0 bis 59
  tm_mday -> Tag 1 bis 31
  tm_mon -> Monat: 0 (Januar) bis 11 (Dezember)
  tm_year -> Jahre seit 1900
  tm_yday -> vergangene Tage seit 1. Januar des Jahres
  tm_isdst -> Wert > 0 = Sommerzeit (dst = daylight saving time)
*/
tm Zeit;
WiFiServer Server(80);
WiFiClient Client;

// Display-Parameter
// GxEPD2_154_Z90c: Chip SSD1681 Bildschirm: 200x200
#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c

// ESP32-Wroom
// Anschlüsse: CLK -> 18, DIN -> 23, CS -> 5, DC-> 2, RST -> 22, BUSY -> 4
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/5, /*DC=*/2, /*RST=*/22, /*BUSY=*/4));

// NodeMCU
// CLK - D5, DIN -> D7, CS -> D8, DC -> D6, RST -> D2, BUSY -> D1
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/D4, /*DC=*/D6, /*RST=*/D2, /*BUSY=*/D1));

// ESP32-C6
// Anschlüsse: CLK -> 21, DIN -> 19, CS -> 18, DC-> 3, RST -> 10, BUSY -> 11
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
//  display(GxEPD2_DRIVER_CLASS(/*CS=*/ 18, /*DC=*/ 3, /*RST=*/2, /*BUSY=*/11));

// Nano ESP32
// Anschlüsse: CLK -> D13, DIN -> D11, CS -> D10, DC-> D6, RST -> D8, BUSY -> D9
// GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 200>
// display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D6, /*RST=*/ D7, /*BUSY=*/ D9));


const unsigned char Thermometer [] PROGMEM = {
	// 'Thermometer, 34x70px
	0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 
	0x7c, 0x0f, 0x00, 0x00, 0x00, 0x70, 0x07, 0x80, 0x00, 0x00, 0xe0, 0x03, 0xc0, 0x00, 0x00, 0xe0, 
	0x01, 0xc0, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x01, 0xc0, 0x01, 
	0xc0, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x0f, 0xc0, 0x01, 0xc0, 0x00, 0x0f, 0xc0, 0x01, 0xc0, 
	0x00, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x00, 
	0x00, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x00, 0x0f, 0xc0, 0x01, 0xc0, 0x00, 0x0f, 
	0xc0, 0x01, 0xc0, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0xc0, 
	0x01, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x00, 0x0f, 0xc0, 0x01, 
	0xc0, 0x00, 0x0f, 0xc0, 0x01, 0xc0, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0xc3, 0xe1, 0xc0, 
	0x00, 0x00, 0xc3, 0xf1, 0xc0, 0x00, 0x00, 0xc3, 0xf1, 0xc0, 0x00, 0x0f, 0xc3, 0xf1, 0xc0, 0x00, 
	0x0f, 0xc3, 0xf1, 0xc0, 0x00, 0x0f, 0xc3, 0xf1, 0xc0, 0x00, 0x00, 0xc3, 0xf1, 0xc0, 0x00, 0x00, 
	0xc3, 0xf1, 0xc0, 0x00, 0x00, 0xc3, 0xf1, 0xc0, 0x00, 0x00, 0xc3, 0xf1, 0xc0, 0x00, 0x00, 0xc3, 
	0xf1, 0xc0, 0x00, 0x00, 0xc3, 0xf1, 0xc0, 0x00, 0x03, 0xc3, 0xf1, 0xf0, 0x00, 0x07, 0xc3, 0xf0, 
	0xf8, 0x00, 0x0f, 0x03, 0xf0, 0x7c, 0x00, 0x0e, 0x03, 0xe0, 0x3c, 0x00, 0x1c, 0x07, 0xf0, 0x1e, 
	0x00, 0x3c, 0x1f, 0xfc, 0x0f, 0x00, 0x38, 0x3f, 0xfe, 0x0f, 0x00, 0x78, 0x7f, 0xff, 0x07, 0x80, 
	0x70, 0x7f, 0xff, 0x87, 0x80, 0x70, 0x7f, 0xff, 0x83, 0x80, 0xf0, 0xff, 0xff, 0x83, 0xc0, 0xf0, 
	0xff, 0xff, 0xc3, 0xc0, 0xf0, 0xff, 0xff, 0xc3, 0xc0, 0xf0, 0xff, 0xff, 0xc3, 0xc0, 0xf0, 0xff, 
	0xff, 0xc3, 0xc0, 0xf0, 0xff, 0xff, 0x83, 0xc0, 0x70, 0x7f, 0xff, 0x83, 0x80, 0x70, 0x7f, 0xff, 
	0x87, 0x80, 0x78, 0x3f, 0xff, 0x07, 0x80, 0x38, 0x3f, 0xfe, 0x0f, 0x00, 0x3c, 0x0f, 0xfc, 0x0f, 
	0x00, 0x1e, 0x03, 0xe0, 0x1e, 0x00, 0x1f, 0x00, 0x00, 0x3e, 0x00, 0x0f, 0x00, 0x00, 0x7c, 0x00, 
	0x07, 0xe0, 0x01, 0xf8, 0x00, 0x03, 0xf8, 0x07, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x00, 
	0x7f, 0xff, 0x80, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00
};

const unsigned char Regen [] PROGMEM = {
	// 'Regen, 60x49px
	0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x02, 0x08, 0x21, 0x04, 0x10, 0x00, 0x00, 0x00, 0x06, 0x18, 0x63, 0x0c, 0x30, 0x80, 0x00, 
	0x00, 0x06, 0x10, 0x63, 0x0c, 0x31, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x20, 0x84, 0x10, 0x41, 0x08, 0x20, 0x00, 0x00, 0x61, 0x8c, 0x30, 0xc3, 0x18, 0x60, 0x00, 
	0x08, 0xc1, 0x8c, 0x30, 0xc3, 0x18, 0x61, 0x00, 0x00, 0x41, 0x04, 0x20, 0x82, 0x08, 0x40, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x30, 0x86, 0x18, 0x43, 0x04, 0x30, 0x80, 
	0x18, 0x71, 0x86, 0x18, 0xc3, 0x0c, 0x31, 0x80, 0x18, 0x21, 0x84, 0x10, 0xc3, 0x0c, 0x21, 0x80, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x18, 0x21, 0x04, 0x10, 0x42, 0x18, 0x40, 
	0x86, 0x18, 0x63, 0x0c, 0x30, 0xc6, 0x18, 0xc0, 0x86, 0x10, 0x63, 0x0c, 0x30, 0xc6, 0x18, 0xc0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x18, 0x21, 0x04, 0x10, 0xc2, 0x0c, 0x21, 0x00, 0x30, 0x63, 0x0c, 0x31, 0xc6, 0x0c, 0x63, 0x00, 
	0x30, 0x63, 0x0c, 0x31, 0x86, 0x18, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x06, 0x10, 0x43, 0x08, 0x20, 0x86, 0x10, 0x00, 0x06, 0x30, 0xc3, 0x18, 0x61, 0x86, 0x30, 0x00, 
	0x04, 0x30, 0xc2, 0x18, 0x61, 0x8c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x0c, 0x30, 0xc6, 0x18, 0x61, 0x00, 0x00, 
	0x00, 0x00, 0x61, 0xc6, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x86, 0x10, 0x60, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

const unsigned char Uhr [] PROGMEM = {
	// Uhr, 50x50px
	0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x03, 
	0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x01, 
	0xfe, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x1f, 0xc0, 
	0x00, 0x01, 0xf8, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x03, 0xf0, 0x00, 0xc0, 0x03, 0xf0, 0x00, 0x07, 
	0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x07, 0x80, 0xc0, 0x00, 0x40, 0x78, 0x00, 0x0f, 0x80, 0x00, 
	0x00, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x00, 0x80, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x00, 0xc0, 0x00, 
	0x1e, 0x00, 0x3e, 0x00, 0x00, 0xc0, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0xc0, 0x00, 0x0f, 0x00, 
	0x38, 0x30, 0x00, 0xc0, 0x01, 0x07, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x00, 0x07, 0x80, 0x78, 0x00, 
	0x00, 0xc0, 0x00, 0x07, 0x80, 0x70, 0x00, 0x00, 0xc0, 0x00, 0x03, 0x80, 0xf0, 0x00, 0x00, 0xc0, 
	0x00, 0x03, 0xc0, 0xf0, 0x00, 0x00, 0xc0, 0x00, 0x03, 0xc0, 0xf0, 0x00, 0x00, 0xc0, 0x00, 0x03, 
	0xc0, 0xf0, 0x00, 0x00, 0xc0, 0x00, 0x03, 0xc0, 0xf1, 0x80, 0x00, 0xc0, 0x00, 0x63, 0xc0, 0xf1, 
	0x80, 0x01, 0x80, 0x00, 0x63, 0xc0, 0xf0, 0x00, 0x07, 0x00, 0x00, 0x03, 0xc0, 0xf0, 0x00, 0x1c, 
	0x00, 0x00, 0x03, 0xc0, 0xf0, 0x00, 0x78, 0x00, 0x00, 0x03, 0xc0, 0xf0, 0x00, 0xe0, 0x00, 0x00, 
	0x03, 0xc0, 0x70, 0x03, 0x80, 0x00, 0x00, 0x03, 0x80, 0x78, 0x07, 0x00, 0x00, 0x00, 0x07, 0x80, 
	0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x78, 0x20, 0x00, 0x00, 0x01, 0x07, 0x80, 0x3c, 0x00, 
	0x00, 0x00, 0x00, 0x0f, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x00, 0x00, 
	0x00, 0x1e, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x7c, 
	0x00, 0x07, 0x80, 0x80, 0x00, 0xc0, 0x78, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x03, 
	0xf0, 0x00, 0xc0, 0x03, 0xf0, 0x00, 0x01, 0xf8, 0x00, 0xc0, 0x07, 0xe0, 0x00, 0x00, 0xfe, 0x00, 
	0x00, 0x1f, 0xc0, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x1f, 0xe0, 0x01, 0xfe, 
	0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xf0, 0x00, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00
};

void setup() 
{
  // Schriften von u8g2 display zuordnen
  u8g2Schriften.begin(display); 

  // Zeitzone: Parameter für die zu ermittelnde Zeit
  configTzTime(Zeitzone, Zeitserver);

  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial);
  delay(1000);

  // WiFi starten
  WiFi.begin(Router, Passwort);

  Serial.println("------------------------");

  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Verbunden mit ");
  Serial.println(Router);
  Serial.print("IP über DHCP: ");
  Serial.println(WiFi.localIP());

  // Bildschirm starten
  display.init(115200, true, 2, false);

  // Bildschirm um 90° drehen
  display.setRotation(1);

  // vollständigen Bildschirm nutzen
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);

  // Sensor starten
  dht.begin();
}

void loop()
{
  // aktuelle Zeit holen
  time(&aktuelleZeit);

  // localtime_r -> Zeit in die lokale Zeitzone setzen
  localtime_r(&aktuelleZeit, &Zeit);

  // Temperatur lesen
  String Temperatur = String(dht.readTemperature());

  // replace -> . durch , ersetzen
  Temperatur.replace(".", ",");

  // Luftfeuchtigkeit lesen
  String Luftfeuchtigkeit = String(dht.readHumidity());

  // replace -> . durch , ersetzen
  Luftfeuchtigkeit.replace(".", ",");

  // Anzeige aufbauen
  display.firstPage();
  do 
  {
    u8g2Schriften.setForegroundColor(GxEPD_BLACK);   
    u8g2Schriften.setBackgroundColor(GxEPD_WHITE);
    u8g2Schriften.setFont(u8g2_font_helvB24_tf);   

    u8g2Schriften.setCursor(70, 40);

    // Stunde: wenn Stunde < 10 -> 0 davor setzen
    if (Zeit.tm_hour < 10) u8g2Schriften.print("0");
    u8g2Schriften.print(Zeit.tm_hour);
    u8g2Schriften.print(":");

    // Minuten
    if (Zeit.tm_min < 10) u8g2Schriften.print("0");
    u8g2Schriften.print(Zeit.tm_min);

    // x, y, Bild-Array, Breite, Höhe, Farbe
    display.drawBitmap(5, 5, Uhr, 50, 50, GxEPD_BLACK);
    display.drawBitmap(15, 70, Thermometer, 34, 70, GxEPD_BLACK);
    display.drawBitmap(5, 150, Regen, 60, 49, GxEPD_BLACK);  

    // Messdaten anzeigen
    u8g2Schriften.setCursor(70, 110);
    u8g2Schriften.print(Temperatur + " °C");
    u8g2Schriften.setCursor(70, 180);
    u8g2Schriften.print(Luftfeuchtigkeit + " %");
  } 
  while (display.nextPage());

  // alle 5 Minuten aktualisieren
  delay(300000);
}

Quel­len


Letzte Aktualisierung: Jan. 16, 2025 @ 22:37