logo elektroda
logo elektroda
X
logo elektroda
ADVERTISEMENT
ADVERTISEMENT
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[AVR-GCC] Graficzny wyświetlacz LCD, algorytmy sterowania.

avr_elektronik 13 Oct 2009 23:11 6729 23
ADVERTISEMENT
  • #1 7125784
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    Witam,
    od pewnego czasu buduję odtwarzacz MP3. Co do obsługi karty SD i dekodera nie mam problemu, ale nie wiem jak zbudować/zaprojektować interfejs graficzny playera. Do dyspozycji mam LCD 128x64 na sterowniku KS0108. Kompletnie nie wiem jak się za to zabrać, tzn. jaki algorytm zastosować do obsługi GLCD, czy użyć przerwań timera, rysować w pętli głównej ..., kolejne pytanie jak odświeżać ekran. Proszę o wymianę doświadczeń w/w zakresie głównie zależy mi na informacji jakich zasad muszę się trzymać przy pisaniu programów zawierających GUI(mam na myśli proste menu, może jakiś analizator widma).
    Pozdrawiam
  • ADVERTISEMENT
  • #3 7125924
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    OK. Dzięki na pewno link się przyda, ale na razie potrzebuje ogólnych informacji dotyczących struktury programu tj. jak rysować, kiedy odświeżać ekran i docelowo jak wykonać ładne menu :). Nurtuje mnie pytanie jak wykonać analizator widma (narazie pomijam kwestię sprzętową, skupiam się na wizualizacji danych), jak odświeżać słupki, tzn. czy za każdym razem rysować wszystko od nowa, bądź może jakoś inaczej to zrealizować.
  • ADVERTISEMENT
  • #4 7126064
    Anonymous
    Level 1  
  • #5 7126629
    szelus
    Level 34  
    Posts: 1508
    Help: 315
    Rate: 53
    Tochę OT:
    atom1477 wrote:
    Dzięki temu nie było by zbyt dużego efektu Thearingu (Czy jak tam to się zwie ;p W każdym razie efektu migotania) na LCD.

    tearing - ang. tear - drzeć, przedzierać, bo ramka obrazowa składa się z dwóch (potencjalnie wiecej) częsci (uskok). Efekt pisania do bufora obrazu bez synchronizacji z wyswietlaniem.
    W każdym razie uwaga bardzo słuszna.
  • #6 7126694
    Anonymous
    Level 1  
  • #7 7128600
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    To już mam jakieś informacje. Jeśli dobrze zrozumiałem to muszę unikać czyszczenia całego wyświetlacza. Teraz mam kolejne pytanie, zakładając że, mam już tło w moim odtwarzaczu i chcę np. scrolować tytuł utworu, jak to zrobić? Czyścić fragment ekranu np. spacjmi i cyklicznie wklejać w to miejsce stringa?

    Czy ktoś może mi w skrócie powiedzieć jak zbudować menu powiedzmy jak w starszych telefonach (N3210,N3310,N6210).
  • #8 7128817
    Anonymous
    Level 1  
  • #9 7129036
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    Dzięki atom1477 za radę, faktycznie nie muszę czyścić bo jeśli zdefiniuje znaki 5x8, to choć znak ma "białe" pole to zastąpi to co było wcześniej.

    Odnośnie menu nie potrzebuje niczego wyszukanego, prosta lista po której będę mógł się przesuwać(podświetlać) i wchodzić do pod menu.
  • ADVERTISEMENT
  • #10 7133965
    Anonymous
    Level 1  
  • #11 7146540
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    Na chwilę obecną chcę opanować zasadę menu a później będę myślał o adaptacji do playera.
  • #12 7146548
    Anonymous
    Level 1  
  • #13 7150362
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    Tak, masz rację. Z tym, że jedno rozwiązanie może być lepsze lub gorsze (tzn. wydajniejsze).
  • Helpful post
    #14 7150698
    Anonymous
    Level 1  
  • #15 7171227
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    OK. dzięki za pomoc w przyszłym tygodniu zabieram się z pisanie.
  • ADVERTISEMENT
  • #16 7171870
    tmf
    VIP Meritorious for electroda.pl
    Posts: 14318
    Help: 2090
    Rate: 2203
    Atom: strasznie to skomplikowales, zrobienie menu jest naprawde proste. Jako dowod pokaze ci implementacje wielopoziomowego menu na LCD graficznym, ze sterowaniem encoderem, roznymi funkcjami typu podswieltlenie aktywnej pozycji, blokowanie danej opcji, stosowanie separatorow - http://idom.svn.sourceforge.net/viewvc/idom/LCDGUI/ - zobacz w include i src klasy TMFMenu.
    To max wypasione menu, proste zrobione na callbackach to de facto zwykla lista jednokierunkowa, pare linii kodu.
  • #17 7182470
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    Dzięki tmf, a masz może jakieś screeny tego menu?
  • #18 7183105
    tmf
    VIP Meritorious for electroda.pl
    Posts: 14318
    Help: 2090
    Rate: 2203
    Jak przejrzysz to repozytorium to tam jest aplikacja LCDDesigner nad ktora pracuje - symuluje ona na PC dzialanie tej biblioteki, mozna wstawic menu i sobie zrzucic screenshota.
  • #19 7187440
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    Faktycznie znalazłem LCDDesigner, ale nie ma pliku wykonywalnego.
    Starałem się to skompilować za pomocą CodeBlock, ale niestety nie udało mi się.
  • #20 7187500
    tmf
    VIP Meritorious for electroda.pl
    Posts: 14318
    Help: 2090
    Rate: 2203
    Jest zalezna od Qt, musisz sciagnac je w wersji >4.5.x. Wez pod uwage, ze to repozytorium, nie spodziewaj sie, ze pojdzie latwo :) W razie czego moge podeslac fotki.
  • #21 7190634
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    No niestety nadal nie udało mi się skompilować, zainstalowałem Qt, ale nadal otrzymuje taki komunikat
    Quote:
    "LCDDesigner - Release" uses an invalid compiler. Skipping...
    Nothing to be done.

    tmf <- może dasz radę przesłać skompilowaną aplikację?
  • #22 7190733
    tmf
    VIP Meritorious for electroda.pl
    Posts: 14318
    Help: 2090
    Rate: 2203
    Uzywam gcc pod linuxem, albo Mingw pod windowsem. Jesli masz inny to zapewne musisz zrobic qmake w karalogu w ktorym znajduje sie plik projektu - .prj. Skapilowana aplikacje mam, ale jak ja przeslac? Zreszta, zeby z tego skorzystac musisz dokonac zmian w niektorych procedurach - umiescic kod w C++ majacy generowac to co chcesz uzyskac na AVR.
  • #23 7191151
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    Udało się, ale teraz nie wiem jak obsługiwać LCDDesigner tzn. jak stworzyć menu:)
  • #24 7873491
    avr_elektronik
    Level 14  
    Posts: 171
    Help: 1
    Rate: 1
    Może jest ktoś w posiadaniu zastawu znaków innych niż 5x8 ?

Topic summary

✨ Dyskusja dotyczy projektowania interfejsu graficznego dla odtwarzacza MP3 z wykorzystaniem wyświetlacza LCD 128x64 na sterowniku KS0108. Poruszono kwestie algorytmów sterowania GLCD, sposobów odświeżania ekranu oraz implementacji prostego menu i analizatora widma. Zalecane jest unikanie pełnego czyszczenia ekranu przy odświeżaniu, zamiast tego proponuje się rysowanie elementów (np. słupków analizatora) dwukolorowo, co minimalizuje efekt tearingu i migotania. Do wyświetlania tekstu sugeruje się stosowanie czcionek z własnym tłem, co eliminuje konieczność ręcznego czyszczenia fragmentów ekranu podczas przewijania tekstu (np. tytułu utworu). W kwestii menu rekomendowane są proste listy z podświetlaniem pozycji i nawigacją do podmenu, implementowane zarówno w pętli głównej, jak i w przerwaniach, w zależności od potrzeb i wydajności systemu. Wskazano na dostępność gotowych bibliotek do sterownika KS0108 oraz zaawansowanego frameworka TMFMenu z obsługą enkodera i funkcji podświetlenia, dostępnego w repozytorium wraz z narzędziem LCDDesigner do symulacji menu na PC (wymaga Qt >4.5). Dyskutowano także o ograniczeniach mocy obliczeniowej mikrokontrolera AVR przy realizacji analizatora widma i konieczności optymalizacji kodu. Poruszono kwestie kompilacji i uruchomienia narzędzi wspomagających projektowanie GUI na PC oraz integracji wygenerowanego kodu z aplikacją na AVR.
Generated by the language model.
ADVERTISEMENT