FT81x i FRDM-K64F — część 3

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

FT81X

Kolejny wpis o nowych sterownikach wyświetlaczy jakimi są FT810 i FT811 przy użyciu naszego ulubionego Kinetisa z oprogramowaniem w popularnym środowisku mBED. Tym razem użyjemy widgetów dostępnych w naszym FT81x i zbudujemy termometr….

FT8xx i nowe FT81x zawierają w swojej pamieci rom szereg udogodnień dla programistów ułatwiających budowę atrakcyjnych i przejrzystych interfejsów. Oczywiście nic nie stoi na przeszkodzie by programować ładniejsze , ale o tym w następnej części, tu skupimy się na tych dostępnych w rom i ich użyciu.

Na stronie producenta można znaleźć ciekawy dokument :

Przechwytywanie

kliknij żeby otworzyć plik pdf.

Warto się nim zainteresować gdyż właśnie on mówi nam wiele o tym co możemy i jak osiągnąć …  w tym miejscu skupimy się na dostępnych widgetach , ale warto wczytać się gdyż reszta informacji też nam będzie potrzebna …


WIDGETY:

dostępne są następujące predefiniowane widgety ułatwiające tworzenie GUI dla naszych urządzeń:

  • CMD_TEXT    
  • CMD_BUTTON
  • CMD_CLOCK
  • CMD_DIAL
  • CMD_GRADIENT
  • CMD_KEYS
  • CMD_PROGRESS
  • CMD_SLIDER
  • CMD_SCROLLBAR
  • CMD_TOGLLE
  • CMD_NUMBER
  • CMD_GAUGE

to sporo i na wiele pozwala a przedstawiają się następująco:

Przechwytywanie

Oczywiście wszystkie mają możliwość zmiany tła sposobu wyświetlania, skalowania i kolorów , a wszystko znajdziecie w/w dokumencie. Dodatkowo znajdziecie jeszcze dwie ciekawostki:

  • CMD_SCREENSAVER  — uruchamia animowany wygaszacz
  • CMD_LOGO — odtwarza animowane LOGO FTDI

Tu na potrzebę tej prezentacji skupię się na :

  • CMD_TEXT
  • CMD_GAUGE
  • CMD_NUMBER

Napomnę że nasz wspaniały silnik graficzny pozwala na pracę z obrazami JPG i PNG dzięki CMD_LOADIMAGE, ponadto też znajdziemy tam uwaga :

CMD_MEDIAFIFO   — pozwala ustawienie pamięci bufora FIFO w RAM_G do odtwarzania streamu wideo komendą CMD_PLAYVIDEO

Jak więc widzicie nowy silnik EVE2 potrafi wiele bardzo wiele, a was moi drodzy ogranicza w tej chwili tylko brak takiego wyświetlacza i wyobraźnia :)

Narobiłem wam smaka ale doo rzeczy.


CMD_TEXT:

ten widget pozwala nam na wyświetlanie napisów na ekranie naszego LCD. Skądinąd czcionka zawarta w ROM jest całkiem ładna , to układ FT81x pozwala nam na zdefiniowanie znaków niestandardowych oraz używanie innych fontów. Służą do tego CMD_

  • SETFONT 
  • SETFONT2

Czcionki w pamięci RAM i ROM są czcionkami bitmapowymi i są używane do tworzenia napisów na Widgetach , ale i TEKSTÓW na ekranie oraz LICZB przez comendy co-procesora silnika graficznego, możemy je skalować w zakresie 0 do 31. Podstawowa lista zawiera 128 znaków o indexach 0 -127

Przechwytywanie

 

opis:

cmd_text( X, Y, <rozmiar> , <opcje>, „text”);

  • dostępne opcje w tabelce na stronie 157 w/w dokumentu

przykład użycia :

cmd_text(80, 60, 31, OPT_CENTER, “Text!”);

wynik:

Przechwytywanie

 


CMD_NUMBER

w zasadzie tak samo jak w/w CMD_TEXT ale wyświetla CYFRY, można poprzez CMD_SETBASE ustalić bazę wyjścia jako DEC, HEX lub BIN wartość liczbowa będzie przeliczona i wyświetlona w odpowiedni sposób:

Przechwytywanie

sposób użycia DEC:

cmd_number(80, 60, 31, OPT_CENTER, 42);

wynik:

Przechwytywanie

<oczywiście możemy zamiast wartości liczbowej postawić zmienną typu int32_t>


CMD_GAUGE

Ten widget tworzy wskaźnik taki typowy prosty analogowy idealny na termometr , voltomierz , prędkościomierz itd..

Przechwytywanie

Oczywiście szczegółowy opis jest na stronie 185.

Ja użyję go jako termometru w wersji bez tła  , którą wywołujemy tak:

cmd_gauge(80, 60, 50, OPT_NOBACK, 4, 4, 49152, 65535);

i np wygląda w taki sposób:

Przechwytywanie

Opis funkcji:

cmd_gauge( x, y, r, option, major, minor, wartość , zasięg);

x,y  = coordynaty na ekranie (w zakresie rozdzielczości  800 x 480)

r = promień (rozmiar widgetu w pixelach)

major  = ilość dużych podziałek na skali  0 do 10

minor = ilość małych podziałek na scali 0 do 10

wartość = położenie wskazówki (wartość liczbowa lub przekazywana przez zmienną  typu uint16_t

zasięg = wartość liczbowa maxymalna dla naszego wskaźnika


Uff przebrnęliśmy przez uproszczony opis potrzebnych nam Widgetów. Szczegóły znajdziecie na często wspominanym dokumencie PDF , ale puki co nam wystarczy do naszych celów ta oto powyższa i okrojona wiedza …


ROBIMY TERMOMETR


Nasz termometr od strony sprzętowej będzie wymagał :

FRDM-K64F  lub innej FRDM czy NUCLEO  ja jednak uparcie będę się opierał na kinetisie :)

DS18B20 i rezystora 4K7 oraz może się przydać , ale nie musi USB UART FT232

PODŁĄCZENIA

W przypadku DS18B20 to typowy układ zasilania :

Przechwytywanie

oczywiście VCC podłączamy do 3,3V  a pin DATA do A1 naszej FRDM-K64F

LCD mamy podłączony jak w poprzednich częściach niezależnie czy to FT810 czy FT811 gdyż obsługa nam się nie zmienia a tylko typ panelu dotykowego.

Jeśli chcemy użyć FT232 podłączamy RX na D0 i TX na D1.

WSZYSTKIE MASY(GND) ŁĄCZYMY ZE SOBĄ !!!

PROGRAM:

Program napiszemy w mbed ja oczywiście używając SunMBED Explorera i bibliotek z poprzedniej części może więc to być program poprzedni który zmodyfikujemy:

głównie chodzi o dodanie linii :

Oczywiście nasza funkcja rysująca screen termometra:

Tu warto się przyglądnąć uważnie.  Zauważcie że funkcji możemy przekazać wartości char dla napisu oraz float dla temperatury , gdzie zamiast użyć wspominanej  NUMBER używam NumFloat .

To dodana prze zemnie funkcja do biblioteki będąca bliźniaczą obecnie do NUMBER tak więc chwilowo niema znaczenia jej istnienie, gdyż wymaga ona jeszcze kilku poprawek, zobaczcie też na GAUGE jak przekazuję wartość temperatury do wskaźnika.

I na koniec nasza funkcja main:

Jak widać wszystko jest proste i banalne nie wymaga omówienia. a cały plik main.cpp wygląda następująco:

Oczywiście ważna jest też biblioteka DS18B20 którą załączam do pobrania i zaimportowania do mBED żebyście nie musieli szukać :

DS1820
DS1820
DS1820.zip
9.1 KiB
34 Downloads
Szczegóły

i to by było na tyle :)

Tymczasem nasz programik działa następująco:

Miłego używania ….