Wyświetacze TFT Riverdi ze sterownikiem FT800 / FT801
Jeśli interesujecie się wyświetlaczami TFT wykorzystującymi kontrolery FTDI Chip FT800/FT801, to bez wątpienia powinniście zwrócić uwagę na propozycję firmy Riverdi. Dzięki ogromnej uprzejmości firmy UNISYSTEM z Gdańska, otrzymałem do testów kilka wyświetlaczy wykorzystujące kontrolery FT800 jak i FT801. Oba układy należą do grupy kontrolerów określanych mianem EVE (Embedded Video Engine), czyli z wbudowanym silnikiem wideo, znacząco przyśpieszającym działanie standardowych wyświetlaczy TFT z mniej wydajnymi MCU.
Wyświetlacze rodziny RVT43ULFNWC0x (FT801)
Modele ekranów RVT43ULFNWC01 oraz RVT43ULFNWC03 są wyświetlaczami o przekątnej wynoszącej 4.3" i charakteryzującymi się jasnością na poziomie 500cd/m2. Aktywną część stanowi obszar 95.04mm x 53.86mm oferujący rozdzielczość 480x272 pikseli o proporcjach 16:9.
Za podświetlanie matrycy odpowiada 10 jasnych diod LED, a całość pokrywa warstwa antyodblaskowa. Przy zasilaniu wyświetlacza wraz z podświetlaniem LED napięciem 3.3V, całość pobiera prąd o natężeniu 330mA (maksymalnie 412mA). Pobór prądu może zostać zredukowany do poziomu ~250mA w przypadku zasilenia obwodu podświetlania napięciem 5V. Jeśli chodzi o kąty widzenia, producent deklaruje wartości w zakresie 50°/70°/70°/70°.
RVT43ULFNWC0x mogą pracować również w utrudnionych warunkach, zakresu temperatur w których wyświetlacz działa prawidłowo to -20°C-70°C przy wilgotności sięgającej 90% RH.
Pod względem konstrukcji wyświetlacz ten wydaje się być idealny do montażu we wszelkiego rodzaju obudowach. Zewnętrzna ramka z łatwością pozwoli na estetyczne ukrycie przygotowanego otworu, a dwustronna taśma klejąca 3M 467MP o grubości 0.5mm pozwala na jego zamontowanie praktycznie bez użycia śrub. Dlatego też modele te z pewnością spodobają się osobom, które cenią sobie wysoki poziom estetyki. Wymiary zewnętrzne wynoszą 120.38mm x 79.20mm, natomiast grubość to niespełna 8.43mm.
Oba wyświetlacze posiadają kontroler FT801 mogący komunikować się mikrokontrolerem za pomocą magistrali I2c lub SPI. W odróżnieniu od modelu z układem FT800 obsługuje ekrany pojemnościowe, wykorzystując w tym celu dodatkowego sterownika FT5306 zdolnym do identyfikacji 5 punktów dotyku w maksymalnej rozdzielczości 1280x768. Różni się więc pod tym względem od ekranów wykorzystujących wersję FT800, gdzie obsługa funkcji dotykowych została zaszyta w układ.
Kontroler FT801 - również jak jego starszy brat - posiada zdolność odtwarzania 8-bitowych plików PCM oraz plików w formacie μ-Law z częstotliwością próbkowania od 8kH do 48kHz. Po drugiej stronie wyświetlacza zamontowano 20-pinowe złącze FFC o rastrze 0.5mm.
Obsługa 5-punktowego ekranu pojemnościowego wymaga odrobinę większej uwagi, która pozwoli nam zrozumieć późniejsze jego działanie. Mianowicie - każdy następny przyłożony punkt dotyku posiada swój odpowiednio kolejny indeks, przyjmujący wartość od 0 do 4. Indeks ten będzie zajmowany do czasu, aż zostanie on uwolniony. Przykładowy mechanizm:
- Pierwszy punktu (1) dotyku otrzymuje indeks "0" oraz przypisanie znacznika
- Drugi punkt (2) dotyku otrzymuje indeks "1" bez przypisania znacznika
- Trzeci punkt (3) dotyku otrzymuje indeks "2" bez przypisania znacznika
- Zwalniamy drugi (2) punkt dotyku, a indeks "1" zostaje uwolniony
- Czwarty punkt (4) dotyku otrzyma zwolniony indeks "1" również bez przypisania znacznika
- Zwalniamy pierwszy (1) punkt dotyku, a indeks "0" zostaje uwolniony
- Piąty punkt (5) dotyku otrzyma zwolniony indeks "0" oraz przypisanie znacznika
RVT3.5B320240CFWR00
Innym wyświetlaczem tej firmy jest model oznaczony jako RVT3.5B320240CFWR00. Tym razem jest wyświetlacz o przekątnej 3.5" i rozdzielczości 320x240 pikesli (przekątna 4:3) wykorzystujący znany nam już sterownik FT800 z obsługą ekranu rezystancyjnego.
Charakteryzuje się on jasnością 340 cd/m2, gdzie aktywny obszar roboczy to 70.08 mm × 52.56mm. Mniejsza przekątna ekranu to również mniejsze zapotrzebowanie na prąd. Przy zasilaniu napięciem 3.3V wyświetlacz pobiera około 220mA. Odrobinę mniejsze są również deklarowane kąty widzenia wynoszące kolejno 40°/60°/60°/60°. Wyświetlacz montowany jest za pomocą 4 śrub, a więc może znaleźć zastosowanie w projektach, których wyświetlacz będzie schowany nieco głębiej w obudowie.
Interfejs I2c / SPI
Wszystkie prezentowane dziś wyświetlacze mogą "rozmawiać" z mikrokontrolerm za pośrednictwem magistrali SPI lub I2c. Wybór pomiędzy nimi dokonywany jest poprzez odpowiednie podłączenie linii 9 (MODE). Domyślnie linia MODE jest podciągnięta do zasilania rezystorem o wartości 47kΩ, dlatego trybem pracy jest I2c. W przypadku chęci pracy z wyświetlaczami przez SPI, wystarczy więc zewrzeć ją do masy.
Lista i kolejność wyprowadzeń prezentuje się następująco:
Pin | Oznaczenie | Komentarz |
1 | VDD | Zasilanie 3.3V |
2 | GND | Masa |
3 | SPI_SCLK / I2C_SCL | Linia sygnałowa, podciągnięta do zasilania R=47kΩ |
4 | MISO / I2C_SDF | Linia sygnałowa, podciągnięta do zasilania R=47kΩ |
5 | MOSI / I2C_SA0 | Linia sygnałowa, podciągnięta do zasilania R=47kΩ |
6 | CS / I2C_SA1 | Linia sygnałowa, podciągnięta do zasilania R=47kΩ |
7 | INT | Linia przerwania, aktywny stan niski, podciągnięta do zasilania R=47kΩ |
8 | PD | Linia Power Down, aktywny stan niski, podciągnięta do zasilania R=47kΩ |
9 | MODE | Tryb pracy. SPI podciągnięte do masy. I2c podciągnięte do zasilania. Domyślnie podciągnięte do zasilania R=47kΩ |
10 | AUDIO_OUT | Wyjście audio |
11 ... 16 |
NC | Nie podłączone |
17 | BLVDD | Napięcie zasilania podświetlenia LED. Może być podłączone do VDD |
18 | BLVDD | Napięcie zasilania podświetlenia LED. Może być podłączone do VDD |
19 | BLGND | Masa podświetlania LED. Połączona z GND |
20 | BLGND | Masa podświetlania LED. Połączona z GND |
Shield dla Arduino UNO
Wykorzystanie wyświetlaczy w projektach może wydawać się problematyczne przez mniej lubiących lutowanie, własnego gniazda ZIF. Nie ma się czego jednak obawiać, ponieważ bez problemu znajdziemy gotowe adaptery na listwę kołkową. Dodatkowo producent przygotował specjalny shield dla Arduino, dzięki któremu bez najmniejszego kłopotu podłączymy wyświetlacze.
Płytka została wyposażona we wszystkie potrzebne gniazda: 20 pinowy ZIF, listwę kołkową z wyprowadzeniami sygnałów ekranu, slot pamięci microSD oraz konektor audio do którego możemy podłączyć 8Ω/1W głośnik. Znajdziemy również na niej odpowiednie zworki do wyboru napięcia zasilania podświetlających diod LED oraz piny pomiarowe. A więc wszystko to, co potrzebne zarówno do nauki jak i poznawania działania wyświetlaczy Riverdi.
Co ciekawe, shield jest również przygotowany do współpracy z nadchodzącymi wyświetlaczami 5” i 7” 800x480 z układami FT812 i FT813
Kilka ważnych uwag:
- Funkcję wzmacniacza audio pełni TPA6205A1DRB od Texas Instruments, do którego przepuszczany jest sygnał przez bufor SN74LVC1G125
- Wzmacniacz audio można włączać lub wyłączać za pomocą pinu sterującego D4
- Do wyboru slotu kart pamięci microSD na SPI (ChipSelect) został wykorzystany pin D5
- Detekcja obecności karty pamięci w czytniku microSD została podpięta pod pin D6 - jest bardzo fajna cecha, dzięki której możemy uwzględnić działanie programu od obecności karty pamięci z danymi
- Wybór napięcia zasilania 3.3V / 5V dla podświetlania LED wyświetlacza realizujemy za pomocą zworki CN4
- Do pomiaru poboru prądu służą zworki CN3 i CN5, należy jednak odlutować sąsiadujące przy nich rezystory oznaczone jako R6 i R4 (0Ω)
Płytka ewaluacyjna RVTB-EB01 z STM32F0
Fani mikrokontrolerów STMicroelectronics również otrzymują wsparcie w postaci płytki RVTB-EB01.
Płytka nie posiada co prawa slotu pamięci microSD, ale za to została wyposażona w 8Mbit pamięci Flash z której wyświetlacz może czerpać potrzebne pliki graficzne lub audio. Domyślnie płytka posiada wgrany firmware prezentujący możliwości wszystkich wyświetlaczy Riverdi z kontrolerem FT800 i FT801. Za pomocą mikroprzełącznika "SWITCH" wybieramy odpowiednią rozdzielczość i typ ekranu.
Również w tym przypadku nie zapomniano o komplecie pinów pomiarowych i zworek pełniących analogiczną funkcję co w przypadku shielda dla Arduino. Odpowiednie kody źródłowe, szczegółową dokumentację, jak przykładowy firmware znajdziecie na stronie producenta.
Biblioteki
Producent udostępnił również odpowiednie biblioteki dla Arduino, ale my oczywiście skorzystamy z oficjalnych w wersji 1.4.0. Wygodą jest ich rozdzielenie w zależności od tego, czy będziemy pracować z wersją FT800 czy FT801:
FTDI_V1.4.0_FT800: pobierz biblioteki dla Arduino
FTDI_V1.4.0_FT801: pobierz biblioteki dla Arduino
Pliki musimy oczywiście rozpakować do naszego katalogu z bibliotekami /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 poprawione wersje dla Arduino IDE > 1.6.0:
FTDI_V1.4.0_FT800: pobierz biblioteki dla Arduino 1.6.x
FTDI_V1.4.0_FT801: pobierz biblioteki dla Arduino 1.6.x
Przykładowy program
Do pierwszego "odpalenia" skorzystamy z programu, który był już opisywany wcześniej przy testowaniu wyświetlaczy HY43B/HY50B. Jedyną zmianą jest skorzystanie z innego pliku nagłówka FT_VM801B43.h kompatybilnego z wyświetlaczem oraz użycie implementacji FT801IMPL_SPI.
- #include "SPI.h"
- #include "Wire.h"
- #include "FT_VM801B43.h"
- FT801IMPL_SPI FTImpl(FT_CS_PIN, FT_PDN_PIN, FT_INT_PIN);
- boolean DisplayInit()
- {
- uint32_t chipid = 0;
- Serial.println("Inicjalizacja ekranu");
- // Inicjalizujemy ekran
- FTImpl.Init(FT_DISPLAY_RESOLUTION);
- delay(20);
- // Pobieramy ID ukladu i sprawdzamy czy to FT800
- chipid = FTImpl.Read32(FT_ROM_CHIPID);
- if (chipid != FT801_CHIPID)
- {
- Serial.print("Nie obslugiwany uklad: 0x");
- Serial.println(chipid, HEX);
- return false;
- }
- Serial.print("Obslugiwany uklad: 0x");
- Serial.println(chipid, HEX);
- // Wlaczamy ekran
- FTImpl.DisplayOn();
- return true;
- }
- void scena(unsigned long int czas)
- {
- FTImpl.DLStart(); // Otwieramy liste wyswietlania
- FTImpl.ColorRGB(0xFF, 0xFF, 0xFF); // Ustawiamy kolor bialy (R,G,B)
- // Wyswietlamy tekst w naroznikach
- // Parametry: x, y, rozmiar 16-31, centrowanie, tekst
- FTImpl.Cmd_Text(10, 10, 20, FT_OPT_CENTERY, "LEWO-GORA");
- FTImpl.Cmd_Text(FT_DISPLAYWIDTH - 10, 10, 20, FT_OPT_RIGHTX | FT_OPT_CENTERY, "PRAWO-GORA");
- FTImpl.Cmd_Text(10, FT_DISPLAYHEIGHT - 10, 20, FT_OPT_CENTERY, "LEWO-DOL");
- FTImpl.Cmd_Text(FT_DISPLAYWIDTH - 10, FT_DISPLAYHEIGHT - 10, 20, FT_OPT_RIGHTX | FT_OPT_CENTERY, "PRAWO-DOL");
- // Wyswietlamy napis na srodku
- FTImpl.ColorRGB(0xFF, 0xFF, 0x00); // Ustawiamy kolor zolty (R,G,B)
- FTImpl.Cmd_Text(FT_DISPLAYWIDTH / 2, FT_DISPLAYHEIGHT / 2 - 15, 29, FT_OPT_CENTER, "www.jarzebski.pl");
- // Wyswietlamy liczbe z parametru funkcji
- FTImpl.ColorRGB(0x00, 0xFF, 0x00); // Ustawiamy kolor zielony (R,G,B)
- FTImpl.Cmd_Number(FT_DISPLAYWIDTH / 2, FT_DISPLAYHEIGHT / 2 + 15, 29, FT_OPT_CENTER, czas);
- // Latajace hashe
- int offset1 = czas % FT_DISPLAYWIDTH;
- int offset2 = FT_DISPLAYWIDTH - offset1;
- FTImpl.ColorRGB(0x00, 0xFF, 0xFF); // Ustawiamy kolor turkusowy (R,G,B)
- FTImpl.Cmd_Text(offset1, FT_DISPLAYHEIGHT / 2 - 50, 31, FT_OPT_CENTER, "#");
- FTImpl.Cmd_Text(offset2, FT_DISPLAYHEIGHT / 2 + 50, 31, FT_OPT_CENTER, "#");
- FTImpl.DLEnd(); // Zamykamy liste wyswietlania
- FTImpl.Finish(); // Renderujemu liste i czekamy na ukonczenie
- }
- void setup()
- {
- Serial.begin(9600);
- while (!DisplayInit()) {}
- }
- void loop()
- {
- scena(millis());
- }
Obsługa funkcji wielodotyku
Poniższy program realizuje funkcje obsługi pojemnościowego ekranu dotykowego, jego kalibrację oraz jej zapamiętywanie. Program został szczegółowo omówiony w materiale filmowym, dlatego tutaj został tylko opublikowany w celu łatwiejszego skopiowania.
- #include "SPI.h"
- #include "Wire.h"
- #include "FT_VM801B43.h"
- FT801IMPL_SPI FTImpl(FT_CS_PIN, FT_PDN_PIN, FT_INT_PIN);
- // Tablica kalibracyjna
- uint8_t touchCallibration[24] = {
- 0x39, 0x62, 0x0, 0x0,
- 0x94, 0x0, 0x0, 0x0,
- 0x10, 0x7, 0xED, 0xFF,
- 0xC0, 0xFD, 0xFF, 0xFF,
- 0x37, 0x62, 0x0, 0x0,
- 0x85, 0xD9, 0xF8, 0xFF
- };
- boolean DisplayInit()
- {
- uint32_t chipid = 0;
- Serial.println("Inicjalizacja ekranu");
- // Inicjalizujemy ekran
- FTImpl.Init(FT_DISPLAY_RESOLUTION);
- delay(20);
- // Pobieramy ID ukladu i sprawdzamy czy to FT800
- chipid = FTImpl.Read32(FT_ROM_CHIPID);
- if (chipid != FT801_CHIPID)
- {
- Serial.print("Nie obslugiwany uklad: 0x");
- Serial.println(chipid, HEX);
- return false;
- }
- Serial.print("Obslugiwany uklad: 0x");
- Serial.println(chipid, HEX);
- // Wlaczamy ekran
- FTImpl.DisplayOn();
- return true;
- }
- void punkt(byte i, int16_t x, int16_t y)
- {
- char buffer[50];
- FTImpl.ColorRGB(0xFF,0xFF,0xFF); // Kolor bialy
- // Wyswietl X
- sprintf(buffer, "X%d = %d", i, x);
- FTImpl.Cmd_Text(10, 10 + (i * 30), 24, FT_OPT_CENTERY, buffer);
- // Wyswietl Y
- sprintf(buffer, "Y%d = %d", i, y);
- FTImpl.Cmd_Text(170, 10 + (i * 30), 24, FT_OPT_CENTERY, buffer);
- // Jesli jest dotyk, rysuj punkt
- if (x != -32768 && y != -32768)
- {
- FTImpl.Begin(FT_POINTS); // Wybor punktu jako prymitywu
- FTImpl.PointSize(48 * 16); // Rozmiar punktu 16px
- FTImpl.Vertex2f(x * 16, y * 16); // Punkt x y
- FTImpl.End(); // Zakonczenie prymitywu
- }
- }
- void scena()
- {
- sTagXY sTagxy; // Dane XY + Tag
- sCTouchXY cTouchXY; // Dane XY0-4
- FTImpl.GetTagXY(sTagxy); // Pobieramy X,Y,TAG
- FTImpl.GetCTouchXY(cTouchXY); // Pobieramy X0-4, Y0-4
- FTImpl.DLStart(); // Otwieramy liste wyswietlania
- // Rysujemy punkty
- punkt(0, cTouchXY.x0, cTouchXY.y0);
- punkt(1, cTouchXY.x1, cTouchXY.y1);
- punkt(2, cTouchXY.x2, cTouchXY.y2);
- punkt(3, cTouchXY.x3, cTouchXY.y3);
- punkt(4, cTouchXY.x4, cTouchXY.y4);
- // Kolor guzika
- FTImpl.Cmd_FGColor(0x444444);
- // Znacznik przycisku
- FTImpl.Tag(1);
- // Opcje guzika
- int tagoption = 0;
- // Jesli wykryto tag 1, zmien wyglad i kolor przycisku
- if (sTagxy.tag == 1)
- {
- tagoption = FT_OPT_FLAT;
- FTImpl.Cmd_FGColor(0x880000);
- }
- // Rysuj przycisk
- FTImpl.Cmd_Button(
- 5, FT_DISPLAYHEIGHT-90, // X,Y
- 300, 80, // W,H
- 28, // Font
- tagoption, // Opcje
- "Przycisk" // Tekst przycisku
- );
- FTImpl.DLEnd(); // Zamykamy liste wyswietlania
- FTImpl.Finish(); // Renderujemu liste i czekamy na ukonczenie
- }
- void kalibracja()
- {
- 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, "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
- FTImpl.SetCTouchMode(FT_CTOUCH_MODE_EXTENDED);
- // Pobranie zawartosci 12 rejestrow i wyswietlenie w konsoli
- Serial.println("uint8_t touchCallibration[24] = {");
- for (uint8_t i = 0; i < 24; i++)
- {
- if ((i % 4 == 0) && (i > 0)) Serial.println();
- Serial.print("0x");
- Serial.print(FTImpl.Read(REG_CTOUCH_TRANSFORM_A + i), HEX);
- if (i < 23) Serial.print(", ");
- }
- Serial.println();
- Serial.println("};");
- }
- void setup()
- {
- Serial.begin(9600);
- while (!DisplayInit()) {}
- kalibracja();
- // Jesli mamy juz skalibrowany
- // FTImpl.SetCTouchMode(FT_CTOUCH_MODE_EXTENDED);
- //
- // for (uint8_t i = 0; i < 24; i++)
- // {
- // FTImpl.Write(REG_CTOUCH_TRANSFORM_A + i, touchCallibration[i]);
- // }
- }
- void loop()
- {
- scena();
- }
Film
Zapraszam również do obejrzenia filmu na temat tych wyświetlaczy jako zapowiedzi obiecanej kontynuacji serii o wyświetlaczach z układami FT800/FT801. Czeka tam na Was również niespodzianka jaką przygotowałem dla Was z firmą UNISYSTEM.
Ocena końcowa
Osobiście uważam, że wyświetlacze (szczególnie z ramką maskującą) to bardzo udana i profesjonalna konstrukcja, pozwalająca na ich wykorzystanie w wielu ciekawych projektach. Na myśl przychodzą mi ekrany reklamowe ze zdolnością interakcji z użytkownikiem. Pasjonaci domowych wynalazków z pewnością znajdą zastosowanie w różnego typu panelach sterujących, gdzie na szczególną ocenę zasługuje wysoka estetyka wykonania i prostota implementacji chociażby z Arduino. Dla firm zajmujących się tematyką na pewno ma tutaj zgodność produkru z unijną dyrektywą RoHS, czego nie zawsze można powiedzieć o azjatyckich odpowiednikach.
Dystrybucją wyświetlaczy Riverdi w Polsce zajmują się firmy Unisystem oraz TME.
Reklama
Komentarze
Ciągła kalibracja ekranu po uruchomieniu Arduino jest dość frustrująca.
Ale można to zrobić tak...
#define EEPROM_CALIBRATION_DATA_START 1
...
...
if (EEPROM.read(0) != 0x7c) { //czy w EEPROM procesora o adresie 0 zawiera wartość 0x7c
kalibracja(); //nie wiec kalibrujemy ekran i zapisujemy wyniki w EEPROM procesora
for (int i = 0; i < 24; i++) EEPROM.write(EEPROM_CALIBRATION_DATA_START + i, FTImpl.Read(REG_TOUCH_TRANSFORM_A + i));
EEPROM.write(0, 0x7c); // jest ... kopiujemy dane do rejestów "dotyku"
} else {
for (int i = 0; i < 24; i++) FTImpl.Write(REG_TOUCH_TRANSFORM_A + i, EEPROM.read(EEPROM_CALIBRATION_DATA_START + i));
}
Panele pojemnościowe typu projected capacitive od Riverdi są skalibrowane fabrycznie i nie wymagają w zasadzie kalibracji jeśli ekran wyświetlacza pokrywa się z obszarem panelu dotykowego. Oczywiście niezbędne jest ustawienie rejestrów transformacji FT801 ponieważ rozdzielczość wyświetlacza i panelu dotykowego są różne.
Ale o tym Korneliusz obiecał napisać w przyszłym odcinku;).
Poniżej podaję rejestry transformacji obliczone dla paneli pojemnościowych Riverdi 3.5" oraz 4.3" (wzięte z kodów źródłowych Riverdi Revelation Board - http://riverdi.com/revelation/)
if(tftConfig==CTP43)
{
//Touch calibration using calculated values, this values are proper for 4.3" CTP
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_A,0x0000640F);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_B,0xFFFFFc25);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_C,0xFFF73909);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_D,0x0000014B);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_E,0x00006125);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_F,0xFFF56FDB);
}
if(tftConfig==CTP35)
{
//Touch calibration using calculated values, this values are proper for 3.5" CTP
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_A,0x00005D05);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_B,0xFFFFFD01);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_C,0xFFEB6E37);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_D,0xFFFFFF14);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_E,0x00006C49);
Ft_Gpu_Hal_Wr32(phost,REG_TOUCH_TRANSFORM_F,0xFFEEA73A);
}
Czy istnieje sposób do podpięcia powyższych wyświetlaczy do raspberry pi?
Jak najbardziej, najlepiej do tego celu użyć Hermes Board czyli płytki przejściowej USB<>SPI ze złączem do wyświetlaczy Riverdi:
http://riverdi.com/hermes-board/
FTDI przygotowało odpowiedni AN dla takiej konfiguracji:
http://www.ftdichip.com/Support/Documents/AppNotes/AN_350_FT800_on_Raspberry_Pi.pdf
A dla przypadku użycia pythona - czy może ktoś próbował coś skomunikować?
Udało mi się napisać odpowiednią \'bibliotekę\' do obsługi rysowania które działa bezbłędnie jednak mam dość spory problem z wysyłaniem obrazów JPG do wyświetlacza, do czego właśnie go potrzebuję. Czy może ktoś coś próbował ? Czy może ktoś byłby chętny by pomóc? Mógłbym udostępnić kod na githubie.
Witam, a czy dzięki Shieldowi wyświetlacz możemy podłączyc do kazdego Arduino czy tylko do wybranych?
Jak najbardziej do wszystkich, płytki Arduino są ze sobą kompatybilne pod względem sygnałów wyprowadzonych na Shield.
WItam, mam wyświetlacz RIverdi ze sterownikiem FT813, czy te programu zadziałją z tym sterownikiem?
Tego nie wiem :) Jak dopadnę ten wyświetlacz to sprawdzę
Witam, na stronie Riverdi są kody do obsługi nowych kontrolerów FT81x, czyli również wyświetlaczy z FT813.
http://riverdi.com/revelation/
Można też skorzystać z Hermes board, czyli płytki dzięki której można dołączyć wyświetlacze Riverdi do dowolnego komputera przez USB, kody do FT813 są również dostępne:
http://riverdi.com/hermes-board/
Witam, szukam bibliotek arduino IDE 1.6.5 do sterownika ft812. Nigdzie nie mogę ich znaleźć, czy jest ktoś w ich posiadaniu ewentualnie wie gdzie ich szukać?
Pozdrawiam
Witam, zakupiłem wyświetlacz Riverdi rvt43ulfnwc00 (kontroler FT801) wraz z dedykowanym do niego shieldem. Zaimportowałem odpowiednie biblioteki i próbuję wgrać przedstawiony projekt, program wywala mi się na sprawdzaniu typu kontrolera komunikatem: "Nie obslugiwany uklad: 0x0". Jako chipid podaje mi 0 - czy to nie oznacza braku komunikacji z wyświetlaczem? Jak można zweryfikować czy wyświetlacz nie jest uszkodzony?
pozdrawiam
Masz coś z połączeniem. Dobrze podłączyłeś taśmę? Masz Arduino Uno czy inne?
Sprawdziłem miernikiem taśmę połączeniową i okazało się że nie wszystkie ścieżki miały przejście. Po wymianie taśmy, nie wiem dlaczego ale na wszelki wypadek zamówiłem dodatkową :), wszystko ruszyło, dziękuję za zainteresowanie.
Gdzie kupiłeś ten wyświetlacz?;)
Cześć,
zakupiłem wyświetlacz riverdi 7" ze sterownikiem ft812 oraz tft riverdi shield. Szukam bibliotek sterownika ft812 do arduino uno. Nigdzie nie mogę ich znaleźć, na stronie producenta także nie ma żadnych informacji. Może ktoś z Państwa, jest posiadaniu takich bibliotek albo wie jak "zabrać" się za programowanie wyświetlacza z tym sterownikiem? Czy jest znacząca różnica w porównaniu do ft801?
Pozdrawiam
Cześć,
jestem szczęśliwym posiadaczem wyświetlacza riverdi 7" z chipem ft812, oraz riverdi tft shield. Próbuję uruchomić ww. wyświetlacz pod arduino uno, jednakże nie mogę znaleźć nigdzie żadnych bibliotek, ani w ogóle informacji jak zacząć programować ww. chip pod arduino uno. Czy jest ktoś kto może posiada te biblioteki, albo wie jak się do tego zabrać? Czy programowanie ft812 różni się znacząco od ft801?
Z góry dziękuję i podrawiam
Witaj, ja walczę z FT813 na Arduino Mega i Uno . Wrzuciłem przykład Logo z tej strony : http://www.ftdichip.com/Support/SoftwareExamples/FT800_Projects.htm#Arduino . Oczywiście wwaliło mi masę błedów. Ogarnąłem błedy i kompilacja przeszła ok. Ale niestety wyświetlacz dalej się nie uruchamia a według opisu przykład działa ze wszystkimi FT8xx. Możliwe że shield mi padł. Musze to jeszcze spr. Jeśli chcesz gotowy bez błędny przykład Logo napisz maila na : sergiusz.fan@interia.pl podrzucę CI to co mam ;-)
Te biblioteki są dla ft800
Wiem, przerabiałem bibliotekę według nowych wytycznych dla FT81x ale nie działa. Nie wiesz Korneliusz kiedy, i czy w ogóle wyjdą biblioteki FT81x pod Arduino?
Witam,
czy podłączając wyświetlacz przez Adapter 20-pin ZIF 20 pogę potem podłączyć bezpośrednio do Arduino czy muszę jeszcze dodać jakieś podzespoły (np. rezystor) przy jakiś pinach? Nie lubie nakładek na Arduino:)
Podrawiam
Hej,
czy już komuś działa FT812 z arduino poprzez Riverdi Shield\'a?
Opiszecie?
Przy poprzednim (FT800) musiałem przerabiać biblioteki. Może teraz już ktoś ma...?
Powinienem mieć niedługo nowe FT8xx, więc się zobaczy co tam siedzi
Super. Ja nadal drepczę w miejscu. A 800x600 kusi...
Myślę, że niedługo będę wiedział coś o nowych wyświetlaczach
Strasznie wrażliwe na jakość połączeń... zapięcie sondy oscyloskopu na SPI potrafi uwalić transmisję.
Hej,
czy już jest to niedługo? A może komuś innemu udało się połączyć to?
Będzie libs dla arduino dla FT810 i 811 ale musicie jeszcze chwilkę poczekać, Różnice są znaczne , ale niema tragedii puki co Kinetis :) arduino na końcu.
Witam
Dopiero zaczynam przygodę z Arduino i mam problem z biblioteką do FT811 , jakiej użyć ?
I\'m writing in English because I don\'t speak Polish (below I write in Polish with a translator). I have downloaded on the Riverdi site the example file .ino, but I can\'t acquire and print an external variable. I can print only words or sentences. Your algorythm is is very different from that provided by Riverdi.
My question is: with your system, for example, how can I make a voltmeter or multimeter ?
Piszę po angielsku, bo nie mówię po polsku. Pobrałem na stronie Riverdi przykładowy plik .ino, ale nie mogę pobrać i wydrukować zmiennej zewnętrznej. Mogę drukować tylko słowa lub zdania. Twój algorytm znacznie różni się od dostarczonego przez Riverdi.
Moje pytanie brzmi: w twoim systemie, na przykład, jak mogę zrobić woltomierz lub multimetr?