Wyświetlacz OLED SSD1306 – I2C

Atrakcyjne cenowo i wizualnie, małe wyświetlacze OLED cieszą się bardzo dużą popularnością. Łatwość wdrożenia ich do budowanych projektów, dzięki dostępności gotowych bibliotek sprawia, że w ciągu kilku chwil możemy cieszyć się efektownym interfejsem użytkownika. Wyświetlacze tego typu nie wymagają podświetlania, mają bardzo mały pobór prądu i doskonałą widoczność – przy założeniu, że ich rozmiar jest dla nas satysfakcjonujący, to jest to doskonały wybór. Najczęściej spotykane wersje tych wyświetlaczy to niebieski, jednokolorowy OLED o rozdzielczości 128×64 px, ze sterowaniem po magistrali szeregowej – I2C lub SPI, o przekątnej 0,96„.

Koszt wyświetlaczy tego typu – z kontrolerem SSD1306 – zazwyczaj nie przekracza kilku USD, a najpopularniejsze z nich – mono, 128×64, I2C – można kupić już za ok. 3 USD.  

Pełną dokumentację kontrolera znajdziecie TUTAJ

Do sterowania tego typu modułów graficznych dostępnych jest kilka bibliotek. Jedną z popularniejszych jest u8glib i na jej podstawie powstał poniższy przykład …

Sam układ jest banalnie prosty i sprowadza się do podłączenia zasilania (całość +5V) i magistrali szeregowej – SDA, SCL

Wyświetlacz OLED SSD1306 I2C
Wyświetlacz OLED SSD1306 I2C

 

 

Szczegółowy opis obsługiwanych funkcji : 

https://github.com/olikraus/u8glib/wiki/userreference

Prosty kod (z powyższego przykładu) :

 


// OLED SSD1306 128x64 + Arduino NANO V3 - sterowanie po I2C


#include "U8glib.h"                          // bibioteka OLED I2C
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); //konstruktor


void setup()
	{
		u8g.firstPage();
		do {
			u8g.setFont(u8g_font_unifont);
			u8g.drawStr( 12, 25, "TEST SSD1306");
			u8g.setFont(u8g_font_profont29);
			u8g.drawStr( 18, 58, "ywd.pl");
			} while( u8g.nextPage() );
		
		delay(1000);
	}
	
	
void loop() 
	{
		for ( int licznik = 1; licznik < 116; licznik++)
			{
				// petla obrazu
				u8g.firstPage();
				do {
					u8g.setFont(u8g_font_profont29);
					u8g.setPrintPos(52, 34);
					u8g.print(licznik);
					u8g.drawFrame(10,50,118,14);
					u8g.drawBox(12,52,licznik,10);
					} while( u8g.nextPage() );
			}
	}