Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
TespolTespol
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Pytanie o uniwersalną bibliotekę do wyświetlaczy LCD

28 Mar 2018 12:33 987 24
  • Level 4  
    Witam,

    mam taki wyświetlacz:

    https://www.waveshare.com/2.2inch-320x240-touch-lcd-a.htm

    Czy istnieją uniwersalne biblioteki wspierające obsługę tego (lub innego rodzaju) wyświetlaczy?
    Chodzi mi o sprawne rysowanie prymitywnych struktur geometrycznych (koła, elipsy, wypełnione figury) , wypełnianie obrazami? Ogólnie jakieś naprowadzenie na takie biblioteki byłyby mile widziane.
    To działa po SPI, więc wg moich pobieżnych obserwacji demon prędkości to nie jest, ale do
    prototypowania jak znalazł, bo przewodów nie trzeba wiele :).

    Niskopoziomowo to mam w miare opanowane, inicjalizacja, stawianie punktów w różnych kolorach etc...są do tego gotowce, coś tam skleciłem. Ale pisanie od zera czegoś, co ewentualnie może funkcjonuje w sieci wydaje się stratą czasu...
  • TespolTespol
  • Level 17  
    Istnieją ale sprzedawcy najczęściej nie wiedzą co sprzedają. To, ze piszą iz jest sterownik xxxx nie znaczy, ze taki będzie. Jesteś skazany na dochodzenie typu wyświetlacza metoda prób i błędów. Mnie się udało juz za piątym razem.
  • Level 35  
    Podejdź do tematu z drugiej strony. Każda figura to zestaw punktów, czy to koło, elipsa, kwadrat. Podobnie jest z tekstem. Jeśli potrafisz zaincjować wyświetlacz i narysować jedne punkt to podpatrz funkcje dla innych wyświetlaczy. One niczym się nie różnią, zazwyczaj i tak sprowadzają się do narysowania odpowiedniej ilości punktów.
  • TespolTespol
  • Level 4  
    Oj, chyba się nie zrozumieliśmy. Ja niskopoziomowo to obczaiłem i punkty wyświetlać umiem, linie sobie napisałem, okręgi też, troszke trudniej z wypełnionymi figurami, ale też do ogarnięcia.

    Pytanie moje dotyczy tego, czy aby nie jest tak, że to co teraz sobie skrzętnie piszę (i nie ukrywam, że sklecam z różnych wygooglanych przykładów) jest gdzieś już napisane w formie ładnej, rozbudowanej biblioteki, którą mogę sobie po prostu wrzucić w projekt i korzystać z czego tam chcę.
  • Level 35  
    Nie znasz powiedzenia że jak coś jest do wszystkiego to jest do niczego :)
    Ja mam swoje funkcje, kiedyś tam napisane, podpatrzone i zmieniam tylko inicjacje oraz rysowanie punktu. Nigdy do projektu nie wklejam całej biblioteki tylko wybrane funkcje z których będę korzystał. Np. nie wklejam do projektu funkcji rysowania okręgów gdy będę korzystał tylko z trybu tekstowego .
  • Level 4  
    W sumie, to masz racje. Nie ma co szukać biblioteki-kobyły i ginąć w gąszczu jej katalogów.
  • Moderator of Microcontroller designs
    kk.krz wrote:
    To działa po SPI, więc wg moich pobieżnych obserwacji demon prędkości to nie jest

    Wbrew pozorom SPI wcale nie musi być takie wolne. Zwykle kontrolery LCD pozwalają na transfer rzędu 1-2MB/s, a to już dla QVGA wystarczy, aby sensownie wyświetlać GUI.
    Same funkcje kreślące prymitywy graficzne są dosyć uniwersalne i w miarę niezależne od użytego kontrolera. Aczkolwiek, jeśli kontroler ma jakieś dodatkowe bajery, to czasami można je mocno zoptymalizować. Zerknij do darmowych przykładów do mojej książki o LCD - masz tam wiele przykładów funkcji kreślących prymitywy graficzne z całkiem niezłą wydajnością.
  • Level 4  
    Bardziej chodzi mi teraz o tekst. Potrzebuję większej czcionki. Mam takie wyświetlanie znaków (nie moje):

    Code: c
    Log in, to see the code


    A tablica jest taka:

    Code: c
    Log in, to see the code


    i próbuje rozkminić jak na podstawie tablicy 8x16 zrobić czcionki większe rozmiarowo. Chodzi o to, by interpolować piksele i zrobić np. 16x32 z wykorzystaniem tej tablicy, która jest.
  • Moderator of Microcontroller designs
    kk.krz wrote:
    i próbuje rozkminić jak na podstawie tablicy 8x16 zrobić czcionki większe rozmiarowo. Chodzi o to, by interpolować piksele i zrobić np. 16x32 z wykorzystaniem tej tablicy, która jest.

    Z 8x16 zrobić 16x32 to prosto - wystarczy każdy p;iksel wyświetlać dwukrotnie w poziomie i dwukrotnie w pionie. Tyle, że wygląda to paskudnie i lepiej umieścić dodatkowy plik z czcionką 16x32.
  • Level 4  
    Takoż uczyniłem, ale się nie chwalę, bo ... wygląda to paskudnie :). Pogrzebałem trochę w necie i w sumie nie znalazłem Linuksowego narzędzia, które przerobi mi czcionki na tablice w C. Znalazłem jakieś Ghoscriptowe narzędzia, jednak niestety nie działają. Zna ktoś jakieś Linuksowe rozwiązanie?
  • Moderator of Microcontroller designs
    Używam lcd image converter:
    https://github.com/riuson/lcd-image-converter
    Bardzo fajne, bo można sobie stworzyć szablon eksportu pliku i program generuje plik wg tego co potrzebujesz. W dodatku ma ogromen możliwości przeksztaceń bitowych plików na różne formaty zapisu.
  • Level 35  
    Do czcionek znalazłem ostatnio narzędzie o nazwie TheDotFactory.
    Na plus jest to iż tworzy tablice czcionek o rożnej szerokości znaków, wymaga to co prawda trochę zmiany funkcji generującej znak ale efekt końcowy zadowala.

    Np:

    Pytanie o uniwersalną bibliotekę do wyświetlaczy LCD

    lcd image converter - bardzo ciekawy program, szczególnie do grafiki. Od razu można ustawić sobie zapis np RGB565.
  • Level 4  
    FCh...ja z Pytona to wiem tyle, że istnieje :) ale dzięki.

    tmf - skompilowałem lcd image converter - wygląda bardzo obiecująco. Biorę się za niego. Ale
    bez przygotowania szablonu generowanego pliku się nie obejdzie, bo to, co generuje mi program
    nie nadaje się wprost do zaincludowania projektu uC...
  • MCUs specialist
    kk.krz wrote:
    FCh...ja z Pytona to wiem tyle, że istnieje :) ale dzięki.

    Warto się nauczyć - zrobiony dla celów projektu którym się aktualnie zajmuję konwerter grafiki na tablice w C, dokładnie takie jak są potrzebne, zajmuje 96 linii kodu Pythona. Na bazie skryptu dla obrazków mamy też skrypt dla czcionek (bazuje zasadniczo na plikach BDF, czyli czcionkach-bitmapach, ale nic nie stoi na przeszkodzie aby go rozbudować i użyć TTF czy czegokolwiek innego), który ma aż 87 linii kodu Pythona. Jak się nauczysz go trochę (a jest to prosty język), to nagle okazuje się, że te 10000 narzędzi które zwykle są "niezbędne" okazują się łatwe do zastąpienia bardzo prostymi skryptami w Pythonie. Żeby nie było - osobiście zacząłem się interesować Pythonem rok temu, wiec to nie jest język na opanowanie którego (w podstawowym stopniu) trzeba poświęcić 10 lat.

    Tak BTW to opcja eksportu do tablic w C jest też w GIMPie.
  • Level 4  
    Zdaję sobie sprawę, szczególnie że interesuje mnie obróbka obrazu, a to już OpenCV + jakieś PI i tam
    Python jak najbardziej...życia brakuje i doby na to wszystko...ehh
  • User removed account  
  • Moderator of Microcontroller designs
    Pong.Chu wrote:
    Mam podłączony wyświetlacz na ILI9341 po SPI i bez problemu daje się wyciągnąć (jak pamiętam) 18 kl./s. Zegar SPI ma 50 MHz. Ale myślę że jeszcze można go przyspieszyć.

    Może kolega zanim coś napisze zajrzy do noty układu, w której jest napisane:
    Tabela 19.3.3:
    Serial Clock Cycle (Write) - 100 ns.
    Czyli maksymalne taktowanie magistrali SPI to 10 MHz dla zapisu (dla odczytu ok. 7,5 MHz).
  • User removed account  
  • Moderator of Microcontroller designs
    Pong.Chu wrote:
    uszę się przyznać, zrobiłem błąd - SPI jest taktowane z częstością 25 MHz. Dowód jest pod linkiem na dole mojego postu.


    Ale co to ma udowodnić? Że wiesz lepiej niż producent układu jakie są jego maksymalne możliwości? W nocie jest jasno napisane, że okres zegara SPI musi wynosić >100ns. O czym tu jeszcze dyskutować?
  • User removed account  
  • MCUs specialist
    Pong.Chu wrote:
    Nie wiem lepiej jakie są maksymalne możliwości ponieważ nie mam wglądu w projekt tego układu. Ale mam wystarczająco dużo doświadczenia aby nie wierzyć w to, co jest napisane w nocie i prócz tego umiejętności aby sprawdzić jak szybko taki układ będzie chodził. A o czym dyskutować? Ano o tym że da się uzyskać w tych wyświetlaczach szybszą transmisję a co za tym idzie szybsze odświeżanie.

    https://en.wikipedia.org/wiki/Anecdotal_evidence

    To że działa na Twoim biurku, z Twoim egzemplarzem (lub kilkoma egzemplarzami), w danej temperaturze i wilgotności, przy danym prądzie i napięciu, przy konkretnych poziomach zakłóceń EMC w otoczeniu itd., to niewiele znaczy. Jeśli nie wierzysz, to jak potraktowałbyś kogoś, kto opowiadałby Ci, że sygnalizacja świetlna na skrzyżowaniu jest tylko dla takich którzy nie mają doświadczenia i wiedzy żeby sobie sami ocenić czy mogą przejechać, bo przecież dany rozmówca przejechał już parę razy na czerwonym świetle z pełną prędkością i nic się nie stało, a tym sposobem uzyskał szybszą transmisję swojej osoby do innego miejsca a co za tym idzie szybsze podróżowanie. Brzmi równie przekonująco? (;

    Dodano po 1 [minuty]:

    Pong.Chu wrote:
    To tak, jakbyś się kłócił ze mną o to, że w mojej miejscowości nie może być słonecznie i +20 stopni bo Ty uważasz że np. wczesną wiosną takie temperatury są niemożliwe.

    Bardziej jakbyś tym nam wmawiał, że wszędzie jest ciepło bo Ty się właśnie opalasz na tarasie.
  • Moderator of Microcontroller designs
    Pong.Chu wrote:
    Nie wiem jaki masz w tym cel aby udowadniać mi, że to co działa nie ma prawa działać. Nie rozumiem dlaczego nie potrafisz przyjąć tego do wiadomości i po prostu zaakceptować że tak może być. Czy masz jakieś problemy z przyznaniem się do niewiedzy na publicznym forum? Czy uważasz że to wpływanie negatywnie na Twój autorytet?


    Kolego, to forum techniczne, a nie forum hokus-pokus. W technice stosuje się specyfikacje, wg których buduje się urządzenia. Gdyby kontroler mógł działać w całym gwarantowanym przez producenta przedziale z szybkością większą, to zapewne producent nie ograniczałby się, podając, że 10 MHz to max. Widać jakieś powody ma, aby parametry ograniczać. To, że ci to działa, to fajnie, ciesz się, że masz szczęście. Natomiast opieranie działania układu na szczęściu to nie jest poprawny sposób budowy czegokolwiek.
    Tu zrzut strony noty z parametrami:
    Pytanie o uniwersalną bibliotekę do wyświetlaczy LCD
    Pong.Chu wrote:
    Ale mam wystarczająco dużo doświadczenia aby nie wierzyć w to, co jest napisane w nocie i prócz tego umiejętności aby sprawdzić jak szybko taki układ będzie chodził.

    Gratuluję ego. To pochwal się jakie to specjalne umiejętności posiadasz umożliwiające ci sprawdzenie szybkości działania układu? Proponuje też rebranding - kupuj te układy i sprzedawaj jako lepsze z nowymi parametrami, określonymi dzięki twoim specjalnym umiejętnościom. Sporo kasy można na tym zarobić.
  • Level 4  
    To już mój 2. (jeśli nie trzeci) wątek, w którym się forumowicze kłócą. I to forumowicze elitarni.
    Fatum jakieś?

    Peace ! Przetaktowywać to sobie można sterownik światełek choinkowych. Do woli, choćby dla zdobycia doświadczeń i bez wdrażania w komercje, bo w zimie, na zewnątrz (u nas się mówi - na polu) może nie zadziałać i wróci z reklamacją :)

    Sterownika łopat helikoptera już raczej się nie przetaktowuje. I już. :)
  • User removed account  
pcbway logo