SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Arduino poradnik

Wstęp

Teoria

Biblioteki

Komponenty

Czujniki i sensory

Rozwiązania i algorytmy

Narzędzia

Mikrokontrolery i Arduino IDE

Arduino i klony

Poradniki wideo

Reklama na Blogu

Najnowsze poradniki

Ostatnie komentarze

Ostatnie fotografie

polskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorywieliczka-szyb-danilowicza

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

  1. #define cs   10
  2. #define dc   9
  3. #define rst  8
  4.  
  5. #include <Adafruit_GFX.h>
  6. #include <Adafruit_ST7735.h>
  7. #include <SPI.h>
  8.  
  9. Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
  10.  
  11. void setup(void) {
  12.   tft.initR(INITR_REDTAB);
  13.   tft.fillScreen(ST7735_BLACK);
  14.   tft.setCursor(0, 0);
  15.   tft.setTextColor(ST7735_WHITE);
  16.   tft.setTextWrap(true);
  17.   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. ");
  18. }
  19.  
  20. 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 Komentarze
Avatar 1
Bartek Windows 7 / Safari 537.36
01 July 2014 - 11:49 Warszawa

A więc jakie są minusy korzystania ze sprzętowego SPI @ 5V bez translacji logiki do 3.3V? Może się spalić?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 30.0
01 July 2014 - 23:06 Bytom

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

Avatar 1
Bartek Windows / Safari 537.36
05 July 2014 - 17:30 Brak informacji

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

Avatar 1
Bartek Windows / Safari 537.36
05 July 2014 - 18:20 Brak informacji

Już działa, nie wiedziałem, że to zależy również od programu :)

Avatar 1
Łukasz Windows 7 / Safari 537.36
14 July 2014 - 18:38 Warszawa

Na wysyłkę z eBay za długo trzeba czekać ale na Allegro nie znalazłem.
Gdzie można to dostać w Polsce?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 30.0
14 July 2014 - 19:03 Bytom
Avatar 1
Łukasz Windows 7 / Safari 537.36
14 July 2014 - 19:41 Warszawa

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ć?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 30.0
14 July 2014 - 21:26 Bytom

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

Avatar 1
Łukasz Windows 7 / Safari 537.36
14 July 2014 - 23:09 Warszawa

Rozumiem, dziękuję za info. Czyli inwencja twórcza :)

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 30.0
17 July 2014 - 23:00 Bytom

nie ma sprawy :)

Avatar 1
Łukasz Windows 7 / Safari 537.36
18 July 2014 - 09:36 Warszawa

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 ?

Avatar 1
Łukasz Windows 7 / Safari 537.36
21 July 2014 - 09:27 Warszawa

A gdzie Pan kupił ten bufor wykorzystany w filmiku?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 30.0
23 July 2014 - 06:06 Bytom

na Allegro :)

Avatar 1
Łukasz Windows 7 / Safari 537.36
23 July 2014 - 11:47 Warszawa

Ok, jest. Źle wyszukiwałem po całej nazwie CD4050BE. Tak to nic nie znalazł. Ale tak \'CD4050\' to już lepiej :)

Avatar 1
Kuba Windows 7 / Safari 537.36
16 February 2016 - 18:41 Brak informacji

Jaka jest komenda na zamiane orientacji z pionowej na poziomą??

Avatar 1
pit Windows / Mozilla Firefox 50.0
20 November 2016 - 22:23 Brak informacji

tft.setRotation (1);

0,1,2,3 parametry obracają o 90 stopni

Avatar 1
Andrzej Windows 7 / Mozilla 11.0
30 November 2016 - 14:29 Brak informacji

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

Avatar 1
WojuG Windows / Mozilla Firefox 50.0
16 January 2017 - 08:11 Brak informacji

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

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 50.0
19 January 2017 - 18:44 Bytom

Niestety pomimo wyglądu, mogą być róże w nim zastosowane kontrolery - sam się kiedyś na to naciąłem.

Avatar 1
WojuG Windows / Mozilla Firefox 50.0
21 January 2017 - 14:31 Brak informacji

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

Avatar 1
Marc Windows 7 / Safari 537.36
26 September 2017 - 15:18 Warszawa

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.