Ponieważ tak się złożyło, że jeden z czytelników mojego bloga, który chce poznać w praktyce PIC32MM, zwrócił się do mnie z prośbą o pomoc w pozyskaniu biblioteki do obsługi wyświetlacza OLED 1.3 opartego na sterowniku SH1106. Biblioteka taka powstała na bazie biblioteki zamieszczonej w zasobach LibStock.
Ja tylko zrobiłem pełną konwersję tej biblioteki do współpracy z 32-bitowym mikrokontrolerem PIC32MM firmy Microchip.
Co ciekawe działanie biblioteki sprawdzane było po stronie czytelnika bo ja takiego wyświetlacza akurat nie posiadałem :) Dzięki temu zadaniu poznałem potęgę GitHuba i jego superancką implementację w MPLABX-IDE. Upewniło mnie to w przekonaniu , że środowisko Microchipa jest bardzo wygodne i przyjemnie się w nim programuje. Wyświetlacz jak wyświetlacz jest OLED-owy i jest chiński ,co nie gwarantuje , że w kolejnych partiach rzucanych na rynek nie zmieni się np. ilość pinów czy ich funkcjonalność. Nie mniej podstawową zaletą jest tutaj cena i jak na razie łatwa dostępność.
Na początek garść podstawowych informacji :
Specyfikacja
Sterownik | SH1106 |
---|---|
Sterowanie | 3-wire SPI, 4-wire SPI, I2C |
Rozdzielczość | 128*64 |
Wymiar wyświetlacza | 1.3" |
Kolor pixeli | niebieski |
Kąt widzenia | >160° |
Temp. pracy (℃) | -30~70 |
Temp. przechowywania (℃) | -30~80 |
Napięcie pracy | 3.3V / 5V |
Opis wyprowadzeń
PIN NO. | SYMBOL | DESCRIPTION |
---|---|---|
1 | VCC | Napięcie zasilania (3.3~5V power input) |
2 | GND | Masa |
3 | NC | Nie podłączony |
4 | DIN | wejście danych |
5 | CLK | wejście sygnału zegarowego |
6 | CS | Chip select, aktywny - stan niski |
7 | D/C | sygnał: komenda\dane, low level for command, high level for data |
8 | RES | Reset, aktywny - stan niski |
Ustawienie interfejsu komunikacyjnego
Mode/Interface | BS0/BS1 | DIN | SCK |
---|---|---|---|
3-wire SPI | 1/0 | MOSI | SCLK |
4-wire SPI | 0/0 | ||
I2C | 0/1 | SDA | SCL |
Sposobem komunikacji jaki został wybrany to SPI 4-wire. Aby uzyskać taki sposób komunikacji należy dokonać na spodzie wyświetlacza odpowiednich krosowań zgodnie z namalowaną tabelką:
Po stronie MCU nie będziemy korzystać ze sprzętowego SPI tylko z jego prostej programowej symulacji.
Piny jakie wykorzystałem do sterowania wyświetlaczem to :
D_C --> RA15
DIN --> RB10
CS --> RB11
CLK --> RB13
RST --> RC9
Jeśli chcemy zmienić w bibliotece pinologię musimy zmiany uwzględnić w pliku sh1106.h i pin_manager.c
W bibliotece mamy zaimplementowane czcionki więc nie musimy się trudzić aby je dziergać samemu. Poniżej efekt działania biblioteki u czytelnika na PIC32MM :
W zasadzie nie ma co tutaj więcej się rozczulać , jeśli ktoś natknie się na ten wyświetlacz i tę randkę połączy z PIC32MM to zapraszam do korzystania z biblioteki.
Na GitHub załączyłem w linku poniżej gotowy projekt do MPLABX-IDE z biblioteką i prostym przykładem jej użycia. Ten projekt można ściągnąć z GitHub-a do MPLABX-IDE za pomocą prostej operacji Team --> Git --> Clone
Na GitHub załączyłem w linku poniżej gotowy projekt do MPLABX-IDE z biblioteką i prostym przykładem jej użycia. Ten projekt można ściągnąć z GitHub-a do MPLABX-IDE za pomocą prostej operacji Team --> Git --> Clone
Pozdrawiam
picmajster.blog@gmail.com
Linki :
Oryginalna biblioteka - autor: Nigel Mercier
Biblioteka po mojej przeróbce dla PIC32MM
Dokumentacja producenta
Elektronika Praktyczna - projekt z wykorzystaniem OLED 1.3
Elektronika Praktyczna - artykuł o OLED 1.3 na SH1106
wypróbuje
OdpowiedzUsuń