Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Biały ekran na wyświetlaczu TFT 3,2" ILI9341 dla Arduino

daadane 25 Kwi 2017 20:17 1173 18
  • #1 25 Kwi 2017 20:17
    daadane
    Poziom 6  

    Witam, mam problem z wyświetlaczem LCD 3,2" 320x240 TFT_320QVT_9341 z panelem dotykowym. W dniu dzisiejszym doszła do mnie paczka z wyświetlaczem i shieldem TFT LCD MEGA SHIELD V2.2 . Sprawa niby bardzo prosta bo już wcześniej pobrałem biblioteki obsługujące wyświetlacz (UTFT) oraz dotyk (URTouch), jak się jednak okazało trochę się pomyliłem. Po złożeniu układu na Arduino Mega2560 i wgraniu jakiegokolwiek przykładu z biblioteki UTFT wyświetlacz wyświetla białe tło i blado się podświetla. Nie ma żadnej reakcji z jego strony. Podczas inicjalizacji wyświetlacza funkcja wymaga podania 5 parametrów, Model, RS, WR, CS, RST. Cztery ostatnie to tylko numery pinów na Arduino, które będą komunikowały się z wyświetlaczem. Nad tym wole się nie rozwodzić bo doszedłem do ogólnego wniosku, że numery pinów mam według zaleceń biblioteki więc tego się trzymam. Cała zabawa i zarazem problem zaczyna się przy podaniu modelu. Jak już wcześniej pisałem jest to ILI9431 a jego obsługę potwierdza biblioteka kodem w plikach UTFT.cpp i UTFT.h. Po podaniu wszystkich parametrów, które teoretycznie są wszystkimi potrzebnymi do uruchomienia ekran na wyświetlaczu nadal jest bez zmian - blade białe tło. Próbowałem już chyba wszystkiego łącznie z tym, że zmieniałem w funkcji modele z całej rodziny ILI. Nie pamiętam na którym dokładnie ekran zaczął migać na czarno - jedyna jego dzisiejsza reakcja. Siedzę nad tym 5 godzinę i zaczyna brakować mi pomysłów. Jeżeli ktoś tworzył jakieś układy z tym zestawem to bardzo proszę o pomoc. P.S. Sam dotyk działa bez żadnych zarzutów. Bardzo rzadko tylko wywala pozycje x =-1 y=-1. Gdyby jednak przymknąć na to oko i spojrzeć pod kątem ceny i jakości to dotyk działa według mnie rewelacyjnie. Tylko ten wyświetlacz....... Proszę o pomoc.

  • #2 25 Kwi 2017 20:20
    Piotrus_999
    Poziom 39  

    daadane napisał:
    jedyna jego dzisiejsza reakcja. Siedzę nad tym 5 godzinę i zaczyna brakować mi pomysłów
    Podam jeden - pobrać DS-a i napisać sterownik. W pięć godzin już byś pewnie jakiś pixel zapalił. A za to ile byś się nauczył. Kopiując kody z lewa na prawo odkryłeś jedną prawdę - aby programować uC trzeba programować. Kopiowanie nie wystarcza!!!

  • #3 25 Kwi 2017 20:28
    daadane
    Poziom 6  

    Rozumiem, jest to jakiś pomysl. Nie rozumiem tylko jednego. Biblioteka UTFT obsługuje ten wyświetlacz a mimo tylu prób i szukania informacji w internecie nie udało się go obudzić. Mam ściągnięty bardzo fajny projekt oparty na tej bibliotece i bardzo mi zależy na tym żeby jednak to na niej zadziałał.

  • #4 26 Kwi 2017 00:07
    tzok
    Moderator Samochody

    Zacząłbym od sprawdzenia czy domyślne numery pinów TFT odpowiadają tym na shieldzie. Zwłaszcza, że chyba Mega2560 ma gdzie indziej piny od SPI niż UNO.

  • #5 26 Kwi 2017 00:26
    daadane
    Poziom 6  

    Sam shield wykonany jest właśnie do podłączenia dokładnie tego wyświetlacza do arduino mega 2560 :/

    Code:

    // UTFT_Demo_320x240
    // Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
    // web: http://www.RinkyDinkElectronics.com/
    //
    // This program is a demo of how to use most of the functions
    // of the library with a supported display modules.
    //
    // This demo was made for modules with a screen resolution
    // of 320x240 pixels.
    //
    // This program requires the UTFT library.
    //

    #include <UTFT.h>

    // Declare which fonts we will be using
    extern uint8_t SmallFont[];

    // Set the pins to the correct ones for your development shield
    // ------------------------------------------------------------
    // Standard Arduino Mega/Due shield            : <display model>,38,39,40,41
    // CTE TFT LCD/SD Shield for Arduino Due       : <display model>,25,26,27,28
    // Teensy 3.x TFT Test Board                   : <display model>,23,22, 3, 4
    // ElecHouse TFT LCD/SD Shield for Arduino Due : <display model>,22,23,31,33


    Tu są komentarze z początku przykładu z biblioteki UTFT. W przypadku podpięcia Arduino Mega i Shielda pod wyświetlacz piny powinny być takie : <display model> ,38,39,40,41.

  • #7 26 Kwi 2017 01:45
    daadane
    Poziom 6  

    Dziękuję wam za pomoc. Coś z tym wyświetlaczem jest jednak nie tak... Sprawdziłem piny, ok. adasikp - byłem, czytałem, pobrałem zmodyfikowaną bibliotekę i nic! Cały czas blady wyświetlacz...

  • #8 26 Kwi 2017 01:57
    Piotrus_999
    Poziom 39  

    daadane napisał:
    Coś z tym wyświetlaczem jest jednak nie tak...
    Oczywiście że z wyświetlaczem. Ale raczej podejrzewam że z użytkownikiem. Proponuję rozpocząć od napisania (samodzielnego bez podglądania w internecie) migania diodą.

  • #9 26 Kwi 2017 02:10
    daadane
    Poziom 6  

    Pffff... jakby to powiedzieć. Powiem tak, przykro mi, że ktoś taki jak Ty wypowiada się w tym temacie. Jako jedyna osoba, nie wniosłeś nic do tego tematu. Przez takich jak Ty uświadamiam sobie, że nie warto... Wiesz, przyszedłem tu na forum bo potrzebowałem szybkiej pomocy, po prostu miałem pomysł i chciałem go szybko zrealizować. Popatrz na wypowiedzi innych powyżej, da się ? No nie czaje tego... Masz wiedzę lub pomysł to powiedz coś co chociaż naprowadzi mnie na rozwiązanie problemu.


    Moderowany przez dondu:

    Zapytując na forum należy być świadomym kilku spraw:

    - po formie zapytania doświadczeni użytkownicy rozpoznają jaki jest poziom zaawansowania pytającego i odpowiednio do niego odpowiedzi udzielają,

    - jeśli stwierdzą, że problemem jest brak podstaw, to niechybnie to wskażą, bo nie ma nic gorszego jak zniechęcenie się pytającego do zbyt skomplikowanego projektu,

    - należy pokazać materiały do analizy, których kolega nie załączył.

  • #10 26 Kwi 2017 02:22
    Piotrus_999
    Poziom 39  

    daadane napisał:
    Jako jedyna osoba, nie wniosłeś nic do tego tematu. Przez takich jak Ty uświadamiam sobie, że nie warto...

    Rzeczywiście osiągnąłeś znaczący postęp. Cały czas jest blady. Masz rację nie warto. A wiesz dlaczego - bo nie chce Ci się tej wiedzy zdobyć. Podałem Ci metodę - jedyną słuszną, pozytywną i efektywną - dokumentacja i praca, ale widzę że to niestety nie dla Ciebie.

  • #11 26 Kwi 2017 17:48
    daadane
    Poziom 6  

    Dobrze, może faktycznie źle opisałem istotę mojego problemu. Od 3 lat hobbistycznie tworzę projekty na Arduino (prawda - część ciekawych znalezionych kopiuję). Nie jestem ani elektronikiem ani programistą. Zakupiłem wyświetlacz o którym wcześniej pisałem (TFT 3,2" z panelem dotykowym na układzie ILI9341). Tak jak również wcześniej wspominałem dodatkowo zakupiłem dedykowany dla wyświetlacza shield - z wygody bo nie potrzebuję żadnych dodatkowych konwerterów stanów logicznych ani nawet kabli. Shield przygotowany jest do podłączenia pod płytkę Arduino Mega 2560. Całość po złożeniu, bez wgrywania kodu do obsługi wyświetlacza uruchamia podświetlanie pod wyświetlaczem przez co sprawia wrażenie białego bladego tła. Szukając informacji na temat LCDka i układu, który ma go obsługiwać doszedłem do biblioteki UTFT i URTouch - dla dotyku. Dokumentacja biblioteki potwierdziła znalezione informacje (układ z mojego wyświetlacza znajduję się na liście obsługiwanych kontrolerów). Sprawa wygląda banalnie. Zamieszczam kod jako przykład z demo do "kalibracji dotyku" z biblioteki URTouch :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zatrzymajmy się na konstruktorze klasy UTFT:
    Code:
    UTFT myGLCD(ITDB32S,38,39,40,41);

    Dokumentacja biblioteki mówi jasno, jako pierwszy parametr należy podać model wyświetlacza następne to SDA, SCL, CS, RST i opcjonalnie RS. W przykładzie domyślny model to ITDB32S - w rzeczywistości przygotowany pod komunikację z układem SSD1289. Po odszukaniu i odkopaniu wszystkich czarów z dokumentacji wychodzi, że w moim przypadku ten konkretny model (320QVT) nie jest obsługiwany natomiast sam ILI9341 posiada wiele alternatyw. Sprawdziłem wszystkie z mizernym skutkiem. Przyznam szczerze, że było to bardziej na chybił trafił z nadzieją, że coś zadziała. [url=http://codedemonelectronics.com.au/thinktank/arduino/tft-320-qvt-9341] - identyczny zestaw i podobny problem, jednak w jego przypadku rozwiązany ustawieniem modelu na ITDB32WC. Jak łatwo się domyślić u mnie to nie działa chociaż wyświetlacz i Shield ten sam. Za modyfikacje pliku UTFT.cpp się nie biorę bo modyfikacja miała polegać na ustawieniu "rozdzielczości" ekranu w celu przesunięcia całości w prawą stronę.

    W internecie znalazłem wiele podobnych problemów z uruchomieniem tego konkretnego wyświetlacza (320QVT) i praktycznie w każdym przypadku pomagała zmiana nazwy modelu w konstruktorze na ITDB32WC lub ILI9341_16 a następnie modyfikacji pliku UTFT.cpp. Stad też wczoraj stwierdziłem że jest z nim coś nie tak. Zanim napisałem o problemie na forum wziąłem się za zaimplementowanie w plikach UTFT.cpp
    i YTFY.h nowego typu ILI9341_1 - który miał obsłużyć mój nieszczęsny wyświetlacz. Dokopałem się wtedy do plików initlcd.h i setxy.h :

    initlcd.h :
    Kod: c
    Zaloguj się, aby zobaczyć kod


    setxy.h :
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Tu zakres mojej wiedzy i umiejętności się skończył. Piotrus_999 - mam wrażenie, że będziesz w stanie po części mi to wytłumaczyć żebym mógł "chociaż wiedzieć czego szukać" aby dowiedzieć się więcej na ten temat. Szczególnie jestem zainteresowany kodem z pliku initlcd.h w którym to (jak się domyślam) są znaki ascii. Czy ja dobrze myślę, czy to są jakieś adresy? Czy z dokumentacją mojego wyświetlacza modyfikując plik initlcd.h jestem w stanie coś zdziałać? Czy mógłbym dowiedzieć się coś więcej o zapisie z pliku initlcd.h? Domyślam się, że nie jest to temat na jedną wypowiedz stąd chciałbym się dowiedzieć jakich i o czym informacji mam szukać.

    Pozdrawiam

  • #12 26 Kwi 2017 18:23
    tzok
    Moderator Samochody

    Masz konwerter 5V na 3,3V? Spróbuj podłączyć wyświetlacz bez pośrednictwa shielda. Biały ekran oznacza, że wyświetlacz w ogóle nie działa. Nie musisz podłączać dotyku, tylko interfejs SPI wyświetlacza, reset może być na stałe do 3,3V, jeśli wyświetlacz jest jedynym urządzeniem na SPI to CS też może być stale aktywny.

    http://adatum.ru/podklyuchenie-displeya-240x320-2-2-tft-spi-ili9340-k-arduino-mega-2560.html
    http://www.jarzebski.pl/arduino/komponenty/wyswietlacz-tft-2-2-spi-ili9341.html

  • #13 26 Kwi 2017 18:31
    daadane
    Poziom 6  

    Nie. Niestety nie posiadam konwertera. Będę chyba musial kupić żeby zdiagnozować czy sam wyświetlacz działa. Trochę się boję o to pytać, czy odpowiednio dobrane rezystory mogą zastąpić konwerter na czas diagnozy?

  • Pomocny post
    #14 26 Kwi 2017 18:38
    tzok
    Moderator Samochody

    Nie jest to 100% bezpieczne rozwiązanie ale wiele opisów je sugeruje, więc można wnioskować że się sprawdza.

  • #16 27 Kwi 2017 17:51
    pyton
    Poziom 21  

    Witaj

    Nie wiem czy coś to pomoże... Mój TFT zakupiony u chińczyków także miał być ILI9341 jednak okazało się inaczej... Z Pomocą przyszła biblioteka: SPFD5408

    Podpowiem jeszcze jedno:

    W przykładach tej biblioteki (SPFD5408) masz: "SPFD5408_tftbmp"

    Gdzie jest opisana funkcja jak sprawdzić jaki masz faktycznie chip.

    Pozdrawiam

  • #19 17 Maj 2017 22:09
    daadane
    Poziom 6  

    U mnie problem z białym wyświetlaczem ciągnął się do momentu aż nie podłączyłem go przez konwerter poziomów logicznych. Okazało się, że soft na Arduino do obsługi wyświetlacza był dobry i spokojnie by go obsłużył gdyby nie wadliwy shield, który puszczał sygnał z jednego wejścia (na shieldzie) na kilka wyjść (ze shielda). Na konwerterze lub nowo zakupionym shieldzie śmiga aż miło :) to co jednak z nim przeżyłem to moje, tak samo jak wszystko czego się o nim jak i jego sterowaniu dowiedziałem :) w każdym razie dziękuje wszystkim, którzy uczestniczyli w dyskusji i pomogli w ożywieniu "bladego" trupa :)

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME