Witajcie.
W końcu postanowiłem zgłębić tajniki obsługi wyświetlacza lcd tft. Padło na wyświetlacz 2,8" na sterowniku ili9341. Sterownik uruchomiony na magistrali SPI sprzętowo.
Oczywiście zajęło mi sporo czasu doprowadzenie do prawidłowej komunikacji, ale się udało. Testy na atmega16 i atmega32 z kwarcem 18 432 000. Korzystam z różnych bibliotek Adafruit, arduino, które w miarę możliwości mojej skromnej wiedzy udało się zaadoptować do tego wyświetlacza. W sumie samą inicjalizację samego TFT, zasadę działania, co z czym..... w miarę dobrze rozumiem, ale niektóre "rozwleczone kody" nie zawsze są dla mnie w pełni jasne. Po prostu użyłem, działa i tyle.
Wszelkie figury, linie, kropki działają prawidłowo. Tekst, pojedyncze znaki ok. Jakby podstawy ogarnąłem. Ale zaczęły się schody. kiedy zacząłem wrzucać jakieś konkretne dane np. typu pomiar z przetwornika ADC. Utworzyłem funkcję zamieniającą wynik pomiaru na string. Funkcja działa prawidłowo, czyli kręcąc potkiem mam wyświetlaną wartość od 0-1023. I tu nie mogę zakończyć tego etapu. Kiedy zmieniam wartość napięcia, to wynik staje się nie czytelny. Zamalowują się cyfry w kwadraty i takie tam różne twory.
Jeśli dobrze rozumiem, to nie są kasowane poprzednie piksele, ponieważ kiedy wyłączę i włączę ponownie zestaw, to wynik jest prawidłowy. Rozumiem, ze trzeba w pełni zrozumieć ideę wyświetlania na takich LCD. Do tej pory używałem typowych 2x16, 4x20 znaków. Tam wyglądało to inaczej.
Jeśli w pętli głównej najpierw wyświetlam prostokąt, jako tło i następnie na nim funkcję do pomiaru ADC, to wynik jest poprawny, czyli czyszczę ten fragment ekranu tłem, ale występuje migotanie cyfr i wiem, że to na pewno babol. Rozwiązanie tego tematu na pewno pozwoli mi ogarnąć kolejne działania z tym LCD.
W tym miejscu proszę o wytłumaczenie, jak prawidłowo podejść do tego zagadnienia. Nie proszę o gotowca oczywiście, ale o teoretyczne wytłumaczenie, jak się do tego zabrać, a żeby było poprawnie. Jakieś fragmenty kodu, link do przykładu, gdzie mógłbym załapać oczywiście byłoby pomocne.
Jak to powinno wyglądać praktycznie. Z tego, co zauważyłem, to potrzebne funkcje (nazwy przykładowe) tft_string();, tft_char(); i na ich podstawie utworzenie funkcji tft_int(); którą napisałem. Są one ze sobą powiązane i zależne. Oczywiście pomijam inne funkcje pozycjonowania, pojedynczy piksel, kwadrat itp, gdzie one również żyją i są powiązane z całością.
Akurat w tych funkcjach, które użyłem, brakuje zmiennej "tło" i tu jest na pewno pierwsza przyczyna.
Proszę o pomoc, jak to rozwiązać. Zamieszczam przykładowy kod, który aktualnie stosuję. Dzięki z góry za zainteresowanie.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Main:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wchile:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wiem, że w tym przypadku nie ma tła.