Ta lekcja obejmuje następujące tematy:
1: Wprowadzenie do wyświetlacza OLED
Zanim najpierw przeprowadzimy się dalej, musimy wiedzieć, czym jest wyświetlacz OLED. OLED (Dioda organiczna emitują światło) Wyświetlacze 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 poszukaj biblioteki OLED 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ć Biblioteka GFX przez 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.
Ważne jest, 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 kodu pojawi się następujące dane wyjściowe. 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 kod QR na ekranie OLED za pomocą ESP32 za pomocą Arduino IDE
Pierwszym krokiem, który jest potrzebny do wyświetlenia dowolnego kodu QR na ekranie OLED, jest konwersja obrazu kodu QR na kod sześciokątny. Korzystając z dowolnego obrazu online do konwertera sześciokątnego.
Ale przed tym najpierw musimy utworzyć przykładowy kod QR.
1: Tworzenie kodu QR
Do tworzenia kodu QR dostępnych jest wiele bezpłatnych narzędzi online. Oto bezpłatny tekst do generatora kodu QR.
Za pomocą tego narzędzia dowolne tekst lub link można przekonwertować na kod QR. Tutaj utworzyliśmy kod QR dla adresu witryny Linuxhint.
2: Konwertowanie kodu QR na kod sześciokątny
Aby przekonwertować dowolny kod QR na kod sześciokątny, możemy użyć dowolnego narzędzia online, lub można również przekonwertować obraz kodu QR na kod sześciokątny za pomocą narzędzia Windows Paint. Teraz wykonaj kroki w celu uzyskania kodu sześciokątnego dla obrazu kodu QR.
Krok 1: Kliknij tutaj, aby odwiedzić bezpłatny konwerter obrazu2cpp.
Krok 2: Wybierz obraz kodu QR, który chcemy wyświetlić na OLED.
Krok 3: Po wybraniu obrazu kodu QR 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.
Skalować obraz kodu QR zgodnie z rozmiarem i w celach informacyjnych patrz 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.
3: Kod
Teraz otwórz Arduino IDE i wklej poniższy kod. Pamiętaj, aby zastąpić kod sześciokątny na obraz kodu QR, 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,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x80, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x18, 0x03, 0xe1, 0x0c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x03, 0xf0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xf8, 0x63, 0x1c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe0, 0xfc, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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żywamy 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 kodu QR, 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.
4: Przykładowy kod Arduino dla wyświetlania obrazu kodu QR
Oto kod podany do interfejsu OLED z ESP32. Musisz wymienić kod sześciokątny obrazu kodu QR, który chcesz wyświetlić na ekranie.
/****** 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 ()
5: Wyjście
Tutaj, na wyjściu, możemy zobaczyć kod QR wyświetlany na ekranie OLED. To jest ten sam kod QR, który wcześniej przekonwertowaliśmy na kod szesnasty.
Z powodzeniem wyświetliśmy obraz kodu QR na wyświetlaczu OLED I2C. Korzystanie z tych samych kroków dowolne kod QR o prawidłowym proporcji można wyświetlić na ekranie OLED.
6: Skanowanie kodu QR z wyświetlacza OLED
Po wyświetleniu kodu QR ostatnim krokiem jest sprawdzenie, czy działa, czy nie dla tego smartfona. Większość smartfonów jest wyposażona w wstępnie zainstalowany skaner kodu QR, jeśli nie jest dostępny, można go łatwo pobrać z App Store.
Teraz umieść aparat na kodzie QR.
Jeśli pomyślnie zeskanował, pojawi się następujący tekst. Jest to dokładnie ten sam tekst, który zapisaliśmy podczas tworzenia kodu QR.
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. Wyświetlacz OLED może być używany do wyświetlania informacji na ekranie, takich jak kod QR lub kod kreskowy za pomocą. Ta lekcja zawiera wszystkie kroki wymagane przy wyświetlaniu obrazu kodu QR na wyświetlaczu OLED I2C z ESP32 za pomocą Arduino IDE.