- Erforderliche Hardware:
- OLED-Displays kennenlernen:
- Hardware und Anschlüsse:
- Programmieren des OLED-Displays SSD1306 für Arduino:
Die meisten von uns sind mit dem 16 × 2-Punktmatrix-LCD-Display vertraut, das in den meisten Projekten verwendet wird, um dem Benutzer einige Informationen anzuzeigen. Diese LCD-Displays haben jedoch viele Einschränkungen hinsichtlich ihrer Möglichkeiten. In diesem Tutorial lernen wir OLED-Displays und deren Verwendung in Arduino kennen. Es gibt viele Arten von OLED-Displays auf dem Markt und es gibt viele Möglichkeiten, sie zum Laufen zu bringen. In diesem Tutorial werden wir über seine Klassifikationen diskutieren und darüber, welche für Ihr Projekt am besten geeignet sind.
Erforderliche Hardware:
- 7-poliges 128 × 64-OLED-Anzeigemodul (SSD1306)
- Arduino UNO / Nano
- Steckbrett
- Kabel anschließen
- Computer Laptop
OLED-Displays kennenlernen:
Der Begriff OLED steht für „ Organic Light Emitting Diode “ ( Organische Leuchtdiode) und verwendet dieselbe Technologie wie die meisten unserer Fernseher, hat jedoch im Vergleich zu diesen weniger Pixel. Es macht wirklich Spaß, diese cool aussehenden Anzeigemodule mit dem Arduino zu verbinden, da dadurch unsere Projekte cool aussehen. Wir haben hier einen vollständigen Artikel über OLED-Displays und ihre Typen behandelt.
Wir verwenden ein monochromes 7-poliges SSD1306 0,96-Zoll-OLED-Display. Der Grund für die Auswahl dieses Displays ist, dass es mit drei verschiedenen Kommunikationsprotokollen arbeiten kann, z. B. dem SPI 3-Drahtmodus, dem SPI-Vierdrahtmodus und dem IIC-Modus. In diesem Tutorial wird beschrieben, wie Sie das Modul im SPI 4-Draht-Modus verwenden, da es der schnellste und der Standard-Kommunikationsmodus ist.
Die Stifte und ihre Funktionen werden in der folgenden Tabelle erläutert.
PIN Nummer |
Pin Name |
Andere Namen |
Verwendung |
1 |
Gnd |
Boden |
Erdungsstift des Moduls |
2 |
Vdd |
Vcc, 5V |
Stromanschluss (3-5V tolerierbar) |
3 |
SCK |
D0, SCL, CLK |
Dient als Clock. Wird sowohl für I2C als auch für SPI verwendet |
4 |
SDA |
D1, MOSI |
Daten-Pin des Moduls. Wird sowohl für IIC als auch für SPI verwendet |
5 |
RES |
RST, RESET |
Setzt das Modul zurück (nützlich während SPI) |
6 |
DC |
A0 |
Datenbefehls-Pin. Wird für das SPI-Protokoll verwendet |
7 |
CS |
Chipauswahl |
Nützlich, wenn mehr als ein Modul unter dem SPI-Protokoll verwendet wird |
In diesem Tutorial werden wir das Modul einfach im 4-Draht-SPI-Modus betreiben, den Rest lassen wir für ein anderes Tutorial.
Die Arduino-Community hat uns bereits viele Bibliotheken zur Verfügung gestellt, die direkt verwendet werden können, um dies viel einfacher zu machen. Ich habe einige Bibliotheken ausprobiert und festgestellt, dass die Adafruit_SSD1306-Bibliothek sehr einfach zu verwenden ist und über eine Handvoll grafischer Optionen verfügt. Daher werden wir diese in diesem Lernprogramm verwenden. Wenn Ihr Projekt jedoch Speicher- / Geschwindigkeitsbeschränkungen aufweist, verwenden Sie die U8g-Bibliothek, da diese schneller arbeitet und weniger Programmspeicher belegt.
Hardware und Anschlüsse:
Das Schaltbild für die SSD1306-OLED-Schnittstelle mit Arduino ist sehr einfach und wird unten gezeigt
Wir haben einfach eine SPI-Kommunikation zwischen dem OLED-Modul und Arduino hergestellt. Da die OLED mit 3V-5V betrieben wird und nur sehr wenig Strom verbraucht, ist keine externe Stromversorgung erforderlich. Sie können einfach Drähte verwenden, um die Verbindung herzustellen, oder ein Steckbrett verwenden, wie ich es verwendet habe, damit es einfach zu experimentieren ist. Die Verbindung ist auch in der folgenden Geschichte aufgeführt
S.No. |
Pin-Name am OLED-Modul |
Pin Name auf Arduino |
1 |
Gnd, Boden |
Boden |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, Chip Select |
12 |
Hinweis: Sie können keine Hintergrundbeleuchtung / kein Leuchten auf dem OLED-Modul sichtbar machen, indem Sie es nur mit Strom versorgen. Sie müssen es richtig programmieren, um Änderungen auf dem OLED-Display zu bemerken.
Programmieren des OLED-Displays SSD1306 für Arduino:
Sobald die Verbindungen hergestellt sind, können Sie mit der Programmierung des Arduino beginnen. Wie bereits erwähnt, werden wir die Adafruit-Bibliothek und die GFX-Bibliothek für die Arbeit mit diesem OLED-Modul verwenden. Befolgen Sie die Schritte, um Ihr OLED-Display zu testen.
Schritt 1: Laden Sie die Adafruit-Bibliothek und die GFX-Bibliothek über den folgenden Link von Github herunter
- Adafruit-Bibliothek
- GFX-Grafikbibliothek
Schritt 2: Sie sollten zwei Zip-Dateien heruntergeladen haben. Fügen Sie sie nun Ihrem Arduino hinzu, indem Sie folgen
Skizze-> Bibliothek einschließen -> Zip-Bibliothek hinzufügen wie unten gezeigt. Wählen Sie dann die Bibliothek aus, die wir gerade heruntergeladen haben. Sie können jeweils nur eine Bibliothek auswählen, daher müssen Sie diesen Schritt erneut wiederholen.
Schritt 3: Starten Sie das Beispielprogramm, indem Sie Datei-> Beispiele-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino auswählen (siehe Abbildung unten).
Schritt 4: Fügen Sie im Beispielprogramm über Zeile 64 die Zeile "#define SSD1306_LCDHEIGHT 64" hinzu, wie in der Abbildung unten gezeigt.
Schritt 5: Laden Sie nun das Programm hoch und Sie sollten sehen, dass das OLED-Display mit dem Standard-Adafruit-Beispielcode startet (siehe Abbildung unten). Das vollständige Arbeitsvideo finden Sie am Ende.
Dieses Beispielprogramm zeigt Ihnen alle möglichen Grafiken, die auf dem OLED-Bildschirm angezeigt werden könnten. Dieser Code sollte ausreichen, um Bitmaps zu erstellen, Linien / Kreise / Rechtecke zu zeichnen, mit Pixeln zu spielen, Zeichen und Zeichenfolgen mit unterschiedlichen Schriftarten und Größen anzuzeigen usw.
Wenn Sie die Bibliothek und ihre Funktionen besser verstehen möchten, können Sie weiterlesen. Jeder Junks des Codes wird aufgeteilt und mit Hilfe von Kommentarzeilen erklärt. Der vollständige Code ist am Ende dieses Artikels angegeben
Anzeigen und Löschen des Bildschirms:
Das Schreiben auf dem OLED-Bildschirm ist wie das Schreiben auf eine Tafel. Wir müssen die Werte schreiben und dann bereinigen, bevor sie überschrieben werden können. Die folgenden Befehle werden zum Schreiben und Löschen der Anzeige verwendet
display.display (); // Schreiben, um display.clearDisplay () anzuzeigen; // Anzeige löschen
Anzeigen einer Zeichenvariablen:
Um den Inhalt innerhalb einer Variablen anzuzeigen, kann der folgende Code verwendet werden.
char i = 5; // die anzuzeigende Variable display.setTextSize (1); // Wähle die Größe des Textes display.setTextColor (WHITE); // für monochrome Anzeige nur mit möglicher Anzeige display.setCursor (0,0); // 0,0 ist die obere linke Ecke des OLED-Bildschirms display.write (i); // Schreibe die anzuzeigende Variable
Zeichnen einer Linie, eines Kreises, eines Rechtecks oder eines Dreiecks:
Wenn Sie Ihrer Anzeige einige Symbole hinzufügen möchten, können Sie den folgenden Code verwenden, um eine der folgenden Optionen zu zeichnen
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WHITE); // void drawLine (x0, y0, x1, y1, Farbe); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WHITE); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, WHITE); // void drawTriangle (x0, y0, x1, y1, x2, y2, Farbe); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
Zeichnen eines Strings auf den Bildschirm:
Der folgende Codeabschnitt kann verwendet werden, um eine beliebige Meldung auf dem Bildschirm an einer bestimmten Stelle und Größe anzuzeigen
display.setTextSize (2); // setze die Größe des Textes display.setTextColor (WHITE); // Farbeinstellung display.setCursor (10,0); // Die Zeichenfolge beginnt bei 10,0 (x, y) display.clearDisplay (); // Radiergummi aller vorherigen Anzeigen auf dem Bildschirm display.println ("Circuit Digest"); // Drucke den String hier "Circuit Digest" display.display (); // Sende den Text an den Bildschirm
Anzeigen eines Bitmap-Bildes:
Eine nicht vertrauenswürdige Sache, die mit dem OLED-Modul gemacht werden kann, ist, dass es zum Anzeigen von Bitmaps verwendet werden kann. Der folgende Code wird verwendet, um ein Bitmap-Bild anzuzeigen
statische Konstante ohne Vorzeichen char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B1111111, B1111111 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, Bitmap, B, H, WEISS); // void drawBitmap (x, y, * Bitmap, w, h, Farbe);
Wie Sie sehen können, müssen die Bitmap-Daten in Form einer PROMGMEM-Direktive im Programmspeicher gespeichert werden, um ein Bild anzuzeigen. Einfach ausgedrückt, müssen wir die OLED-Anzeige anweisen, was mit jedem Pixel zu tun ist, indem wir ihm eine Sequenz oder Werte aus einem Array übergeben, wie oben gezeigt. Dieses Array enthält die Bitmap-Daten des Bildes.
Es mag kompliziert klingen, aber mit Hilfe eines Web-Tools ist es sehr einfach , ein Bild in Bitmap-Werte zu konvertieren und diese in das obige Array zu laden.
Laden Sie einfach das Bild und passen Sie die Einstellungen an, um Ihre bevorzugte Vorschau des Bildes zu erhalten. Klicken Sie dann auf "Code generieren", kopieren Sie den Code und fügen Sie ihn in Ihr Array ein. Laden Sie das Programm hoch und Sie sind fertig. Ich habe versucht, ein Batman-Logo anzuzeigen, und so stellte sich heraus.
Es gibt noch viele Dinge, die Sie mit diesen Bibliotheken tun können. Um die vollständigen Möglichkeiten zu erfahren, besuchen Sie die Seite Adafruit GFX-Grafikprimitive.
Ich hoffe, Sie haben dies zum Laufen gebracht und sind bereit, ein OLED-Display in einigen Ihrer Projekte zu implementieren. Wenn Sie Probleme hatten, teilen Sie sie im Kommentarbereich mit und ich werde mein Bestes geben, um sie zu korrigieren.