Wyświetl obraz na ekranie OLED z esptop 10 za pomocą Arduino IDE

Wyświetl obraz na ekranie OLED z esptop 10 za pomocą Arduino IDE
ESP32 to mała kompaktowa płyta mikrokontrolera z minimalnymi wymaganiami zasilania. W ciągu ostatnich kilku lat ESP32 odniósł ogromny sukces ze względu na wszechstronność i łatwość użytkowania. W wielu projektach, w których produkcja musi być wyświetlana na monitorze szeregowym. Więc zamiast tego możemy połączyć wyświetlacz OLED z ESP32. Ta lekcja będzie przewodnikiem o interfejsie ESP32 z I2C 0.96 ”wyświetlacz OLED.

Ta lekcja obejmuje następujące tematy:

  • 1: Wprowadzenie do wyświetlacza OLED
  • 2: Moduł wyświetlacza OLED do okablowania do ESP32
  • 3: Instalowanie wymaganych bibliotek
  • 4: Sprawdź adres OLED I2C
  • 5: Wyświetl obraz na ekranie OLED z ESP32 za pomocą Arduino IDE
  • 5.1: Konwersja obrazu na kod sześciokątny
  • 5.2: Kod
  • 5.3: Próbka kodu Arduino do wyświetlania obrazu
  • 5.4: Wyjście

1: Wprowadzenie do wyświetlacza OLED

Zanim najpierw przeprowadzimy się dalej, musimy wiedzieć, co OLED (Dioda emitacji światła organicznego) Wyświetla. Wyświetlacze OLED są używane jako alternatywa dla LCD. Diody OLED są używane do wytwarzania lekkich wyświetlaczy na ekranach OLED. Ekran LCD wykorzystuje podświetlenie do oświetlania pikseli, podczas gdy wyświetlacze OLED mają własne, emisyjne diody LED. Istnieją setki samozilinujących diod LED. Aby wyświetlić obrazy i jasność tekstu tych diod LED, można kontrolować piksel przez piksel.

Teraz, jak znamy podstawy związane z wyświetlaczem OLED. Kolejnym krokiem jest przewód ESP32 z modułem wyświetlacza OLED.

2: Moduł wyświetlacza OLED do okablowania do ESP32

Wyświetlacz OLED ma głównie dwa różne protokoły komunikacji. Dwa protokoły to I2C i SPI. Szeregowy interfejs peryferyjny (SPI) jest ogólnie szybszy niż I2C, ale woleliśmy I2C niż protokół SPI, ponieważ wymagał mniejszej liczby pinów.

Następujący obraz ilustruje schemat połączenia ESP32 z 128 × 64 pikseli (0.96 ") wyświetlacz OLED.

Poniżej znajduje się tabela połączeń:

Po interfejsach ESP32 z wyświetlaczem OLED, następnym krokiem na liście jest zainstalowanie wszystkich wymaganych bibliotek dla programowania ESP32 za pomocą Arduino IDE.

3: Instalowanie wymaganych bibliotek

Wiele bibliotek jest dostępnych w Arduino IDE do programu ESP32 z wyświetlaczem OLED. Tutaj będziemy używać dwóch bibliotek z Adafruit: SSD1306 i GFX Library.

Teraz w Arduino IDE Open Library Manager i wyszukaj bibliotekę SSD1306. Zainstaluj bibliotekę SSD1306 według Adafruit ze paska wyszukiwania.

Alternatywnie można również przejść do: Szkic> Dołącz bibliotekę> Zarządzaj bibliotekami

Następna biblioteka musimy zainstalować GFX Biblioteka Adafruit.

Po pomyślnym zainstalowaniu obu bibliotek następnym krokiem jest sprawdzenie adresu I2C, w którym ESP32 jest podłączony.

4: Sprawdź adres OLED I2C

I2C oznacza międzyintegrowaną komunikację obwodów. Za pomocą I2C możemy interfejs wiele urządzeń przez 2 przewody. Jednak podłączanie ich każdego urządzenia I2C musi użyć osobnego adresu I2C. Ten adres waha się od 0 do 127. Na przykład, jeśli mamy dwa różne urządzenia I2C przy użyciu tego samego adresu I2C, nie można je podłączyć na tej samej linii I2C.

Przed interfejsem ESP32 z urządzeniami I2C pamiętaj, aby najpierw sprawdzić adres I2C. Aby sprawdzić adres I2C podłączony wyświetlacz OLED podłączony ESP32 z komputerem, prześlij kod podany w artykule, sprawdź adres I2C za pomocą Arduino IDE.

Po przesłaniu adresu kodu I2C można zobaczyć w monitorze szeregowym. Tutaj w naszym przypadku wyświetlacz OLED jest podłączony pod adresem I2C (0x3c).

Użyjemy wspomnianego adresu I2C do wyświetlacza OLED w kodzie Arduino.

5: Wyświetl obraz na ekranie OLED z ESP32 za pomocą Arduino IDE

Pierwszym krokiem, który jest potrzebny do wyświetlenia obrazu na ekranie OLED, jest konwersja obrazu na kod sześciokątny. Korzystając z dowolnego obrazu online do konwertera sześciokątnego.

1: Konwersja obrazu na kod sześciokątny

Aby przekonwertować obraz na kod szesnastkowy. Teraz wykonaj kroki w celu uzyskania kodu sześciokątnego dla swojego obrazu.

Krok 1: Kliknij tutaj, aby odwiedzić bezpłatny konwerter obrazu2cpp.

Krok 2: Wybierz obraz, który chcemy wyświetlić na OLED.

Krok 3: Po wybraniu obrazu Kliknij otwórz.

Krok 4: W ustawieniu obrazu ustaw wymiary na 128 x 64. Jasność może być ustawiona zgodnie z zalecaną liczbą obrazu wynosi około 150.

Skal obrazu zgodnie z rozmiarem i w celach informacyjnych Zobacz podgląd wyjściowy.

Krok 5: Teraz ustaw format wyjściowy kodu w kodzie Arduino i prefiks jako bitmap. Następnie kliknij wygeneruj kod. Wyjściowe kod hex można skopiować z okna wyjściowego.

Wymień skopiowany kod sześciokątny w przykładowym kodzie Arduino IDE.

2: Kod

Teraz otwórz Arduino IDE i wklej dany kod. Pamiętaj, aby zastąpić kod sześciokątny na obraz, który musisz wyświetlić na ekranie OLED.

/****** Linuxhint.Com ********/
#włączać
#włączać
#włączać
#definicja Screen_Width 128
#definicja ekranu_height 64
ADAFRUT_SSD1306 Wyświetlacz (Screen_Width, Screen_Height i Wire, -1);
Static const uint8_t image_hex_array [1024] =
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfd, 0xb0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xfc, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x4f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0x8f, 0x3e, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x0f, 0x1e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x8f, 0xbe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xff, 0xe6, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x3f, 0x8e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x00, 0x0e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x80, 0x3e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xe0, 0x7e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x7f, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcf, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x3f, 0xf9, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcf, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x3f, 0xf8, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xf8, 0xff, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x0c, 0xcf, 0x8f, 0x3e, 0x47, 0x90, 0x1e, 0x3c, 0x38, 0x1f, 0x8e, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x0c, 0xce, 0x03, 0x3e, 0x47, 0x90, 0x06, 0x30, 0x18, 0x1f, 0x1e, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf0, 0x3c, 0xcc, 0x03, 0x3e, 0x47, 0x90, 0x06, 0x20, 0x08, 0x3f, 0x1f, 0x81, 0xff, 0xff, 0xff, 0xff,
0xf0, 0xfc, 0xcc, 0xf1, 0x3e, 0x60, 0x10, 0xe2, 0x23, 0x88, 0xfe, 0x3f, 0xe1, 0xff, 0xff, 0xff, 0xff,
0xf0, 0x3c, 0xcc, 0xf9, 0x3e, 0x60, 0x31, 0xe2, 0x23, 0xc8, 0xfe, 0x3f, 0x81, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1c, 0xcc, 0xf9, 0x3e, 0x60, 0x11, 0xe2, 0x23, 0xc8, 0xfc, 0x7e, 0x07, 0xff, 0xff, 0xff, 0xff,
0xff, 0x0c, 0xcc, 0xf9, 0x1c, 0x47, 0x91, 0xe2, 0x23, 0xc8, 0x7c, 0x7e, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcc, 0xf9, 0x80, 0xc7, 0x91, 0xe2, 0x23, 0xcc, 0x18, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcc, 0xf9, 0xc1, 0xc7, 0x91, 0xe2, 0x23, 0xc6, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf3, 0x37, 0xcf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;
void setup ()
Seryjny.rozpocząć (115200); // Wskaźnik transmisji dla seryjnej komunikacji
Jeśli(!wyświetlacz.początek (SSD1306_SWITCHCAPVCC, 0x3C))
Seryjny.println (f („alokacja ssd1306 nie powiodła się”));
Do(;;);

Opóźnienie (2000); // opóźnienie 2 sekundy
wyświetlacz.clearDisplay (); // Wyczyść bufor wyświetlacza
wyświetlacz.Drawbitmap (0, 0, image_hex_array, 128, 64, 1);
wyświetlacz.wyświetlacz();

void Loop ()

Kod rozpoczął się od zaimportowania niezbędnych bibliotek, które zainstalowaliśmy wcześniej. Dwie biblioteki obejmują bibliotekę drutu i Adafruit. Biblioteki drutowe pozwalają nam korzystać z I2C, podczas gdy Adafruit pomaga wyświetlać tekst pisany na ekranie.

Następne następujące polecenie jest napisane:

ADAFRUT_SSD1306 Wyświetlacz (Screen_Width, Screen_Height i Wire, -1);

Zawiera Screen_Width I Screen_height zmienne. Korzystając z tych zmiennych, zdefiniowaliśmy rozmiar wyświetlacza OLED. Tutaj użyliśmy wyświetlacza OLED 128 × 64. Po tym &Drut Obiekt jest zdefiniowany dla wyświetlania.

Ostatni parametr zawiera (-1), Ten wyświetlacz, którego używamy ekranu OLED, nie ma zewnętrznego przycisku resetowania. W przypadku przycisku resetowania na wyświetlaczu OLED. Przekażemy ten parametr do szpilki GPIO. Po naciśnięciu przycisku resetowania ekran OLED wyświetli tekst.

W połowie kodu zawarliśmy kod heksowy obrazu, a następnie zainicjowaliśmy komunikację I2C na adres I2C (0x3c) definiuje się, co znaleźliśmy wcześniej za pomocą kodu skanera I2C.

W ostatnich wierszach kodu tablica sześciokątna jest drukowana na OLED za pomocą funkcji bitmap.

3: Próbka kodu Arduino do wyświetlania obrazu

Oto kod podany do interfejsu OLED z ESP32. W poniższym szablonie kodu Wymień kod sześciokątny obrazu, który chcesz pokazać na ekranie OLED.

/****** Linuxhint.Com ********/
#włączać
#włączać
#włączać
#definicja Screen_Width 128
#definicja ekranu_height 64
ADAFRUT_SSD1306 Wyświetlacz (Screen_Width, Screen_Height i Wire, -1);
Static const uint8_t image_hex_array [1024] =
/*******
*******
*******
[Wklej kod sześciokątny dla obrazu tutaj]
*******
*******
*******/
;
void setup ()
Seryjny.rozpocząć (115200); // Wskaźnik transmisji dla seryjnej komunikacji
Jeśli(!wyświetlacz.początek (SSD1306_SWITCHCAPVCC, 0x3C))
Seryjny.println (f („alokacja ssd1306 nie powiodła się”));
Do(;;);

Opóźnienie (2000); // opóźnienie 2 sekundy
wyświetlacz.clearDisplay (); // Wyczyść bufor wyświetlacza
wyświetlacz.Drawbitmap (0, 0, image_hex_array, 128, 64, 1);
wyświetlacz.wyświetlacz();

void Loop ()

4: Wyjście

Tutaj, w Output, widzimy oficjalny obraz logo Linuxhint, który wcześniej przekonwertowaliśmy na kod szesnasty.

Z powodzeniem wyświetliśmy obrazy na wyświetlaczu OLED I2C. Używając tych samych kroków dowolne obrazy o prawidłowym proporcji można wyświetlić na ekranie OLED.

Wniosek

Wyświetlacz OLED to świetny sposób na wyświetlanie wyjść bez potrzeby monitu szeregowego lub komputera. Wyświetlacze OLED są wyposażone w dwa różne protokoły I2C i SPI. Wyświetlacze OLED I2C są preferowane ze względu na mniejszą liczbę przewodów. Ta lekcja zawiera wszystkie kroki wymagane do wyświetlania obrazu na wyświetlaczu OLED I2C z ESP32 za pomocą Arduino IDE.