In den folgenden Test werden zwei verschiedene 0,96″ OLED Module für den Arduino gestestet.
OLED | Arduino Uno |
---|---|
GND | GND |
VCC | 3,3V bzw. 5V |
SCL | A5 |
SDA | A4 |
Zum Betrieb des OLED-Moduls mit I²C-Schnittstelle wurden verschiedene Software-Libraries verwendet:
Für die Library
Adafruit_SSD1306 wird
zusätzlich noch die allgemeine
Adafruit-GFX-Library
benötigt.
Nun kann das OLED recht leicht gestestet werden: Das mitgelieferte Beispiel "ssd1306_128x32_i2c"
zeigt die Möglichkeiten des OLED-Displays.
Um den 128×64-Modus zu aktivieren, musste ich in dem Beispiel-Sketch "ssd1306_128x64_i2c"
die I²C-Adresse abändern von 0x3D → 0x3C
Die Library SSD1306Ascii ist zwar nur eine Text-Library für SSD1306-OLEDs, aber hier ist es leicht möglich, den 128×64-Modus zu aktiveren. Man kann dies leicht mit dem Beispiel "AvrI2c128x64" testen.
OLED | Arduino Uno |
---|---|
GND | GND |
VCC | 3,3V |
D0 (CLK, SCL, Hardware SCK) | 13 |
D1 (DATA, MOSI DATA, SDA, Hardware MOSI) | 11 |
CS (DS, Chip Select) | 10 (frei belegbar) |
DC (Data/Command) | 9 (frei belegbar) |
Reset (Res) | 8 (frei belegbar) |
Für die Library
Adafruit_SSD1306 wird
zusätzlich noch die allgemeine
Adafruit-GFX-Library
benötigt.
Mit der Verwendung der mitgelieferte Beispiel-Sketche "ssd1306_128x32_spi" (128×32 Pixel Modus)
und "ssd1306_128x64_spi" (128×64 Pixel Modus) kann das OLED schnell getestet werden. In den Sketchen
müssen nur noch nach Bedarf die Pin-Belegungen angepasst werden.
Eine weitere Library ist die U8glib
bzw. deren aktueller Nachfolger U8g2.
Die Installation erfolgt wie gehabt in der Arduino-IDE über das Menü "Sketch →
Bibliothek einbinden → Bibliotheken verwalten..."
Zum Test können die zahlreichen mitgelieferten Beispiel-Sketche verwendet werden, oder alternativ auch folgender, einfacher Sketch (PINs evtl. noch anpassen):
#include <Arduino.h>
#include <SPI.h>
#include <U8g2lib.h>
#define PIN_CLK 13
#define PIN_SDA 11
#define PIN_CS 10
#define PIN_DC 9
#define PIN_RES 8
// U8g2 constructor
U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, PIN_CLK, PIN_SDA, PIN_CS, PIN_DC, PIN_RES);
// Create a U8g2log object
U8G2LOG u8g2log;
// assume 4x6 font, define width and height
#define U8LOG_WIDTH 32
#define U8LOG_HEIGHT 10
// allocate memory
uint8_t u8log_buffer[U8LOG_WIDTH * U8LOG_HEIGHT];
void setup(void)
{
u8g2.begin();
u8g2.setFont(u8g2_font_tom_thumb_4x6_mf); // set the font for the terminal window
u8g2log.begin(u8g2, 32, 10, u8log_buffer); // connect to u8g2, assign buffer
}
void loop(void)
{
u8g2log.print(millis());
u8g2log.print("\n");
delay(500);
}
zurück