"Display OLED 0.91" SSD1306 I2C 128x32 - Arduino UNO"

Ten artykuł zawiera podstawowe informacje o tym jak uruchomić wyświetlacz OLED 0.91 SSD1306 w Arduino UNO. 
Użyty w przykładzie wyświetlacz OLED ma oznaczenia: Wyświetlacz OLED 0.91" 4P 128x32 na I2C - SSD1306 kod 9532 i pochodzi ze sklepu ABC RC www.abc-rc.pl. LINK 

20191102 165651 OLED SSD1306 407

Krótki poradnik jak uruchomić wyświetlacz OLED 0.91" SSD1306 I2C 128x32 na Arduino UNO: 

  1. Uruchamiamy środowisko Arduino IDE (pamiętamy o ustawieniu portu USB w menu Narzędzia/Port:..):
    Arduino IDE Port COM 01

  2. Podłączenie: do Ardunio podłączamy zasilanie np: USB oraz 4 kabelki tj.:
    - 5V z Arduino do VCC w OLED;
    - GND z Arduino do GND w OLED
    - SDA z Arduino do SDA w OLED
    - SCL z Arduino do SCL w OLED.

  3. Niezbędna będzie biblioteka do środowiska Arduino. W środowisku należy wejść w menu jak na zdjęciu i zainstalować bibliotekę U8G2 by Oliver. W internecie wersji jest wiele, ale u mnie sprawdziła się właśnie ta: 
    Biblioteka U8G2 01
    W polu wyszukiwania nalezy wpisać: U8G2
    OLED U8G2 by Oliver

  4. Po zainstalowaniu (czasami konieczne jest również ponowne uruchomienie środowiska Arduino IDE) wystarczy uruchomić przykład - np. U8G2/full_buffer/HelloWorld: OLED 0.91 SSD1306 01

  5. Przed uruchomieniem (wgraniem programu do mikrokontrolera Arduino należy wybrać posiadany rodziaj wyświetlacza poprzez usunięcie komentarza // przy odpowiednim wierszu. U  mnie był to wiersz (jak wyżej w tle) dla OLED 128x32 piksele podłączony w Arduino tj.: 
    U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED

  6. Efekt po uruchomieniu będzie jak poniżej: "Hello World"
    20191102 174944 OLED Efect SSD1306 500
    20191102 174944 OLED Efect SSD1306 Hello word 500

  7. Dla przejrzystości kodu można usunąć niepotrzebne komentarze i zmodyfikować napis...

  8. Uwaga! Zmiennych nie wyświetlimy poleceniem drawStr. Do tego przyda się funkcja print
        u8g2.setCursor(0, 20); //Pozycjonowanie kursora dla funkcji print
        u8g2.print(1234); //Wyświetlanie liczb i zmiennych - funkcja print (nie drawSTR)
  9. Więcej przydatnych funkcji i przykładów znajduje się pod adresem: LINK  lub ogólnie
    Można tu znaleźć funkcje do wyświetlania tekstu w różnych formatach i czcionkach oraz funkcje do rysowania linni, wielokątów i bitmap...
  10. Poniżej Kod na bazie przykładu ze środowiska Arduino (Copyright (c) 2016, Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.) z drobnymi modyfikacjami:
-------------
#include <U8g2lib.h>
 
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
 
//...
//U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 21, /* data=*/ 20, /* reset=*/ U8X8_PIN_NONE);   // Adafruit Feather M0 Basic Proto + FeatherWing OLED
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED
//U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);  // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED
//...
 
void setup(void) {
  u8g2.begin();
}
 
void loop(void) {
  u8g2.clearBuffer(); // Czyszczenie pamięci wewnętrznej
  u8g2.setFont(u8g2_font_ncenB08_tr); // Wybór czcionki 
  u8g2.drawStr(0,10,"Hello World!"); // Pisanie ale na razie tylko w pamięci wyświetlacza
    u8g2.setCursor(0, 20); //Pozycjonowanie kursora dla funkcji print
    u8g2.print(1234); //Wyświetlanie liczb i zmiennych - funkcja print (nie drawSTR)
  u8g2.sendBuffer(); // Transfer z pamięci na wy świetlacz - tu faktycznie wyświetla obraz
  delay(100);  
}
-------------
 
#include 
#include
 
#ifdef U8X8_HAVE_HW_SPI
#include
#endif
#ifdef U8X8_HAVE_HW_I2C
#include
#endif
 
// Należy usunąć komentarz w wierszu odpowiadającym podłączonemu wy świetlaczowi
// The complete list is available here: https://github.com/olikraus/u8g2/wiki/u8g2setupcpp
// Please update the pin numbers according to your setup. Use U8X8_PIN_NONE if the reset pin is not connected
//...
//U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 21, /* data=*/ 20, /* reset=*/ U8X8_PIN_NONE);   // Adafruit Feather M0 Basic Proto + FeatherWing OLED
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED
//U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);  // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED
///...
 
void setup(void) {
  u8g2.begin();
}
 
void loop(void) {
  u8g2.clearBuffer(); // Czyszczenie pamięci wewnętrznej
  u8g2.setFont(u8g2_font_ncenB08_tr); // Wybór czcionki 
  u8g2.drawStr(0,10,"Hello World!"); // Pisanie ale na razie tylko w pamięci wyświetlacza
    u8g2.setCursor(0, 20); //Pozycjonowanie kursora dla funkcji print
    u8g2.print(1234); //Wyświetlanie liczb i zmiennych - funkcja print (nie drawSTR)
  u8g2.sendBuffer(); // Transfer z pamięci na wy świetlacz - tu faktycznie wyświetla obraz
  delay(100);  
}

Miłej i twórczej zabawy !@

Po małej korekcie programu:
OLED PolSl AM 01


Źródła/surces:

  1. Strona autora biblioteki (ważne informacje, czcionki, ustawienia itd)https://github.com/olikraus/u8g2/wiki/u8g2reference 
  2. Podstrona z przykładami: https://github.com/olikraus/u8g2/wiki/u8g2reference#print
  3. YThttps://www.youtube.com/watch?v=MHogSbRPa28