OLED displej je výstupní modul pro Arduino. Tento displej má velikost 1,3“ a rozlišení 128x64 pixelů. Co se týká kontroléru, tak tento displej je řízený pomocí SH1106 ve variantě se sběrnicí SPI. V ostatních parametrech je podobný ostatním OLED displejům – má velký pozorovací úhel a nízkou spotřebu. A vypisovaná grafika má bílou barvu.
Pro napájení tohoto displeje je možné použít napětí v rozsahu 2,8 – 5,5 Voltu.

OLED displej 1,3" SH1106

Pro úspěšné propojení modulu OLED displeje a Arduino desky je nutné zapojit celkem 7 vodičů. Propojíme CS s pinem D8, DC s pinem D9, RES s pinem D10, MOSI s pinem D11, CLK s pinem D13, VCC s 3V3 Arduina a GND se zemí Arduina. Datové piny MOSI a CLK odpovídají sběrnici SPI, ale pro ostatní piny můžeme zvolit i jiný volný pin. Jen je nutné tuto volbu provést také na začátku programu.

OLED displej 1,3" SH1106

Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu U8glib, návod, jak na to, je uveden zde.
Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny, definici propojovacích pinů a jako další krok inicializaci OLED displeje z knihovny U8glib. Následně je vytvořena proměnná prepis pro uchování času poslední obnovy displeje a podprogram setup v tomto případě obsahuje pouze možné otočení displeje o 180 stupňů skryté v komentáři.
V nekonečné smyčce loop se nachází funkce if, která kontroluje rozdíl mezi aktuálním časem a časem posledního vykreslení displeje, kdy změnou čísla za porovnáním (v ukázce 100ms) můžeme volit rychlost překreslování displeje v milisekundách. Tělo této funkce pak obsahuje skupinu příkazů, které zaručí překreslení displeje a poté ještě uložení posledního času obnovení do proměnné prepis. Ve skupině příkazů překreslení OLED displeje se nachází důležité volání podprogramu vykresli, který obsahuje příkazy s vytvořením obsahu displeje. Tento podprogram je uveden pod smyčkou loop.
Je v něm uvedeno nastavení písma na univerzální font a dále vypsání čtyř řádků s textem. Jak je uvedeno v komentářích, pomocí funkce setPrintPos(x,y) si vždy nastavíme souřadnici, odkud se bude tisknout a poté funkcí print vytiskneme požadovaný text. Jakmile se dokončí podprogram vykresli, tak můžeme pokračovat v dalších příkazech, které jsou simulované krátkou pauzou o délce 10ms. A poté už následuje nový běh smyčky loop.

// OLED displej 1,3" SH1106

// připojení knihovny U8glib
#include "U8glib.h"

// nastavení propojovacích pinů
#define CLK 13
#define MOSI 11
#define RES 10
#define DC 9
#define CS 8

// inicializace OLED displeje z knihovny U8glib
U8GLIB_SH1106_128X64 oled(CLK, MOSI, CS, DC, RES);

// proměnná pro uchování času poslední obnovy displeje
long int prepis = 0;

void setup(void) {
  // pro otočení displeje o 180 stupňů
  // stačí odkomentovat řádek níže
  // oled.setRot180();
}

void loop(void) {
  // porovnání uloženého a aktuálního času
  // při rozdílu větším než 100 ms se provede
  // obnovení displeje, čas můžeme nastavit dle potřeby
  if (millis() - prepis > 100) {
    // následující skupina příkazů
    // obnoví obsah OLED displeje
    oled.firstPage();
    do {
      // funkce vykresli vykreslí žádanou obsah
      vykresli();
    } while ( oled.nextPage() );
    // uložení posledního času obnovení
    prepis = millis();
  }

  // zde je místo pro další příkazy pro Arduino

  // volitelná pauza 10 ms pro demonstraci
  // vykonání dalších příkazů
  delay(10);
}
// funkce vykresli pro nastavení výpisu informací na OLED
void vykresli(void) {
  // nastavení písma, toto písmo umožní vypsat
  // přibližně 15x4 znaků
  oled.setFont(u8g_font_unifont);
  // nastavení pozice výpisu v pixelech
  // souřadnice jsou ve tvaru x, y
  // souřadnice 0, 0 je v levém horní rohu
  // OLED displeje, maximum je 128, 64
  oled.setPrintPos(0, 10);
  // výpis textu na zadanou souřadnici
  oled.print("Arduino navody");
  oled.setPrintPos(0, 25);
  oled.print("dratek.cz");
  oled.setPrintPos(0, 40);
  oled.print("Cas od zapnuti:");
  oled.setPrintPos(40, 55);
  oled.print(millis() / 1000);
  oled.print(" vterin");
}

Po nahrání ukázkového kódu do Arduino desky s připojeným OLED displejem SH1106 získáme například tento výsledek.

OLED displej 1,3" SH1106

OLED displej SH1106 je dalším z řady malých displejů, které disponují na svoji velikost pěkným rozlišením. Díky tomu je můžeme využívat nejen na tištění textu, ale i na jemnou grafiku a podobně. Může se tedy hodit do projektů jako zobrazovač textu, různých údajů nebo také právě grafiky pro různé situace. Jak už bylo řečeno, jeho výhodou je jednoduché použití, nízký odběr, dobrá čitelnost a také příjemná cena.

Seznam použitých komponent:
https://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html
https://dratek.cz/arduino/3202-spi-oled-lcd-1-3-displej-128x64-bily-2-8-5-5v.html

FB tw

Další podobné články