SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Arduino poradnik

Wstęp

Teoria

Biblioteki

Komponenty

Czujniki i sensory

Rozwiązania i algorytmy

Narzędzia

Mikrokontrolery i Arduino IDE

Arduino i klony

Poradniki wideo

Reklama na Blogu

Najnowsze poradniki

Ostatnie komentarze

Ostatnie fotografie

polskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorywieliczka-szyb-danilowicza

Wyświetlacz TFT HY43B/HY50B FT800

Tworzenie bardziej skomplikowanych interfejsów graficznych na wciąż popularnych 8-bitowcach do niedawna było bardzo kłopotliwe. Ograniczenia stanowiły głównie dwa elementy - powolne taktowanie MCU oraz ograniczona pamięć. Specjalnie piszę w formie "było", bowiem zastosowany kontroler FT800 w opisywanym dziś wyświetlaczu HY43B/HY50 pozwala osiągnąć to, co zdawało się wręcz niemożliwe i karkołomne.

Czym jest układ FT800

FT800 określany jest mianem EVE (Embedded Video Engine), czyli wbudowanym silnikiem wideo, zaprojektowanym do obsługi wyświetlaczy TFT WQVGA (480x272) oraz QVGA (320x240). Oprócz obsługi wyświetlaczy, kontroluje również rezystancyjne ekrany dotykowe, posiada wbudowany syntezator dźwiękowy oraz wyjście audio. Układ z powodzeniem odtwarza 8-bitowe monofoniczne pliki PCM,  4-bitowe ADPCM oraz pliki w formacie μ-Law z częstotliwością próbkowania od 8kH do 48kHz. Komunikacja z FT800 może odbywać się za pomocą magistrali SPI z prędkością do 30MHz lub I2c z prędkością do 3.4Mhz.

W odróżnieniu od tradycyjnych kontrolerów, nie przesyłamy pojedynczych pikseli, a posługujemy się zestawem wbudowanych instrukcji, które są interpretowane i wykonywane po stronie FT800, co z kolei eliminuje konieczność stosowania zewnętrznych i dość kosztowych buforów ramek. Dzięki temu uzyskujemy coś na wzór akceleracji sprzętowej wykonywanych operacji. Brzmi ciekawie? Jestem pewny, że pokochacie ten wyświetlacz równie jak ja!

Rzućmy na chwilę okiem na diagram z którego poznamy ogólną jego budowę funkcjonalną. Wyróżnić możemy interfejs komunikacji z MCU, blok rejestrów, pamięci RAM o rozmiarze 256kB, pamięci ROM w której znajdują się między innymi podstawowe czcionki, widgety, ikony itp. oraz trzy silniki - graficzny, dźwiękowy i dotyku.

Zanim jednak zaczniemy rozmawiać z FT800, niezbędne jest poznanie mapy pamięci oraz zasady działania, która nieco różni się od standardowych kontrolerów TFT.

Bardzo ważnym dla nas obszarem pamięci będzie RAM_G o rozmiarze 256kB - to w niej będziemy mogli przechowywać wszelkie dane, takie jak dodatkowe czcionki, ikonki, obrazy PNG/JPG lub zapamiętywać listę instrukcji, o której za chwilę.

Kolejnym istotnym dla nas obszarem jest ROM_FONT,  w którym znajdują się fabrycznie zapisane czcionki o różnych rozmiarach.

Jednak najważniejszy  dla nas może okazać się obszar RAM_DL. To w nim będziemy zapisywali polecenia, które układ będzie wykonywał. Każde polecenie zajmuje rozmiar 4 bajtów, więc nie trudno wyliczyć, że jednorazowo możemy zlecić układowi 2000 zadań. Z jednej strony mogłoby wydawać, że jest to mało - jednak szybko zobaczycie, że jest to ilość wystarczająca do większości zastosowań.

Kolejnym regionem jest 380 bajtowy obszar różnych rejestrów, z których możemy odczytywać wiele przydatnych informacji. Np.: ilość wyświetlonych klatek obrazu lub stan ekranu dotykowego.

Z punktu programowania mniej istotny będzie ostatni 4kB obszar RAM_CMD, pełniący formę buforu poleceń układu.

Wyświetlacze FT800CB-HY43B i FT800CB-HY50

Na rynku zagranicznym jest kilka wyświetlaczy z kontrolerem FT800, jednak są to gotowe zestawy szkoleniowe z dodatkowym układem MCU, które ciężko byłoby połączyć np. z Arduino. W ofercie sklepu elty.pl są dostępne gotowe panele TFT o rozmiarach 4.3" i 5" z ekranem dotykowym, które w banalny sposób połączymy z naszym mikrokontrolerem. W komplecie dostajemy wyświetlacz w czarnej ramce oraz taśmę FPC. Bardzo dobrze rozwiązano tu mocowanie ramki, którą w razie konieczności możemy odkręcić i użyć jako nakładkę do umieszczenia samego ekranu w otworze obudowy urządzenia.

Z tyłu znajdziemy niezbędne dla nas złącza. Do wyboru mamy gniazdo FPC oraz dodatkowe miejsce na przylutowanie goldpinów, tak aby wpiąć wyświetlacz w ewentualne gniazdo. Pomyślano również o przejściówce FPC na standardowe goldpiny o rastrze 2.54mm. W tym celu wystarczy wyłamać adapter z lewej strony i przylutować goldpiny.

Podłączenie odbywa standardowo wykorzystując SPI. Bez obaw możemy go podłączyć pod mikrokontrolery z logiką 5V, ponieważ wyświetlacz posiada wbudowane już bufory 74LCX125 z tolerancją 5V. A więc:

  • Adapter ↔ Arduino UNO
  • 5V ↔ 5V
  • GND ↔ GND
  • SCK ↔ D13
  • MISO ↔ D12
  • MOSI ↔ D11
  • INT ↔ D10
  • CS ↔ D9
  • PD ↔ D4

Pin Audio służy do przesyłania sygnału dźwiękowego (Audio PWM out, push-pull output, 16mA sink/source current).

Biblioteka Arduino

Na stronie internetowej EVE Projects znajdziemy wszelką i niezbędną dokumentację oraz dema. To co nas jednak interesuje, to biblioteka dla Arduino: FTDI_V1.2.0_09072014(FT800).zip, którą wystarczy rozpakować do katalogu libraries/

----------------------

Uwaga. Jeśli korzystasz z Arduino IDE 1.6.0 lub nowszej, powyższe biblioteki nie będą w stanie się poprawnie skompilować, dlatego przygotowałem specjalne wersje dla Arduino IDE > 1.6.0:

FTDI_V1.4.0_FT800: pobierz biblioteki dla Arduino 1.6.x

----------------------

Znajdziemy w niej przykłady dla różnych platform szkoleniowych: ADAM_4DLCD_FT843, Breakout_4DLCD_FT843, VM800B35, VM800P35 oraz VM800P43_50. W przypadku Arduino nteresować nas będą jedynie przykłady dla modelu VM800P43_50, który obsługuje poprawnie wyświetlacze FT800CB-HY43B i FT800CB-HY50. Bez problemu wykorzystamy również dodatkowy czytnik kart SD, który jest wymagany do uruchomienia większości przykładów.

Zasada działania

Zrozumienie zasdy działania kontrolera FT800 jest tutaj kluczowe. W standardowych kontrolerach wysyłaliśmy dane bezpośrednio do pamięci. Oznaczało to, że aby narysować linię o długości 200 pikseli, musieliśmy wysłać sporą ilość danych - współrzędne X i Y oraz kolor. Niejednokrotnie jest to co najmniej 4 bajty na współrzędne i 3 bajty na kolor. Tak więc dla linii 200 pikseli jest to ponad 600 bajtów. Do tego jeszcze dochodzą bajty sterujące. W przypadku bardziej złożonych danych do wyświetlenia ilość wzrasta lawinowo, co czyni wyświetlanie bardzo powolnym. W przypadku FT800 wystarczy wysłać tylko kilka 4 bajtowych poleceń.

Drugą istotną różnicą jest sposób wyświetlania. Jeśli przypomnimy sobie obsługę wyświetlaczy TFT, które już opisywałem, aby wyświetlić kolejną ramkę animacji  musieliśmy wyczyścić cały ekran. A w przypadku zmiany wyświetlanej wartości tekstowej, konieczne było wyczyszczenie tego, co było wyświetlone pod spodem. To również powodowało, że wyświetlanie szybkozmiennych elementów było bardzo kłopotliwe.

Tutaj sprawa wygląda zupełnie inaczej. Najpierw musimy zdefiniować wszystkie elementy do wyświetlenia, a następnie wysłać do FT800. Wysłanie kolejnej listy powoduje automatyczne wyczyszczenie obrazu i wyświetlenie nowego. Z jednej strony wydaje się, że jest to problem, bo po co ponownie wyświetlać stałe elementy? Z drugiej jednak strony, nie musimy się o nic martwić. W razie konieczności możemy zapisać stałe polecenia do pamięci RAM, a potem je doklejać - ale to już pokażę następnym razem, ponieważ wpisów o FT800 będzie znacznie więcej, głównie z powodu mało czytelnych przykładów dołączonych do biblioteki.

Dziś zajmiemy się tylko inicjalizacją wyświetlacza i wyświetlania tekstu oraz liczb, a także korzystania z predefiniowanych zmiennych rozmiaru ekranu, czy sposoby centrowania tekstu.

W kolejnych odcinkach omówimy pozostałe funkcje wyświetlacza - osbługę ekranu dotykowego, kalibrację, obsługę widgetów, wyświetlanie obrazów, odtwarzanie dźwięku itd.

Przykład 1 - Inicjalizacja i wyświetlanie tekstu

  1. #include "SPI.h"
  2. #include "Wire.h"
  3. #include "FT_VM800P43_50.h"
  4.  
  5. FT800IMPL_SPI FTImpl(FT_CS_PIN,FT_PDN_PIN,FT_INT_PIN);
  6.  
  7. boolean DisplayInit()
  8. {
  9.   uint32_t chipid = 0;
  10.  
  11.   Serial.println("Inicjalizacja ekranu");
  12.  
  13.   // Inicjalizujemy ekran
  14.   FTImpl.Init(FT_DISPLAY_RESOLUTION);
  15.  
  16.   delay(20);
  17.  
  18.   // Pobieramy ID ukladu i sprawdzamy czy to FT800
  19.   chipid = FTImpl.Read32(FT_ROM_CHIPID);
  20.     
  21.   if (chipid != FT800_CHIPID)
  22.   {
  23.     Serial.print("Nie obslugiwany uklad: 0x");
  24.     Serial.println(chipid, HEX);
  25.     return false;
  26.   }
  27.    
  28.   Serial.print("Obslugiwany uklad: 0x");
  29.   Serial.println(chipid, HEX);
  30.  
  31.   // Wlaczamy ekran
  32.   FTImpl.DisplayOn();        
  33.  
  34.   return true;
  35. }
  36.  
  37. void scena(unsigned long int czas)
  38. {  
  39.   FTImpl.DLStart(); // Otwieramy liste wyswietlania
  40.  
  41.   FTImpl.ColorRGB(0xFF,0xFF,0xFF); // Ustawiamy kolor bialy (R,G,B)
  42.  
  43.   // Wyswietlamy tekst w naroznikach
  44.   // Parametry: x, y, rozmiar 16-31, centrowanie, tekst
  45.   FTImpl.Cmd_Text(10, 10, 20, FT_OPT_CENTERY, "LEWO-GORA");
  46.   FTImpl.Cmd_Text(FT_DISPLAYWIDTH-10, 10, 20, FT_OPT_RIGHTX | FT_OPT_CENTERY, "PRAWO-GORA");
  47.   FTImpl.Cmd_Text(10, FT_DISPLAYHEIGHT-10, 20, FT_OPT_CENTERY, "LEWO-DOL");
  48.   FTImpl.Cmd_Text(FT_DISPLAYWIDTH-10, FT_DISPLAYHEIGHT-10, 20, FT_OPT_RIGHTX | FT_OPT_CENTERY, "PRAWO-DOL");
  49.  
  50.   // Wyswietlamy napis na srodku
  51.   FTImpl.ColorRGB(0xFF,0xFF,0x00); // Ustawiamy kolor zolty (R,G,B)
  52.   FTImpl.Cmd_Text(FT_DISPLAYWIDTH/2, FT_DISPLAYHEIGHT/2-15, 29, FT_OPT_CENTER, "www.jarzebski.pl");
  53.  
  54.   // Wyswietlamy liczbe z parametru funkcji
  55.   FTImpl.ColorRGB(0x00,0xFF,0x00); // Ustawiamy kolor zielony (R,G,B)
  56.   FTImpl.Cmd_Number(FT_DISPLAYWIDTH/2, FT_DISPLAYHEIGHT/2+15, 29, FT_OPT_CENTER, czas);
  57.  
  58.   // Latajace hashe
  59.   int offset1 = czas % FT_DISPLAYWIDTH;
  60.   int offset2 = FT_DISPLAYWIDTH - offset1;
  61.  
  62.   FTImpl.ColorRGB(0x00,0xFF,0xFF); // Ustawiamy kolor turkusowy (R,G,B)
  63.   FTImpl.Cmd_Text(offset1, FT_DISPLAYHEIGHT/2-50, 31, FT_OPT_CENTER, "#");
  64.   FTImpl.Cmd_Text(offset2, FT_DISPLAYHEIGHT/2+50, 31, FT_OPT_CENTER, "#");
  65.  
  66.   FTImpl.DLEnd(); // Zamykamy liste wyswietlania
  67.   FTImpl.Finish(); // Renderujemu liste i czekamy na ukonczenie  
  68. }
  69.  
  70. void setup()
  71. {
  72.   Serial.begin(9600);
  73.  
  74.   while(!DisplayInit()){}
  75. }
  76.  
  77. void loop()
  78. {
  79.     scena(millis());
  80. }

Jak widzimy, w pętli loop() wysyłamy kompletną scenę, do której przekazujemy parametr w postaci czasu millis(). Scena wykorzystuje przekazaną wartość i ją wyświetla.

Materiał filmowy

Przydante dokumenty

https://www.jarzebski.pl/datasheets/FT800_AN240_From_the_GroundUp.pdf

https://www.jarzebski.pl/datasheets/FT800_AN246_Sample_Arduino_App.pdf

https://www.jarzebski.pl/datasheets/FT800_AN318_Arduino_Library.pdf

https://www.jarzebski.pl/datasheets/FT800_datasheet.pdf

https://www.jarzebski.pl/datasheets/FT800_programmers_guide.pdf

Reklama

Komentarze Komentarze
Avatar 1
rafalski76 Windows 7 / Mozilla 11.0
19 January 2015 - 13:11 Brak informacji

RE-WE-LA-CJA! Już zamawiam ekranik :) Z niecierpliwością czekam na kolejne części. Pozdrawiam...

Avatar 2
Korneliusz Android 4.4 / Safari 537.36
20 January 2015 - 05:51 Brak informacji

To fakt, ekran jest kapitalny :)

Avatar 1
rafalski76 Windows 7 / Safari 537.36
29 January 2015 - 09:59 Brak informacji

Własnie doszedł zamówiony ekran. Jestem pod wrażeniem możliwości i prędkości renderowania :) To całkiem nowy wymiar projektów Arduino!

Avatar 1
Sergiusz Windows 7 / Mozilla Firefox 41.0
07 October 2015 - 20:38 Warszawa

Czy kolega "rafalski76" mógłby się odezwac do mnie na maila. Mam parę pytań ;) Mój mail ---> sergiusz.fan@interia.pl

Avatar 1
#r2d2# Linux Ubuntu / Mozilla Firefox 35.0
19 January 2015 - 22:17 Warszawa

Gdzie można kupić to cudo? Bo oprócz jednej oferty na Allegro nie znalazłem nigdzie tego wyświetlacza :-(

Avatar 2
Korneliusz Android 4.4 / Safari 537.36
20 January 2015 - 05:51 Brak informacji

Ja swój kupiłem na elty.pl

Avatar 1
Błażej Windows 7 / Safari 537.36
09 February 2015 - 23:23 Brak informacji

Troszkę szkoda, że nie ma biblioteki i przykładów dla IDE 1.5.x lub 1.6.0.
Ale to da się obejść. Ekran jest ok. Już instaluję w maszynie...

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
10 February 2015 - 23:27 Bytom

Kapitalnie :)

Avatar 1
Błażej Windows 7 / Safari 537.36
10 February 2015 - 22:28 Brak informacji

Mam mały problem, może pomożecie.
Podzieliłem sobie plik ino na więcej, a mianowicie:
1) W pliku głównym mam:

#define __PROG_TYPES_COMPAT__
#include
#include
#include
#include "TouchLcd.h"
FT800IMPL_SPI tlcd(FT_CS_PIN,FT_PDN_PIN,FT_INT_PIN);
TouchLcd myTouchLcd;
void setup(){}
void loop(){}

2) W pliku TouchLcd.h:
#ifndef TouchLcd_h
#define TouchLcd_h
#include "Arduino.h"
class FT_VM800P43_50;
extern FT800IMPL_SPI tlcd;

class TouchLcd
{

};
#endif;

3) W pliku Touchlcd.cpp:
#include
#include
#include
#include "TouchLcd.h"

Reszta kodu wykasowana. Otrzymuję błędy:
TouchLcd.cpp.o*:In function `FT_RTC::DecToBcd(unsigned char)\'
FT_SD.h*:FT_SD()\'
FTDI_Touch.cpp.o*:FTDIlibrariesFT_SDFT_SD.h:159: first defined here
TouchLcd.cpp.o*:In function `FT_RTC::DecToBcd(unsigned char)\'

i tak do wielu funkcji.

Coś pokopałem z extern, ale zupełnie nie wiem co...

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
10 February 2015 - 23:27 Bytom

Ciekawe, wygląda na to, że najpierw musisz dodać nagłówek w którym jest funkcja DecToBcd ?

Avatar 1
Błażej Windows 7 / Safari 537.36
11 February 2015 - 00:04 Brak informacji

Tych błędów jest cała masa, a ewidentnie jest to powtórne definiowanie, więc to chyba nie to...

Avatar 1
Błażej Windows 7 / Safari 537.36
11 February 2015 - 00:35 Brak informacji

Pierwsze 3 includy to:
#include "SPI.h"
#include "Wire.h"
#include "FT_VM800P43_50.h"

Avatar 1
wasyl2007 Windows 7 / Mozilla 11.0
10 April 2015 - 12:49 Brak informacji

Wszystko ładnie,pięknie tylko w necie same dema,a co z odczytem jakiś wartości z czujników itp.Moze jakiś przykładzik?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
11 April 2015 - 16:28 Bytom

Jakich czujników ? :)

Avatar 1
EHB Windows 7 / Safari 537.36
12 April 2015 - 16:54 Brak informacji

Czy już widział może ktoś z Was wersję z kontrolerem FT801 i dotykiem pojemnościowym? Czy jeszcze czymś więcej różnią się te kontrolery niż tylko dotykiem? (FT800 - rezystancyjny, FT801 - pojemnościowy z mulkti...)

http://www.ftdichip.com/Support/Documents/AppNotes/AN_333_FT800_and_FT801_Touch_Capabilities.pdf

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
12 April 2015 - 17:15 Bytom

Tutaj mają z pojemnościowym: http://unisystem.pl/

Avatar 1
EHB Windows 7 / Safari 537.36
12 April 2015 - 21:36 Brak informacji

@Korneliusz...

No w sumie tak...
Ja znalazłem również te produkowane przez FTDI:
http://www.ftdichip.com/Products/Modules/VM801B.html

lub te same dostępne także w Polsce:
http://www.soselectronic.pl/?str=371&artnum=179811&name=ftdi-vm801b50a-bk

no ale żeby za sam pojemnościowy dotyk płacić 600 PLN?? to przecież więcej niż za kompletny 7" wyświetlacz z dotykiem w tablecie Larka :D (cały tablet Lark albo Manta to coś około 200 pln!!! ) raczej sam kontroler ekranu i dotyku może dałoby się do tych tabletowych dopasować ??

Avatar 1
grzegorzw Windows 7 / Safari 537.36
19 May 2015 - 09:18 Brak informacji

witam,
próbuję skompilować projekty do tego ekranu i nie moge dołaczyć
#include "FT_VM800P43_50.h"
otrzymuję tak czy inaczej komunikat
Font.ino:30:28: error: FT_VM800P43_50.h: No such file or directory
pozdrawiam

Avatar 1
Błażej Windows 7 / Safari 537.36
02 June 2015 - 11:43 Wołomin

A zainstalowałeś bibliotekę???
Jeśli tak, podeślij kod.

Avatar 1
Maty Windows / Safari 537.36
22 May 2015 - 22:48 Brak informacji

Bardzo fajny blog. Czekam na więcej lekcji. Szkoda ze w sieci jest malo materiału na ich temat. Przydałby się przykład jak wyświetlać np dane z czujników. Godzinę albo coś. Sam w sobie lcd\'k jest fantastycznie super szybki.

Avatar 1
Błażej Windows 7 / Safari 537.36
02 June 2015 - 11:45 Wołomin

Czy komuś udało się podpiąć to urządzonko do DUE?
Jaki konwerter poziomów użyliście?
Ja jakoś nie mogę :(. Jeszcze będę sprawdzał.

Maty, co potrzebujesz - napiszę Ci przykład.

Avatar 1
Marcin Windows 7 / Mozilla Firefox 38.0
19 June 2015 - 14:32 Warszawa

Uruchamiam ten wyświetlacz (na Leonardo Eth), ale mam jakieś problemy z zawieszaniem się (albo obraz zastyga, albo pojawiają się krzaki, albo biały/czarny ekran).
Wygląda na to, że dołączenie oscyloskopu do linii SCK i MOSI pomaga (przez dłuższy czas się nie zawiesza), choć nie rozwiązuje problemu całkowicie.
Próbowałem też zmniejszyć częstotliwość zegara SPI, ale to też nie pomogło.

Macie może jakieś sugestie??

I jeszcze zauważyłem, że aby móc uruchomić przykłady pobrane ze strony FTDI muszę z nich usuwać te linijki:
FTImpl.SetDisplayEnablePin(FT_DISPENABLE_PIN);
FTImpl.SetAudioEnablePin(FT_AUDIOENABLE_PIN);

MOSI z kolei ma 3.3V (Arduino 5V), ale to chyba nie powinno mieć znaczenia.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
20 June 2015 - 01:11 Bytom

Wyświetlacz jest bardzo czuły na stabilność napięcia zasilającego, sprawdź linie zasilania czy nie dużych spadków

Avatar 1
Marcin Windows 7 / Mozilla Firefox 38.0
24 June 2015 - 13:23 Warszawa

Rzeczywiście, trzeba było poprawić łączenie. Zastosowałem krótką taśmę i całe złącza 5x2 i 3x2.

Avatar 1
Blazej Android 4.1 / Safari 537.36
10 July 2015 - 21:03 Warszawa

Ja dołożyłem szeregowo do MISO R27.

Avatar 1
MiJu Mac OS X / Safari 600.1.4
30 June 2015 - 20:12 Warszawa

Czy komuś udało się może przerobić bibliotekę pod IDE 1.6.5 albo może wiecie gdzie mogę pobrać taką ... nie ukrywam, że napaliłem się strasznie kupiłem wyświetlacz ale nie doczytałem drobnym druczkiem o kompatybilności z IDE no i tera mam problem bo inne biblioteki w moim projekcie mają z owu problem ze starszym IDE ... może macie jakiś pomysł.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
11 July 2015 - 22:37 Bytom

Możesz przekleić komunikat błędu?

Avatar 1
G. Windows / Safari 537.36
13 July 2015 - 09:33 Lublin

Tutaj szczegóły: https://github.com/arduino/Arduino/issues/2789

Szkoda tylko, że FTDI nie zamierza zmodyfikować bibliotek.

Avatar 1
hebi Windows / Safari 537.36
02 October 2015 - 19:14 Rzeszów

Aby na szybko uruchomic demo z przykladów FT800 na Arduino 1.6.x można dodać na poczatku kodu definicje:

#define prog_uchar const unsigned char
#define prog_char const char

Rozwiązuje większość problemów bez grzebania w kodzie.

W chyba wersji 1.5.7 zmieniła się definicja prog_uchar, a raczej zniknęła

previous: prog_uchar text[] PROGMEN = { "Hello World" };
now: const unsigned char text[] PROGMEM = { "Hello World" };

Własnie po godzinie stresu udało mi się uruchomić mój wyświetlacz na Uno ;]

Avatar 1
Fanatyk Windows 7 / Mozilla Firefox 39.0
11 August 2015 - 13:56 Brak informacji

Mam pytanko jak wyswietlic double na tym wyswietlaczu?

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 41.0
19 October 2015 - 22:49 Bytom

Zamień na stringa :)

Avatar 1
Janusz Windows 7 / Mozilla Firefox 42.0
06 December 2015 - 21:26 Warszawa

Czy kolega mógłby podesłać kod do obsługi klawiatury dla FT800 taki odchudzony dla UNO ?

Avatar 1
Piotr Windows / Safari 537.36
27 December 2015 - 09:26 Poznań

Witam.
Mam taki mały problem z transformacją typu float na const char lub string.
Chodzi głównie o to aby wyświetlana była temperatura i inne warości zmiennoprzecinkowe na FT800.

Drugim problemem jest procedura kalibracji ekranu.
skąd i gdzie zapisać dane kalibracji, bo przy zwykłym resecie...(no nie za ciekawie to wygląda.
Z Góry dziękuję Szczególnie Panu, Korneliuszu.

Avatar 1
Piotr Windows / Safari 537.36
29 December 2015 - 12:07 Warszawa

Może ten kod da się przerobić pod arduino

#include
#include
#include

char *iascii(int);

char* fascii(float i) /* Function to convert a floating point number into a stream of ASCII characters */
{
char *s;int j,k;
float a,b,c;
j=i;
s=(char*)malloc(10*sizeof(char));
s=iascii(j);
printf("%s.",s);
i=i-j;

for(a=0,c=0.1,k=1;(b=(i-a))!=0;a+=c)
{
if(b<0)
{
b=i+a;
k++; a=c/10; c=a;
}
if(a==1)
{ a=c/10;c=a;}
}

for(;k>0;k--)
{
i=10*i;
}
j=i;
s=iascii(j);
return s;
}

char* iascii(int i) /* Function to convert an integer into a stream of ASCII charcters */
{
char *s;
int j,k;
s=(char*)malloc(10*sizeof(char));
for(j=0;i!=0;j++)
{
*s++=(i%10)+48;
i=i/10;
}*s=\'\';

for(k=j;k>0;k--,s--);
j--;
for(i=0;(j-i)>0;j--,i++)
{
char c; /* Loop to reverse the string s */
c=s[i];
s[i]=s[j];
s[j]=c;
}

return s;
}

int main()
{
char *s;
float i;
puts("Enter any positive floating point number");
scanf("%f",&i);
s=fascii(i);
printf("%s",s);
}

Avatar 1
Piotr Windows / Safari 537.36
10 February 2016 - 09:25 Poznań

// 11111111111111
// Zapis kalibracji do EEPROM
//****************************************************************************************
void kalibracja() // kalibracja dotyku ekranu
{
FTImpl.DLStart(); // Otwieramy liste wyswietlania
FTImpl.ClearColorRGB(0x00, 0x00, 0x00); // Kolor czyszczenia czarny
FTImpl.Clear(1, 1, 1); // Czyścimy ekran
FTImpl.ColorRGB(0xFF, 0xFF, 0xFF); // Ustawiamy kolor bialy (R,G,B)
FTImpl.Cmd_Text((FT_DISPLAYWIDTH / 2), (FT_DISPLAYHEIGHT / 2), 30, FT_OPT_CENTER, flashtext(0));//Dotknij punkty
FTImpl.Cmd_FGColor(0xFFFF00); // Kolor pierwszego planu
FTImpl.Cmd_BGColor(0x444400); // Kolor drugiego planu
FTImpl.Cmd_Calibrate(0); // Kalibracja
FTImpl.DLEnd(); // Zamykamy liste wyswietlania
FTImpl.Finish(); // Renderujemu liste i czekamy na ukonczeni

// Pobranie zawartosci 12 rejestrow i wyswietlenie w konsoli
Serial.println(F("uint8_t touchCallibration[24] = {"));
for (uint8_t i = 0; i < 24; i++)
{
EEPROM.write(EEPROM_CALIBRATION_DATA_START + i, FTImpl.Read(REG_TOUCH_TRANSFORM_A + i));

if ((i % 4 == 0) && (i > 0)) Serial.println();
Serial.print(F("0x"));
Serial.print(FTImpl.Read(REG_TOUCH_TRANSFORM_A + i), HEX);
if (i < 23) Serial.print(F(", "));
}
EEPROM.write(0, 0xAF);
Serial.println();
Serial.println(F("};"));
nrmenu = 0;
}
//****************************************************************************************
// w setup po inicjalizacji

if ((EEPROM.read(0) != 0xAF) || b == 3 ) //czy w EEPROM procesora o adresie 0 zawiera wartość 0xaf lub wciśnięty przycisk podczas uruchamiania
{
kalibracja(); //jeśli nie, wiec kalibrujemy ekran i zapisujemy wyniki w EEPROM procesora
}
else
{
for (int i = 0; i < 24; i++) // jeśli jest ... kopiujemy dane do rejestów "dotyku"
{
FTImpl.Write(REG_TOUCH_TRANSFORM_A + i, EEPROM.read(EEPROM_CALIBRATION_DATA_START + i));
}
}
//****************************************************************************************
//****************************************************************************************
//****************************************************************************************
//22222222222222222222**************************************************
char *TempChar(float ft) //zamienia temperature F L O A T na C H A R [x]
{
String temp = String(ft);// zmiana float na string odczytu temperatury z czujnika "i" do temp1
temp.toCharArray(bufor, 8); // zmiana string na *char z temp do bufora( 6 znaków)
int8_t Length = strlen(bufor);
temp.toCharArray(bufor, Length);
return bufor; // zwracamy bufor do funkcji
}
przykład wykozystania
FTImpl.Cmd_Text(180, 80, 22, 0, strcat(TempChar(TempFloat[1]), " \'C"));
FTImpl.Cmd_Text(180, 110, 22, 0, TempChar(TempFloat[2]));

//****************************************************************************************
//****************************************************************************************
//****************************************************************************************
///333333333333333333333333333333
// Stringi zapisane we FLASH nie zabieraja nam RAM-u
// Konfigurowanie string_table jest procesem dwuetapowym. Najpierw zdefiniować ciągi STR_xx.
const char STR_0 [] PROGMEM = "Dotknij punkty"; // od 0-19 nazwy przycisków
const char STR_1 [] PROGMEM = "WITAM";
const char STR_2 [] PROGMEM = " Piotr";
const char STR_3 [] PROGMEM = "Wymien czujnik";
const char STR_4 [] PROGMEM = " \'C";
// Następnie ustawiamy tabele na odwoływanie się do ciągów.
const char* const string_table[] PROGMEM = {
STR_0, STR_1, STR_2, STR_3, STR_4}// i tak ile chcemy, aby tylko flashu starczylo

char bufor[60]; // Upewnij się, że jest wystarczająco duży dla największego ciągu STR_xx powyżej

//****************************************************************************************
char *flashtext(int i) //////////////// Funkcja zwraca stringi z pamięci flash
{
return strcpy_P ( bufor, (char *) pgm_read_word (& (string_table [i]))); // Niezbędne odlewy i wyłuskania, po prostu skopiować.
}
//****************************************************************************************
FTImpl.Cmd_Text(200, 130, 30, FT_OPT_CENTER, flashtext(0));//Dotknij punkty

mam nadzieję, że komuś się przyda:):)

Avatar 1
thornet Windows / Mozilla Firefox 47.0
11 August 2016 - 21:38 Brak informacji

a nie lepiej użyć PSTR

FTImpl.Cmd_Text(200, 130, 30, FT_OPT_CENTER, (PSTR("text")));

Avatar 1
Piotr Windows / Safari 537.36
30 January 2017 - 22:46 Warszawa

Nie wiem, czy lepiej?
Dla jednej linii tekstu pewnie tak.

Avatar 1
Piotr Windows / Safari 537.36
05 January 2016 - 11:33 Poznań

Witam
Dzisiaj przyszło Mega2560 i nie mam już sił, nic nie działa. Jak podłączyć FT800 Mega2560

Bardzo proszę o pomoc w tym temacie.

Avatar 1
Piotr Windows / Safari 537.36
13 January 2016 - 16:01 Warszawa

Widzę, że temat umarł.

Znalazłem fajny programik do obsługi wyświetlacza
na stronie producenta,zgodny z ARDUINO,
FTDI EVE Screen Editor.

Większość w/w problemów rozwiązałem,
nie mniej jednak proszę o pomoc przy podłączeniu do MEGA 2560,
nie chce kombinować na pałę aby czegoś nie uszkodzić.
na razie piszę na UNO ale nie da się ukryć, że pamięć po mału się kończy.

Avatar 1
Piotr Windows / Safari 537.36
13 January 2016 - 16:03 Warszawa

PS
Przydało by się chociaż omówienie wgrania polskiej czcionki,
na pewno już ktoś to robił, widziałem w necie sporo takich wyświetlaczy a na nich polska czcionka.

Pozdro dla wszystkich

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 43.0
04 February 2016 - 16:30 Bytom

I to będzie temat na kolejny odcinek :)

Avatar 1
piotr Windows / Safari 537.36
10 February 2016 - 08:58 Poznań

Super nie mogę się doczekać. Wyświetlacz jest na prawdę super,
a tak na prawdę to Twoja stronka Korneliuszu.
ps.
Zauważyłem, że przydało by się obrócić wyświetlanie o 180 stopni,
po odwróceniu widać lepiej pod większym kątem nachylenia.
Wie ktoś jak by to trzeba było zrobić?

Avatar 1
mleczyk Windows / Mozilla Firefox 57.0
25 December 2017 - 13:18 Warszawa

Witam. I jak sprawa polskich znaków w FT800? Próbowałem coś zrobić na własną ręke niestety poległem.

Avatar 1
Rafal Windows / Safari 537.36
01 February 2016 - 19:04 Brak informacji

Kupiłem taki wyświetlacz Riveldi: RVT28AEFNWR00. Niestety nie jestem w stanie zmusić go do działania z Arduino. Podpinam go poprzez shielda. Z konfiguracją FT_VM801P43_50.h ekran pozostaje niepodświetlony. Zmiana FT_CS_PIN z 9 na 10 powoduje, że się podświetla. Kombinowałem ale nie jestem w stanie nic na nim wyświetlić ;( Może ktoś pomoże?

Dzięki,
Rafal

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 43.0
04 February 2016 - 16:29 Bytom

Cześć - jakie Arduino posiadasz i którą wersję IDE? :)

Avatar 1
Rafal Windows / Safari 537.36
04 February 2016 - 20:40 Brak informacji

Nie wiem czemu mi się wkleiło wcześniej FT_VM801P43_50.h. Oczywiście powinno być FT_VM800P43_50.h - i z takiej konfiguracji korzystam. Arduino to UNO. Jako IDE używam eclipse\'a od baeyens\'a.
Dostaję jakiś dziwny chipId:

FTImpl.Read32(FT_ROM_CHIPID);

O ile dobrze teraz pamiętam było to A4A4A4. Ktoś miał kiedyś podobny problem i miał walniętą taśmę. Ja mam dwie i na obu to samo.

R.

Avatar 1
Michał Windows XP / Safari 537.36
10 February 2016 - 18:32 Brak informacji

Dzień dobry,

uprzejmie proszę o informację (dla laika), na czym polegają zmiany w bibliotece dla Arduino IDE > 1.6.

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 43.0
10 February 2016 - 23:51 Bytom

inny sposób dostępu do pamięci - tak w skrócie :)

Avatar 1
Radek Windows / Safari 537.36
28 February 2016 - 08:48 Radom

Witam,

Jak sprawdzić długość wyświetlanego tekstu, tak aby wyświetlić bezpośrednio np. za wartością, jednostkę, np:

FTImpl.Cmd_Number(10,10,20, FT_OPT_CENTERY, wilgotnosc);
FTImpl.Cmd_Text(50, 10, 20, FT_OPT_CENTERY, " %");

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 43.0
02 March 2016 - 21:58 Bytom

Musisz połączyć w jeden string

Avatar 1
Bike.Bajer Windows / Safari 537.36
04 April 2016 - 21:00 Warszawa

Cześć!
Mam pytanie do użytkowników tego wyświetlacza. Znacie może "komende" do zmiany wartości podświetlenia/jasności? Mój wyświetlacz świeci cały czas na 100%, tak, że patrząc prostopadle do niego nic nie widać :(. Tylko pod kątem coś widać.

Avatar 1
Aqarative Windows / Safari 537.36
06 April 2016 - 11:27 Brak informacji

Jesli pracujesz na Arduino to;
FTImpl.Write(REG_PWM_DUTY,podswietlenie); // Gdzie podświetlenie max 128, 0= wygaszenie wyswietlacza.

Avatar 1
piotricz Windows / Safari 537.36
05 April 2016 - 16:18 Lublin

Wyświetlacz ma minus, wrażliwy na zakłócenia. Przy stosowaniu arduino + przekaźnik + FT800 ciężko wygłuszyć zakłócenia.

Avatar 1
Radek Windows / Safari 537.36
14 April 2016 - 09:48 Sieradz

Czy są jakieś wymagania, do jakich pinów Arduino (PWM, INT) mają być podłączone piny INT, CS, PD FT800? Czy mogą to być dowolne?

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
26 April 2016 - 23:44 Bytom

Wszystko zależy od definicji w nagłówku .h. Zwyczajowo CS może być dowolny pin cyfrowy, po zmianie właśnie w pliku nagłówka. INT zależy, jeśli stricte ma obsługa przerwać, musisz wybrać pin obsługujący przerwania.

Avatar 1
Radek Windows / Safari 537.36
28 April 2016 - 18:50 Sieradz

Nie mogę sobie poradzić z podłączeniem FT800 do ATmega1284p. Zmieniałem piny wg różnych konfiguracji, ale problem wciąż występuje. Pisałem z prośbą o pomoc na elektrodzie, ale bez odzewu. Może tutaj znajdzie się podpowiedź?
http://www.elektroda.pl/rtvforum/topic3191877.html

Avatar 1
Radek Android 6.0 / Safari 537.36
18 May 2016 - 18:04 Warszawa

Hej,
ktoś wie jak wyświetlić napisy (FTImpl.Cmd_Text) obrócone o 90 stopni?

Avatar 1
Kamil Windows 7 / Safari 537.36
04 July 2016 - 14:50 Toruń

Witam,

Wie ktoś może dlaczego jak nie podłączę pinu INT to cały ekran zmienia się płynnie na biały? Jakby jasność na 100% wtedy się przestawiała.

Avatar 1
Martin Windows / Safari 537.36
14 October 2016 - 08:46 Brak informacji

Witam,
Proszę wybaczyć mój polski, używam tłumacza.
Kupiłem ten LCD: http://elty.pl/pl/p/Wyswietlacz-LCD-5-800x480-z-panelem-dotykowym-sterowanianie-SPI%2C-kontoler-FT810-/1783
Czy ktoś ma doświadczenie zadowolić FT810 lub bibliotekę funkcjonalną dla FT810? Używam Arduino 1.6.10.
Pobrałem https://elty.pl/upload/download/FT_App_Gradient.rar~~dobj kodu, który nie działa i zakończyć ten błąd:

Arduino: 1.6.10 (Windows 10), Board: "Arduino/Genuino Uno"

WARNING: Category \'\' in library UIPEthernet is not valid. Setting to \'Uncategorized\'
In file included from sketchFT_Platform.h:198:0,

from sketchFT_CoPro_Cmds.cpp:31:

FT_DataTypes.h:53: error: \'prog_uchar\' does not name a type

typedef prog_uchar ft_prog_uchar8_t;

^

FT_DataTypes.h:54: error: \'prog_char\' does not name a type

typedef prog_char ft_prog_char8_t;

^

FT_DataTypes.h:55: error: \'prog_uint16_t\' does not name a type

typedef prog_uint16_t ft_prog_uint16_t;

^

In file included from sketchFT_Platform.h:199:0,

from sketchFT_CoPro_Cmds.cpp:31:

FT_Gpu_Hal.h:275: error: \'ft_prog_uchar8_t\' does not name a type

ft_void_t Ft_Gpu_Hal_WrMemFromFlash(Ft_Gpu_Hal_Context_t *host,ft_uint32_t addr,const ft_prog_uchar8_t *buffer, ft_uint32_t length);

^

FT_Gpu_Hal.h:276: error: \'ft_prog_uchar8_t\' has not been declared

ft_void_t Ft_Gpu_Hal_WrCmdBufFromFlash(Ft_Gpu_Hal_Context_t *host,FT_PROGMEM ft_prog_uchar8_t *buffer,ft_uint32_t count);

^
exit status 1
\'prog_uchar\' does not name a type

Avatar 2
Korneliusz Mac OS X / Safari 537.36
14 October 2016 - 14:39 Brak informacji

Hi i will check this today

Avatar 1
Martin Windows / Safari 537.36
14 October 2016 - 20:10 Brak informacji

Dziękuję bardzo,
Chciałbym tu użyć przykładu, zgodnie z którym może działać bardzo dobrze z wyświetlaczem FT800. Możliwe jest modyfikowanie tego przykładem i ubiegać się o FT810? Niestety myliłem się.

Dzięki za wszelkie rady.

Avatar 1
TFTLCDCyg Windows 8 / Safari 537.36
15 October 2016 - 06:10 Brak informacji

Try this modified library for FT81X on Due, MEGA, UNO, Teensy 3.2 based on Gameduino 2 library:

http://www.mediafire.com/file/26ouvrp2tkhhln8/GD2+para+FT80X_GD3+para+FT81X.rar

Enjoy it!

Avatar 1
TFTLCDCyg Windows 8 / Safari 537.36
15 October 2016 - 06:14 Brak informacji

For arduino Due:

FT81X Arduino Due

MOSI 11
MISO 12
SCK 13
GND GND
VCC 5V on HotMCU-FT81X TFT´s, 3.3V on Riverdi-FT81X
CS 10

Avatar 1
Bazyliszek Windows / Mozilla Firefox 50.0
04 January 2017 - 14:40 Wrocław

Witam,
Ten artykuł ujawnił istnienie FT800 - wspaniałej platformy graficznej - Dzięki!
Mam już Ft800 (dokładnie Ft800CB FOR HY 43B/50B) i uruchamiam na nim wszystkie przykłady dla Arduino za wyjątkiem tych, które wykorzystują czytnik kart SD.
Np. aplikacja Image Viewer, podłączenie jak poniżej:
FT_SD_CSPIN: 8
FT_CS_PIN: 9
FT_PDN_PIN: 4
FT_INT_PIN: 3
tak podłączyłem do Arduino Uno.
Po uruchomieniu nic się nie wyświetla.
Jeśli podłącze FT_INT_PIN: do portu #10 otrzymuję komunikat ""STORAGE DEVICE NOT FOUND".

Czytnik kart działa z innym programem z wykorzystaniem biblioteki SD.h w tym samym fizycznym podłączeniu z FT800 - więc jest sprawny (czyta zawartość karty).

Proszę o pomoc albo jakąś sugestie.
Pozdrawiam

Avatar 1
Piotr Windows / Safari 537.36
29 January 2017 - 20:58 Warszawa

Czy te przykłady nie wymagają od procesora większej pamięci???
Kiedyś uruchamiałem , ale na mega 2560.
na uno raczej nie pociągnie.
ps.
no i musisz na kartę wcześniej wgrać pliki potrzebne dla programu.

Avatar 1
bike.bajer Windows / Safari 537.36
08 January 2017 - 00:59 Kęty

Witam.
Ma ktoś jakieś sensowne rozwiązanie wyświetlania wartości ujemnych i zmiennoprzecinkowych?

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 50.0
19 January 2017 - 18:19 Bytom

Zamień na stringa

Avatar 1
Piotr Windows / Safari 537.36
29 January 2017 - 21:12 Warszawa

char *TempChar(float ft) //zamienia temperature F L O A T na C H A R [x]
{
String temp = String(ft);// zmiana float na string odczytu temperatury z czujnika "i" do temp1
temp.toCharArray(bufor, 8); // zmiana string na *char z temp do bufora( 6 znaków)
int8_t Length = strlen(bufor);
temp.toCharArray(bufor, Length);
return bufor; // zwracamy bufor do funkcji
}
//****************************************************************************************
char *IntToChar(int ft) //zamienia temperature I N T E G E R na C H A R [x]
{
String temp = String(ft);// zmiana float na string odczytu temperatury z czujnika "i" do temp1
temp.toCharArray(bufor, 8); // zmiana string na *char z temp do bufora( 6 znaków)
int8_t Length = strlen(bufor);
temp.toCharArray(bufor, Length + 1);
return bufor; // zwracamy bufor do funkcji

}
//****************************************************************************************
float IntToFloat(int x) // zamienia temp integer na float 0,10 - 2 miejsca po przecinku
{
return ((float)x / 10);
}
//****************************************************************************************
//**************************************************************************************************************************************//
void CzytajTemp(int b) // czyta i zamienia temperature F L O A T na INTEGER * 10 //32,7 = 327
{
TempFloat[b] = sensors.readTemperature(FA(sensorsAddress[b]));
TempInt[b] = int(10 * TempFloat[b]);
sensors.request();
// Serial.print(" int- ");Serial.print(TempInt[b]);
// Serial.print(" char-");Serial.print(TempChar(b));
// Serial.print(" float-");Serial.println(TempFloat[b]);
}

// tak wywołujesz
FTImpl.ColorRGB((tag3 == 0) ? 0x00ff7f : 0xff7f00);//111111 // lewo góra
FTImpl.Cmd_Text(143, 100, 30, FT_OPT_RIGHTX, flashtext( 166 + dane[nrdanx])); //typ
FTImpl.ColorRGB((tag3 == 1) ? 0x00ff7f : 0xff7f00);//2222222 // prawo góra
FTImpl.Cmd_Text(285, 100, 30, FT_OPT_RIGHTX, strcat(TempChar((float)dane[nrdanx + 1] / 10 ), " s")); //sek
FTImpl.ColorRGB((tag3 == 2) ? 0x00ff7f : 0xff7f00);//3333333 // lewo dół
FTImpl.Cmd_Text(143, 165, 30, FT_OPT_RIGHTX, strcat(IntToChar(dane[nrdanx + 2]), " %")); //%
FTImpl.ColorRGB((tag3 == 3) ? 0x00ff7f : 0xff7f00);//4444444 // prawo dół
FTImpl.Cmd_Text(285, 165, 30, FT_OPT_RIGHTX, strcat(IntToChar(dane[nrdanx + 3]), " %")); //%

u mnie wszystko śmiga
możesz sobie dostosować

Avatar 1
Piotr Windows / Safari 537.36
29 January 2017 - 21:22 Warszawa

Witam Korneliuszu.
Obiecałeś kiedyś tam pokazać jak czcionkę wgrać itp.
Może przyszedł już na to czas.
Widzę że coraz więcej ludzi posiada te wyświetlacze, a Google odsyła najczęściej do Ciebie Korneliuszu

Pozdrawiam
Piotr

Avatar 1
Avalyah Windows 7 / Safari 537.36
21 April 2017 - 10:12 Warszawa

Świetny artykuł, odkrył przede mną naprawdę sporo ciekawych możliwości, bo wszystkie dotychczasowe ekraniki arduinowe są ekstremalnie powolne.

Mam jednak pytanie, bo czytałem, że jest z tym problem, a chodzi mianowicie o używanie jednocześnie drugiego urządzenia spi (karty sd). Zamówiłem sobie na ebay model z procesorem ft800, taki, jak w tym artykule.

Podobno linia CS jest trzymana prez sterownik ft800 w stanie low, przez co nie można odczytywać danych np. z karty uSD, bo dane te trafiałyby też do sterownika, a nie tylko do arduino. Rozwiązaniem ma być komenda:

void EndTransferCmd() //End transfer in continuous mode.

Sam jeszcze tego nie mogę przetestować, ale w takim razie czy wystarczy po komendach:

FTImpl.DLEnd(); // Zamykamy liste wyswietlania
FTImpl.Finish(); // Renderujemu liste i czekamy na ukonczenie

dopisać komendę EndTransfer, czy może jest ona wbudowana już w polecenie Finish?

Pozdrawiam serdecznie!

Avatar 1
Avalyah Windows 7 / Safari 537.36
25 April 2017 - 22:36 Warszawa

Mam jeszcze jedno pytanie, tym razem jednak znacznie prostsze, odnośnie zasilania.

Układ posiada bufory tolerujące 5V, ale ja chciałbym przerobić biblioteki i sterować nim za pomocą procesora atxmega, który ma wyjścia 3.3V

W takim razie czy po prostu do pinów 5V i GND podpiąć 3.3V? Bo jeżeli podpiąłbym 5V, to chyba uszkodziłbym procesor, bo mimo, że on wysyłałby sygnały 0-3.3V, to układ odpowiadałby napięciem 0-5V. Nie za bardzo wiem, gdzie mógłbym znaleźć jakieś informacje na ten temat dla tego konkretnego układu, który ma tylko takie wyprowadzenia.

Z góry dziękuję za odpowiedź i pozdrawiam!

Avatar 1
tomaszek Windows / Safari 537.36
19 May 2017 - 13:21 Białystok

Super artykuł.

Pytanko:
Żaden projekt udostępniony na stronie kontrolera nie chce mi się skompilować, bo:
"fatal error: ..WireWire.h: No such file or directory"

Jak to naprawić?

Z góry dzięki za odpowiedź!

Avatar 1
Migo Windows / Safari 537.36
16 July 2017 - 09:39 Brak informacji

Czy ktos potrafil by mnie oswiecic ja wyswietlic zegard z rtc 1307 na tym cudenku

Avatar 1
Serek Android 6.0 / Safari 537.36
09 October 2017 - 15:26 Częstochowa

Mam zmienną temperatURE
Float aaa która podaje np.78,3 st.
Jak ją wyświetlić? W jaki sposób wyświetlice liczby po przecinku. (Nie jestem programistą i dopiero się uczę)

Avatar 1
serek Windows / Safari 537.36
10 October 2017 - 12:07 Częstochowa

Wczoraj troszkę nie jasno napisałem dlatego podaję mój kod z którym nie mogę sobie poradzić.

// Include the libraries we need
#include
#include
#include
#include
#include
#include

FT800IMPL_SPI FTImpl(FT_CS_PIN,FT_PDN_PIN,FT_INT_PIN);
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
float aaa = sensors.getTempCByIndex(0);

/*
* The setup function. We only start the sensors here
*/
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
FTImpl.Init(FT_DISPLAY_RESOLUTION);
FTImpl.SetDisplayEnablePin(FT_DISPENABLE_PIN);
FTImpl.SetAudioEnablePin(FT_AUDIOENABLE_PIN);
FTImpl.DisplayOn();
FTImpl.AudioOn();

FTImpl.DLStart();
FTImpl.Finish();
FTImpl.DLStart();
FTImpl.DLEnd();
FTImpl.Finish();
// Start up the library
sensors.begin();
}

void loop(void)
{
FTImpl.DLStart();
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
// After we got the temperatures, we can print them here.
// We use the function ByIndex, and as an example get the temperature from the first sensor only.
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(sensors.getTempCByIndex(0));
float temp = (sensors.getTempCByIndex(0));

FTImpl.Cmd_Number(10,10,31, FT_OPT_SIGNED, temp);

//FTImpl.Cmd_Text(172, 59, 28, 0, (sensors.getTempCByIndex(0));
FTImpl.DLEnd();
FTImpl.Finish();
}

Avatar 1
serek Windows / Safari 537.36
10 October 2017 - 22:13 Częstochowa

Bardzo proszę o poprawienie przykładu tak aby wyświetlał temperaturę z miejscami po przecinku.Zależy mi na jak najszybszym poprawieniu.

Avatar 1
maxiu Windows 7 / Safari 537.36
27 October 2017 - 07:55 Jaworzno

Witam
Mam problem próbuje wgrać program ( przykład 1) do orange mega2560.
podpoiłem wyświetlacz cs-9, pd-4, int-3, mosi-51, miso-50, sck-52 zasilanie z płytki 5v i gnd. Po wgraniu programu wyswietlacz jest ciemny. Jeżeli mam podpięty wyświetlacz i próbuje wgrać program to muszę wypiąć miso mosi sck. Używam programatora USBasp. Proszę o pomoc.

Avatar 1
Piotr Windows / Safari 537.36
13 May 2018 - 15:45 Brak informacji

podepnij na sztywno kabelkami, nie taśmą. u mnie poszło.

Avatar 1
Piotr Windows / Safari 537.36
13 May 2018 - 15:45 Brak informacji

podepnij na sztywno kabelkami, nie taśmą. u mnie poszło.

Avatar 1
ositopl76 Android 7.0 / Safari 537.36
01 January 2018 - 12:52 Brak informacji

Członkowie ktoś jak wyświetlić zdjęcie lub rysunek.

Avatar 1
Zygmunt Windows / Mozilla Firefox 60.0
31 May 2018 - 19:49 Brak informacji

Witam
Czy ktoś wie jak należy ustawić parametry obrazu dla rozdzielczości
800 X 600 (FT810).
Przejrzałem notę katalogową i programming Guide i nigdzie nie mogę tego
znaleźć.

Avatar 1
Marcin Windows 7 / Safari 537.36
19 November 2018 - 21:33 Łódź

Ktoś wie jak sterować wyświetlaczem ze sterownikiem Ft811.

Avatar 1
Wojciech Android 6.0 / Mozilla Firefox 62.0
07 September 2019 - 16:43 Brak informacji

Używam bibliotek gd3

Dawno nic nie robiłem ale zatrzymałem się na podłączeniu czytnika kart pamięci by zaciągał pliki graficzne i pliki z czciaka

Avatar 1
robo1973 Windows 7 / Mozilla Firefox 72.0
22 January 2020 - 21:42 Brak informacji

Witam !!!
W jaki sposób można utworzyć większą czcionkowe niż 30?
Poszukuje przykładu graficznej reprezentacji wyniku np wskaźnik oraz możliwości rysowanie wykresów

Avatar 1
robo Windows 7 / Mozilla Firefox 72.0
13 February 2020 - 13:16 Brak informacji

Witam !!!
Poszukuje informacji, przykładu jak na FT800 narysować charakterystykę
Y=f(X) ?

Avatar 1
robo1973 Windows 7 / Mozilla Firefox 73.0
07 March 2020 - 14:13 Brak informacji

Witam !!!
W jaki sposób w FT 800 zdefiniować klawiaturę do wprowadzanie danych: login, pass?