0

0.96″ I2C OLED displej SSD1306

V tomto článku si ukážeme, jak zprovoznit běžný čtyřpinový 0.96 palcový OLED modul s řadičem Solomon SSD1306 a I2C rozhraním. Jedná se asi o nejběžnější řadič pro tyto malé OLEDy. OLED displeje mají hned několik výhod – spotřeba závisí na počtu svítících bodů (když nic nesvítí, je podstatně menší – LCD musí být podsvícený stále), mají výborný kontrast a excelentní pozorovací úhly.

Samotný modul připojíme k Arduinu velice jednoduše:
Pin VCC na 5V na Arduinu (SSD1306 má nižší provozní napětí, ale na desce modulu je regulátor)
Pin GND na GND na Arduinu
Pin SDA na A4 či SDA
Pin SCL na A5 či SCL

arduino with oled

Pro ovládání displeje zde použijeme knihovnu Adafruit SSD1306, kterou lze stáhnout zde (Clone or download -> Download ZIP). Knihovnu musíme po stažení importovat do Arduino IDE.  Import je jednoduchý: Sketch -> Include library -> Add .ZIP Library. Dále je potřeba importovat knihovnu Adafruit GFX.

Nyní můžeme zkusit otevřít nějaký ukázkový projekt (File -> Examples -> Adafruit SSD1306 -> ssd1306_128x64_i2c). Kompilace ovšem skončí chybou „Height incorrect, please fix Adafruit_SSD1306.h!“. Musíme upravit soubor Adafruit_SSD1306.h. Ten se nachází ve složce knihovny. Složka s knihovnami se na Linuxu nachází na cestě ~/Arduino/libraries, na Windows Documents/Arduino/libraries.

Tento blok kódu:

// #define SSD1306_128_64
 #define SSD1306_128_32
// #define SSD1306_96_16

je třeba zaměnit za:

 #define SSD1306_128_64
// #define SSD1306_128_32
// #define SSD1306_96_16

Ukázka z Examples má ještě jeden problém – špatnou I2C adresu, správná je 0x3C (je nutné upravit následující řádek):

display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

Zde je zjednodušená ukázka:

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

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

void setup() { 
 // Inicializace displeje
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 

 display.clearDisplay();
 // potvrzeni zobrazeni
 display.display();
 
 // bod a cara
 display.drawLine(20, 10, 30, 20, WHITE); // X1, Y1, X2, Y2
 display.drawPixel(10, 10, WHITE);

 // obdelniky
 display.drawRect(40, 10, 10, 5, WHITE); // X, Y, velX, velY
 display.fillRect(60, 10, 10, 5, WHITE);

 // krouzky
 display.drawCircle(30,30,5,WHITE); // X, Y, polomer, barva
 display.fillCircle(50,30,5,WHITE);

 // text
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(0,40);
 display.println("TEST I2C OLED!");

 display.display();
 
}


void loop() {
 
}

Tento displej a další moduly k Arduinu můžete koupit zde. Pro displej existují i další knihovny, například U8glib.

Zde je fotka z provozu (na fotce je modrožlutý displej, vyrábí se ale i pouze bílý):

oled2

 

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

Saksun

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *