- Wymagany sprzęt:
- Zapoznanie się z wyświetlaczami OLED:
- Sprzęt i połączenia:
- Programowanie wyświetlacza OLED SSD1306 dla Arduino:
Większość z nas byłaby zaznajomiona z wyświetlaczem LCD 16 × 2 z matrycą punktową, który jest używany w większości projektów do wyświetlania użytkownikowi niektórych informacji. Ale te wyświetlacze LCD mają wiele ograniczeń w tym, co mogą zrobić. W tym samouczku dowiemy się o wyświetlaczach OLED i jak z nich korzystać Arduino. Na rynku dostępnych jest wiele typów wyświetlaczy OLED i istnieje wiele sposobów ich uruchomienia. W tym samouczku omówimy jego klasyfikacje, a także, która będzie najlepiej pasować do Twojego projektu.
Wymagany sprzęt:
- Moduł wyświetlacza OLED 7pin 128 × 64 (SSD1306)
- Arduino UNO / Nano
- Płytka prototypowa
- Podłączanie przewodów
- Komputer / laptop
Zapoznanie się z wyświetlaczami OLED:
Termin OLED oznacza „ organiczną diodę elektroluminescencyjną” . Wykorzystuje tę samą technologię, która jest używana w większości naszych telewizorów, ale ma mniej pikseli w porównaniu z nimi. Fajnie jest mieć te fajnie wyglądające moduły wyświetlaczy, które można połączyć z Arduino, ponieważ dzięki temu nasze projekty będą wyglądać fajnie. Omówiliśmy tutaj cały artykuł dotyczący wyświetlaczy OLED i ich typów.
Używamy monochromatycznego 7-pinowego wyświetlacza OLED SSD1306 0,96 ”. Powodem wyboru tego wyświetlacza jest to, że może on pracować z trzema różnymi protokołami komunikacyjnymi, takimi jak tryb SPI 3-przewodowy, tryb czteroprzewodowy SPI i tryb IIC. W tym samouczku omówimy, jak używać modułu w trybie SPI 4-przewodowym, ponieważ jest to najszybszy i domyślny tryb komunikacji.
Piny i ich funkcje są wyjaśnione w poniższej tabeli.
Kod PIN |
Nazwa pinu |
Inne nazwy |
Stosowanie |
1 |
Gnd |
Ziemia |
Pin uziemienia modułu |
2 |
Vdd |
Vcc, 5 V. |
Pin zasilania (tolerowane 3-5 V) |
3 |
SCK |
D0, SCL, CLK |
Działa jako pin zegara. Używany zarówno dla I2C, jak i SPI |
4 |
SDA |
D1, MOSI |
Pin danych modułu. Używany zarówno do IIC, jak i SPI |
5 |
RES |
RST, RESET |
Resetuje moduł (przydatne podczas SPI) |
6 |
DC |
A0 |
Pin polecenia danych. Używany do protokołu SPI |
7 |
CS |
Chip Select |
Przydatne, gdy w protokole SPI używany jest więcej niż jeden moduł |
W tym samouczku po prostu będziemy obsługiwać moduł w trybie 4-Wire SPI, resztę zostawimy na inny tutorial.
Społeczność Arduino dała nam już wiele bibliotek, które można bezpośrednio wykorzystać, aby to znacznie uprościć. Wypróbowałem kilka bibliotek i stwierdziłem, że biblioteka Adafruit_SSD1306 była bardzo łatwa w użyciu i miała kilka opcji graficznych, dlatego użyjemy tego samego w tym samouczku. Ale jeśli twój projekt ma ograniczenia pamięci / szybkości, spróbuj użyć biblioteki U8g, ponieważ działa ona szybciej i zajmuje mniej pamięci programu.
Sprzęt i połączenia:
Schemat obwodu dla SSD1306 OLED relacje z Arduino jest bardzo proste i jest przedstawiony poniżej
Po prostu nawiązaliśmy komunikację SPI między modułem OLED a Arduino. Ponieważ OLED działa na 3 V-5 V i zużywa bardzo mało energii, nie potrzebuje zewnętrznego zasilania. Możesz po prostu użyć przewodów do wykonania połączenia lub użyć płytki prototypowej, której użyłem, aby łatwo było eksperymentować. Połączenie jest również wymienione w opowieści poniżej
S.Nr |
Nazwa pinu w module OLED |
Nazwa pinu w Arduino |
1 |
Gnd, Ground |
Ziemia |
2 |
Vdd, Vcc, 5 V. |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, Chip Select |
12 |
Uwaga: nie będzie można wizualizować żadnego podświetlenia / poświaty na module OLED po prostu go zasilając. Trzeba go poprawnie zaprogramować, żeby zauważyć jakiekolwiek zmiany na wyświetlaczu OLED.
Programowanie wyświetlacza OLED SSD1306 dla Arduino:
Gdy połączenia są gotowe, możesz rozpocząć programowanie Arduino. Jak wspomniano wcześniej, do pracy z tym modułem OLED będziemy używać biblioteki Adafruit i biblioteki GFX. Postępuj zgodnie z instrukcjami, aby przetestować wyświetlacz OLED.
Krok 1: Pobierz bibliotekę Adafruit i bibliotekę GFX z Github, korzystając z poniższego łącza
- Biblioteka Adafruit
- Biblioteka graficzna GFX
Krok 2: Powinieneś pobrać dwa pliki Zip. Teraz dodaj je do swojego Arduino, wykonując następujące czynności
Szkic -> Uwzględnij bibliotekę -> Dodaj bibliotekę Zip, jak pokazano poniżej. Następnie wybierz bibliotekę, którą właśnie pobraliśmy. W danym momencie możesz wybrać tylko jedną bibliotekę, dlatego musisz powtórzyć ten krok.
Krok 3: Uruchom przykładowy program, wybierając Plik-> Przykłady-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino, jak pokazano na poniższym obrazku.
Krok 4: Wewnątrz przykładowego programu w górnej linii 64 dodaj wiersz „#define SSD1306_LCDHEIGHT 64”, jak pokazano na poniższym obrazku.
Krok 5: Teraz prześlij program i powinieneś zobaczyć wyświetlacz OLED uruchamiający się z domyślnym przykładowym kodem Adafruit, jak pokazano na poniższym obrazku. Pełny film pracę jest podana na końcu.
Ten przykładowy program pokazuje wszystkie możliwe grafiki, które mogą być wyświetlane na ekranie OLED. Ten kod powinien wystarczyć do tworzenia bitmap, rysowania linii / okręgów / prostokątów, zabawy pikselami, wyświetlania znaków i ciągów z różnymi czcionkami i rozmiarem itp.
Jeśli chcesz lepiej zrozumieć Bibliotekę i jej funkcje, możesz przeczytać dalej. Każdy fragment kodu jest dzielony i wyjaśniany za pomocą linii komentarza. Pełny kod znajduje się na końcu tego artykułu
Wyświetlanie i czyszczenie ekranu:
Pisanie na ekranie OLED jest jak pisanie na czarnej tablicy, musimy wpisać wartości, a następnie wyczyścić je, zanim będzie można je nadpisać. Poniższe polecenia służą do zapisywania i czyszczenia wyświetlacza
display.display (); // Napisz do display.clearDisplay (); // wyczyść wyświetlacz
Wyświetlanie zmiennej znakowej:
Aby wyświetlić zawartość wewnątrz zmiennej, można użyć następującego kodu.
char i = 5; // zmienna do wyświetlenia display.setTextSize (1); // Wybierz rozmiar tekstu display.setTextColor (WHITE); // dla wyświetlania monochromatycznego możliwe jest tylko białe display.setCursor (0,0); // 0,0 to lewy górny róg wyświetlacza OLED.write (i); // Napisz zmienną do wyświetlenia
Rysowanie linii, koła, prostokąta, trójkąta:
Jeśli chcesz dodać symbole do swojego wyświetlacza, możesz użyć następującego kodu, aby narysować dowolne z poniższych
display.drawLine (display.width () - 1, 0, i, display.height () - 1, BIAŁY); // void drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, BIAŁY); // nieważne drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, BIAŁY); // void drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
Rysowanie ciągu na ekranie:
Poniższy fragment kodu może służyć do wyświetlania dowolnego komunikatu na ekranie w określonym miejscu i rozmiarze
display.setTextSize (2); // ustaw rozmiar tekstu display.setTextColor (WHITE); // ustawienie koloru display.setCursor (10,0); // Ciąg zacznie się od 10,0 (x, y) display.clearDisplay (); // Wymaż poprzednie wyświetlenie na ekranie display.println ("Circuit Digest"); // Tutaj wydrukuj ciąg „Circuit Digest” display.display (); // wyślij tekst na ekran
Wyświetlanie obrazu bitmapowego:
Jedną z nieufnych rzeczy, które można zrobić za pomocą modułu OLED, jest to, że można go używać do wyświetlania map bitowych. Poniższy kod służy do wyświetlania obrazu bitmapowego
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B0111100, B001100, B0111100, B11100, B1110011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, color);
Jak widać, aby wyświetlić obraz, dane bitmapy muszą być zapisane w pamięci programu w postaci dyrektywy PROMGMEM. Mówiąc najprościej, musimy poinstruować wyświetlacz OLED, co zrobić z każdym pikselem, przekazując mu sekwencję lub wartości z tablicy, jak pokazano powyżej. Ta tablica będzie zawierała dane bitmapy obrazu.
Może się to wydawać skomplikowane, ale za pomocą narzędzia internetowego bardzo łatwo jest przekonwertować obraz na wartości bitmapowe i załadować je do powyższej tablicy.
Po prostu załaduj obraz i dostosuj ustawienia, aby uzyskać preferowany podgląd obrazu. Następnie kliknij „Generuj kod”, skopiuj kod i wklej go do swojej tablicy. Prześlij program i gotowe. Próbowałem wyświetlić logo Batmana i tak się skończyło.
Wciąż jest wiele rzeczy, które możesz zrobić z tymi bibliotekami. Aby poznać wszystkie możliwości, odwiedź stronę Prymitywy graficzne Adafruit GFX.
Mam nadzieję, że masz to uruchomione i gotowe do wdrożenia wyświetlacza OLED w niektórych swoich projektach. Jeśli masz jakiś problem, podziel się nimi w sekcji komentarzy, a ja postaram się jak najlepiej je poprawić.