Wyświetlacz TFT HY-1.8 SPI
Dla platformy Arduino istnieje spora ilość wyświetlaczy TFT, których cena zazwyczaj przekracza 100,00 złotych. Są to przeważnie gotowe rozwiązania w postaci shieldów nakładanych na Arduino, nie wymagających od nas praktycznie żadnego wysiłku. Są one jednak stosunkowo drogie. Nieco tańszym rozwiązaniem jest 1.8" wyświetlacz TFT oznaczony symbolem HY-1.8 SPI o rozdzielczości 128x160 z kontrolerem zgodnym z ST7735R. Wyświetlacz można łatwo znaleźć na eBay za £2.89 lub na Allegro za 35,00 złotych.
Po drugiej stronie płytki znajdziemy również slot na karty SD z którego można wyświetlać obrazy zapisane w formacie BMP.
Do obsługi tego wyświetlacza możemy posłużyć się standardową biblioteką Adafruit-ST7735-Library oraz Adafruit-GFX-Library. Aby zmusić do działania ten model wyświetlacza potrzebujemy jedynie 4 lub 5 wyjść Arduino.
Poziomy logiczne 5V czy 3.3V?
W sieci jest kilka informacji na temat tego wyświetlacza. Według niektórych osób, sprawuje się on zarówno dobrze z logiką 5V jaką operuje Arduino UNO R3 jak i 3.3V spotykaną w Raspberry Pi i Arduino DUE.
Nigdzie nie znalazłem za to informacji na temat dopuszczalnej tolerancji poziomów logicznych w tym wyświetlaczu, jednak na odwrocie możemy znaleźć zworkę JP1 za pomocą której możemy zewrzeć lub rozewrzeć regulator napięcia AMS1117 3.3V. Regulator ten według danych katalogowych znosi napięcie wejściowe do 5V. Załatwia to w pewnym sensie napięcie zasilania kontrolera, jednak nijak nie reguluje on 5V logiki do logiki 3.3V.
Zworka domyślnie jest rozwarta, co powoduje regulację napięcia zasilania do 3.3V. Spotkałem się z opinią, że przy zasilaniu 3.3V można regulator pominąć poprzez zwarcie zworki JP1, jednak po wielu godzinach zabawy nie doszukałem się wyraźnej przyczyny takiego postępowania.
Po testach okazało się, że faktycznie działa on poprawnie z logiką 5V, ale tylko w przypadku, gdy skorzystamy ze sprzętowego SPI w Arduino UNO R3 (sclk = 13 / sid = 11). W przeciwnym wypadku występują problemy w postaci migotania obrazu w trakcie przesyłania danych. Warto jednak zaznaczyć, że korzystając ze sprzętowego SPI uzyskamy o wiele większą prędkość działania (porównanie niżej).
Aby jednak spać spokojnie, w prosty sposób możemy przekonwertować logikę 5V na logikę 3.3V stosując prosty bufor CD4050BE i zasilając całość napięciem 3.3V. Do podświetlania TFT zostawimy natomiast zasilanie 5V.
Układ połączeń
Fragment kodu dla sprzętowego SPI w Arduino UNO R3
- #define cs 10
- #define dc 9
- #define rst 8
- #include <Adafruit_GFX.h>
- #include <Adafruit_ST7735.h>
- #include <SPI.h>
- Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
- void setup(void) {
- tft.initR(INITR_REDTAB);
- tft.fillScreen(ST7735_BLACK);
- tft.setCursor(0, 0);
- tft.setTextColor(ST7735_WHITE);
- tft.setTextWrap(true);
- tft.print("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ");
- }
- void loop() {}
Porównanie prędkości działania Hardware SPI vs SPI
Kilka uwag
- Sygnał LCD_RESET możemy również uzyskać bezpośrednio z pinu RESET w Arduino znajdujący się obok sekcji zasilania - zaoszczędzimy tym samym jeden pin,
- Wyświetlacz działa dobrze przy zasilaniu i logice 5V tylko przy sprzętowym SPI,
- Nie jest konieczne zwieranie zworki JP1 przy zasilaniu i logice 3.3V,
- Sterowanie za pomocą sprzętowego SPI jest o wiele szybsze niż w przypadku standardowych pinów cyfrowych.
Reklama
Komentarze
A więc jakie są minusy korzystania ze sprzętowego SPI @ 5V bez translacji logiki do 3.3V? Może się spalić?
Nie zauważyłem minusów, bufor dałem dla pewności, ale przy długich zabawach nie upaliłem logiki 5v. cd4050 drogi nie jest więc nic nie szkodzi z niego skorzystać, a człowiek śpi spokojniej
A da się jakoś użyć sprzętowe SPI pod Arduino Mini Pro 328/5V? :P
Na razie obraz migocze, LCD podłączyłem w ten sposób:
SCLK -> 13
MOSI (SDA) -> 11
CS -> 4
DC (AO) -> 8
RST -> RESET
VCC -> 5V
GND -> GND
LED -> 5V
Już działa, nie wiedziałem, że to zależy również od programu :)
Na wysyłkę z eBay za długo trzeba czekać ale na Allegro nie znalazłem.
Gdzie można to dostać w Polsce?
Dziękuję. Mam jeszcze jedno pytanie. Zazwyczaj dużym problemem jest upakowanie gotowego produktu/wynalazku :) w jakieś ładne szaty.
Jak sobie inni radzą z tym problemem? A może nie ma na to dobrego rozwiązania, bo w sumie nie wiadomo jak szeroki wyjdzie końcowy produkt. Ale nie sądzę, że wszystko zawsze musi być na wierzchu i nie znajdzie się ktoś, kto sprzedaje pudełeczka, które jako tako będą pasować?
Ja staram się znaleźć jakąś gotową obudowę. Nie ma siły, aby nie znaleźć czegoś odpowiedniego. Dla przykładu: http://www.jarzebski.pl/blog/2013/08/04/soundball-equalizer-i-oswietlenie-relaksacyjne.html
Rozumiem, dziękuję za info. Czyli inwencja twórcza :)
LCD już zamówiony, niedługo powinien przyjść :) Ale mam problem ze znalezieniem buforu CD4050BE. Jedynie na eBay ale to długo trzeba czekać. Może jednak coś ominąłem ?
A gdzie Pan kupił ten bufor wykorzystany w filmiku?
Ok, jest. Źle wyszukiwałem po całej nazwie CD4050BE. Tak to nic nie znalazł. Ale tak \'CD4050\' to już lepiej :)
Jaka jest komenda na zamiane orientacji z pionowej na poziomą??
tft.setRotation (1);
0,1,2,3 parametry obracają o 90 stopni
Nota katalogowa kontrolera mówi wyraźnie:
System voltage min=2.6, typ=2.75 max=3.3
Interface operation voltage min=1.65, typ=1.9, max=3.3
Pozdrawiam
Andrzej
Witam mam problem z tym wyświetlaczem kupiłem szt 1 i po podłączeniu do arduino załadowaniu testowego programiku świeci tylko na biało myślałem ze coś skopałem bo nie zastosowałem bufora. Zakupiłem jeszcze jedna sztukę wyświetlacza i bufor i dalej świeci na biało :( brak jakiej wyświetlanego tekstu czy grafiki podejrzewam że chodzi o regulacje kontrastu jakiej funkcji użyć by regulować kontrast ? czy może przyczyna leży gdzieś indziej ? Pozdrawiam Wojciech
Niestety pomimo wyglądu, mogą być róże w nim zastosowane kontrolery - sam się kiedyś na to naciąłem.
No i sprawa rozwiązana wyświetlacz działa :) Problem, wraz z wyświetlaczem zakupiłem nowe przewody. Pan Chińczyk zapomniał w kilku zdjąć izolacje przed zaciśnięciem przewodu na pinie. A ja się nakombinowałem jak głupi pozdrawiam i życzę udanych eksperymentów
Wojciech
Trafilem wersje zasilana w calosci 3.3v (logika, podswietlenie) przy zasilaniu +5v nie chcial dzialac, a podswietlenie sie gotowalo- warto zatem sprawdzic, czy calosc nie dziala na nizszym napieciu.