FT81x i FRDM-K64F — część 4

FT81x i FRDM-K64F — część 4
Razem głosów: 19 co stanowi: 91.58% całości.

FT81X

Ta cześć będzie poświęcona dotykowi ,choć na naszych układach to prosta sprawa jednak wymagająca nieco omówienia i tym mam zamiar sie właśnie zająć …

Stworzymy sobie w naszym Mbed  programik którego jedynym celem będzie reagować na dotyk i zmieniać kolory ekranu ….. wiem nic wielkiego , ale tymczasowo nam wystarczy zanim pokarzę jak można uzyskać takie efekty:

XGvsEuu

xbary@jabber.me_20160716_1_SS100197---3

nie wspominając już o używaniu 7″ LCD z naszymi FT810 :

wGfzU2d

Oczywiście o tym później .. dużo później na początek jednak prosta obsługa dotyku i gdyż to nam się przyda , do naszej zabawy użyjemy zaprzyjaźnionej płytki FRDM z dużo za dużym mikrokontrolerem czyli K64F:

SS104393

i 5″ LCD TFT z kontrolerem FT810 oraz dotykiem rezystancyjnym  tylko dlatego że mam ładnego stylusa który się idealnie nadaje do pokazywania działania dotyku :)

WP_20160717_22_20_54_Pro

zatem odpalamy mBed  i zaczynamy:


Na początku musimy ładnie zainkludować potrzebne nam pliki oraz biblioteki i zdefiniować piny dla naszego FT81x :

Oczywiście cały czas bazujemy na zmodyfikowanej bibliotece FT800 o której pisałem wcześniej i której używamy we wcześniejszych częściach …

FT81x i FRDM-K64F – część 1

FT81x i FRDM-K64F — część 2

FT81x i FRDM-K64F — część 3

 

Każdy ekran dotykowy należy skalibrować i tak samo musimy postąpić i tutaj , chodzi o zdefiniowanie obszaru roboczego dla naszego LCD , który jak pamiętamy ma rozmiar 5″ i rozdzielczość  800×480 pixeli , a dotyk ma o wiele większą … dlaczego tak się dzieje pisałem tutaj:

Start z STM32 VL Discovery – 21 — Ekran dotykowy wprowadzenie

Oczywiście tak jak w tamtym przypadku nie będziemy się męczyć :) Pomimo iż też opisałem uproszczoną metodę kalibracji 3 punktowej , którą zastosujemy tutaj.  Warto jednak przeczytać żeby dogłębniej się dowiedzieć jak cały mechanizm działa.

Tu w przypadku naszego FT81x mamy sprawę uproszczoną gdyż nasz kontroler ma wbudowany mechanizm kalibracji ekranu :

ale z niego nie skorzystamy … znaczy nie w tym sensie gdyż napiszemy sobie funkcyjkę … o nazwie Kalibracja_ekranu()

Jak widać w sumie uruchomiłem tu wbudowaną kalibrację ekranu ale też i wyczyściłem bufory i podmieniłem napis  Please TAP … na nasz polski :) Teraz by nasze demko miało smaczek dodamy sobie splash screen:

Nasz screen będzie się wyświetlał przez 5 sekund  i możemy mu przekazać napis jako parametr:) oczywiście nie zastosowałem tu nic nowego i wszystkie elementy są wam znane z poprzednich części.

I najważniejsza rzecz czyli pętla główna naszego programu to właśnie w niej będą się dziać wielkie rzeczy :) a więc działanie naszego dotyku ….

Na początek definiujemy kilka zmiennych :

TrackRegisterVal  , której wartość początkową ustalamy na 0  oczywiście musi byc ona typu uint32_t  to właśnie ta zmienna będzie przechowywać w odpowiednim rejestrze wartość dotyku w momencie używania.

kolejne zmienne  definiujemy jako typ uint16_t  i są to :

  • angelval  – będzie przyjmować wartość obrotu dialera
  • slideval   – bedzie przyjmować wartość pozycji slidera
  • scrollval  – będzie przyjmować wartość pozycji scroolera

oczywiście inicjujemy je wartością 0.  Kolejne 2 linijki to wywołanie naszego Splash Screena  i Wstawienie napisu :) oraz wykonanie Kalibracji ekranu …

Do tego momentu jakoś nam leciało i w sumie ciekawie wygląda :)

Przechwytywanie

ale nie o to nam chodzi dlatego teraz użyjemy funkcji TRACK która zajmie się ścieżka naszego dotyku. Mianowicie na ekranie zdefiniujemy sobie 3 obiekty i opiszemy śćieżki właśnie dla nich i oczywiście wyczyścimy bufory …

Trochę wyjaśnienia :

TRACK  –  tworzy ścieżkę dotyku dla obiektu graficznego,  Dzięki temu że całośc mechanizmu jest wbudowana w FT81x odciąża to uC od wykonywania obliczeń i śledzenia obiektów graficznych co pozwala zaoszczędzić sporo zasobów zwłaszcza w małych uC.  Track zwraca wartość która zostaje przypisana do tagu co wskazuje jednoznacznie na wybrany obiekt. Rejestrowana jest tylko część toru dla Tagu, a każde dotkniecie obiektu jest zapisane w REG_Tracker jako 1 punkt próbkowania itd.. np

  • REG_TRACKER_1  – drugie dotkniecie
  • REG_TRACKER_2  – trzecie dotknięcie
  • REG_TRACKER_3  – czwarty punkt dotyku ….

itd …  tu uwaga wiele punktów dotyku jest dostępne w kontrolerach FT811 i FT813, które korzystają z ekranów pojemnościowych. Dla FT810 dostępny jest REG_TRACKER

Szczegóły znajdziecie w dokumencie : FT81x Series Programmers GUIDE  z poprzedniej części . I jedziemy dalej czyli w pętli głównej musimy stworzyć interakcję obiektów graficznych z otoczeniem:

uff … mamy tu Suwak , pasek przewijania i obrotową gałkę , jak widzicie całość zmienia kolory tła i 1 planu elementów , a rozpoznawanie ścieżki dotyku i przypisanie wartości odbywa się poprzez TAGi … TAG przyjmuje wartośc od 1 do 255 , ale szczegółowe informacje w dokumencie ,… teraz tylko tak na szybko , jak macie pytania to piszcie :)

Na tą chwilę zostawiam was z zabawką która działa następująco:

i do zobaczenia w następnej części gdzie nieco więcej się wyjaśni …..

miłej zabawy:)

 

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay