sitemap link mailform link home

Grafikdisplay SH1106

Beitrag vom 19. Oktober 2020:

Es gibt eine ganze Reihe monochromer Grafikdisplays mit verschiedenen Treiberchips.
Die Arduino-Library U8GLIB von Oli Kraus unterstützt eine breite Palette dieser Displays.
Die Bibliothek kann innerhalb der Arduino-IDE ausgewählt und installiert werden:

Screenshot

Ich verwende ein Display mit I2C-Schnittstelle, SH1106-Treiberchip und einer Auflösung von 128x64 Pixeln. Die Anzeigefarbe ist weiß.

Ebay

Mein Display hat einen deutlichen Aufdruck, wie man es anschließen muss:

VCC GND SCK SDA

Anschließen an den Arduino:

VCC => 3,3 V (Arduino)
GND => GND (Arduino)
SCK => SCL (Arduino)
SDA => SDA (Arduino)

ACHTUNG: Bei manchen Displays ist VCC und GND vertauscht!

Im ersten Beispiel sollen Linien, Texte und abgerundete Boxen statisch dargestellt werden. Eine Funktion zum Löschen des gesamten Displays ist ebenfalls enthalten. Im zweiten Beispiel wird gezeigt, wie einfache Grafikelemente selbst definiert werden. Ein Turm (Schachfigur) springt fortlaufend zwischen zwei Positionen auf dem Display hin- und her.

OLED     OLED

Nach der Installation der U8GLIB-Bibliothek findet man viele Beispielprogramme im folgenden Ordner (Windows 10):

C:\Users\username\Documents\Arduino\libraries\U8glib\examples

Das zweite Beipiel stammt aus der Datei "Bitmap.ino".

Beipiel 1 Quellcode:

// Beipiel 1 Quellcode:

// Ausgabe von Linien, Schrift und Rechteck

#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);    // I2C / TWI

void clearOLED() {
  u8g.firstPage();
  do {
  } while ( u8g.nextPage() );
}

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr( 15, 25, "Hello World!");
  u8g.drawStr( 15, 35, "Hello World!");
  u8g.drawStr( 15, 45, "Hello World!");
  // Rahmen und Boxen werden nach folgendem Schema beschrieben:
  // Der Startpunkt oben links wird durch die x- und y-Koordinaten bestimmt.
  // z.B. u8g.drawBox( x-Koordinate, y-Koordinate, Breite, Höhe);
  // RFrame und RBox haben abgerundete Ecken:
  // z.B. u8g.drawRBox( x-Koordinate, y-Koordinate, Breite, Höhe, Rundung);
  u8g.drawRFrame(0, 0,128,64, 3); // Rahmen mit abgerundeten Ecken => 3
  //u8g.drawBox( 10, 50, 107, 10); // Gefüllte Box unterhalb der Schrift
  u8g.drawRBox( 10, 50, 107, 10, 3); // Gefüllte Box mit abgerundeten Ecken
  u8g.drawLine(0, 0, 127, 10); // 1. Schräge Linie
  u8g.drawLine(0, 10, 127, 0); // 2. Schräge Linie
  u8g.drawLine(0, 10, 127, 10); // 2. Gerade Linie
}

void setup(void) {
  clearOLED();
  delay(500);
}

void loop(void) {
  // picture loop
  u8g.firstPage();
  do {
    draw();
  } while ( u8g.nextPage() );

  // rebuild the picture after some delay
  delay(1000);
}

 

// Beispiel2 Quellcode:

/*

  Bitmap.pde

  Show simple bitmap

  >>> Before compiling: Please remove comment from the constructor of the
  >>> connected graphics display (see below).

  Universal 8bit Graphics Library, https://github.com/olikraus/u8glib/

  Copyright (c) 2011, olikraus@gmail.com
  All rights reserved. */


// Eine kleine Grafik (Turm) springt auf dem Display hin und her

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);    // I2C / TWI

// Grafik "Turm" definieren:
const uint8_t rook_bitmap[] PROGMEM = {
  B00000000,
  B01010101,
  B01111111,
  B00111110,
  B00111110,
  B00111110,
  B00111110,
  B01111111
};

void clearOLED() {
  u8g.firstPage();
  do {
  } while ( u8g.nextPage() );
}

void draw1(void) {
  // graphic commands to redraw the complete screen should be placed here
  u8g.drawBitmapP( 0, 0, 1, 8, rook_bitmap);
}

void draw2(void) {
  // graphic commands to redraw the complete screen should be placed here
  u8g.drawBitmapP( 10, 10, 1, 8, rook_bitmap);
}

void setup(void) {

}

void loop(void) {
  // picture loop
  u8g.firstPage();
  do {
    draw1();
  } while ( u8g.nextPage() );

  // rebuild the picture after some delay
  delay(1000);
  u8g.firstPage();
  do {
    draw2();
  } while ( u8g.nextPage() );
  delay(1000);
}

 

 

Externer Link  Lin

 

.

 

Letzte Änderung:
March 23. 2023 21:04:40
«    top    »