es en es hu en en en es hu de hu hu hu hu hu hu hu hu hu hu hu hu hu hu en hu hu hu hu pt pt en en en hu en en es en en es mr en hu hu zh sl hu kn fr hu hu hu hu hu en kn hu hu en en pt hu ja en hu pt pt hu en en en en en es hu en es mr en en es ru en sl hu hu kn fr hu ru es hu en hu ru kk hu hu en kn kn hu hu hu hu hu hu hu hu tr en hu hu hu hu en
Ebben a cikkben egy TFT lcd shield-et próbálok kivesézni. A shield Arduinora készült 2.4'' TFT érintő képernyővel, SPFD5408-as beépített vezérlővel. Fontosabb adatai:
beépített háttérvilágítás 4db fehér leddel,
18 bit, 262144 különböző színárnyalat,
spfd5408 vezérlő beépített videó RAM-al,
8 csatornás digitális illesztő felület, vagy 4 csatornás ISP,
beépített microSD fogadó négy csatornás adatátvitellel.
Igazából sokat bajlódtam a hozzávaló könyvtár felkutatásával, általánosan aki Kínából ilyen típusú tft schildet rendel ne számítson túl sok jóra az illesztő könyvtárakkal kapcsolatban.
A hagyományos tft könyvtárak( ami más tft-ket simán kezel) nem használhatók, találtam ehhez a típushoz a youtube-on UTFT könyvtárat amivel már sikerült kicsikarni némi eredményt a kijelzőn(széles csíkok mögött futott a grafikus felület). Aztán sokadik nekifutásra találtam meg a következő könyvtárat ami már majdnem tökéletesen fut a schielden : TFTSPS_07781.
Mint kiderült ez a shield már egy újabb lcd kezelő chipel készült, amihez még nem igazán készültek megfelelő könyvtárak.
Ez a példa program kijelzőként kezeli schieldünket, segítségével szövegeket és különböző grafikus ábrákat jeleníthetünk meg rajta.
Nézzünk egy egyszerű szöveges példát:
// először az lcd kimenetek párosítjuk az Uno lábkiosztásához
// meghatározzuk a szín konstansokat
#include "TFTLCD7781.h" // a kijelző saját könyvtára
TFTLCD7781 tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); //tft objektum létrehozása
tft.reset(); // tft reset
tft.initDisplay(); // inicializáljuk a kijelzőnket
tft.fillScreen(BLACK); // háttér szín beállítása
tft.setCursor(60,140); // kurzor pozíció beállítása
tft.setTextColor(CYAN); // szöveg szín
tft.setTextSize(3); // szöveg méret
tft.println("ARDUINO"); // szöveg kiíratása
Azt hiszem sokat nem kell magyarázni a működésével kapcsolatban, ugyan így különböző grafikus alakzatok is megjeleníthetők, ezeket tartalmazza a LCDTEXT_SPS példa program. Egy kicsit átrágva a grafikus alakzatok kezelését, többnél feltűnt, hogy nem hajtódik végre megfelelően(ez a könyvtár se tökéletes).
A többi példaprogram nem működik ezzel a schildel, nagy küzdelmek árán azért sikerült összehozni, pontosabban átalakítani egy érintő képernyőt használó progit, ezt most itt mutatom be:
#define XM A1 //érintő képernyő lábkiosztása
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 100);// érintőképernyő objektum
#define LCD_WR A1//lcd lábkiosztása
#define GREEN 0x07E0//szín definiciók
TFTLCD7781 tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);//tft objektum
Point p = ts.getPoint(); // nyomás érzékelés és értékek hozzárendelése p objektumhoz
p.x = map(p.x, 200, 900,0,tft.width()); // az érzékelt érték konvertálása kimeneti értékké
p.y = map(p.y, 100, 900,0,tft.height());
if (p.z>10 && p.z<1000){ // tovább lép ha a nyomásérték nagyobb mint 10 kisebb mint 1000
Serial.println(p.x); //kiíratás soros monitorra
tft.fillRect(p.x,p.y,3,3,RED); //kiíratás a tft képernyőre
Egy kicsit bővebben: a ts.getPoint() érzékeli a nyomást a képernyő adott
pontján, a nyomás hatására felveszi a képernyőpont x és y értékét. A proginkba
létrehozunk egy p point-ot(mutatót) ami felveszi a ts értékét, így létrehozva egy
p.z (nyomásérték), egy p.x és egy p.y(koordináta értékek a nyomás érzékelési
pontjához) értéket. Az értékek 0-1023-ig vehetnek fel értéket de általában
ennél szűkebb tartományokban dolgoznak. A mi képernyőnk x = 200-900 és y =
100-900 tartományban érzékel, ezt a konvertáljuk át a képernyő felbontására
(240x320) a következő utasításokkal:
p.x = map(p.x, 200, 900,0,tft.width());
p.y = map(p.y, 100, 900,0,tft.height());
Mint kiderült minden grafikus objektum nem használható a könyvtárból így vonal
rajzoláshoz olyat választottam ami működik : tft.fillRect(p.x,p.y,3,3,RED);
Kb. ennyi, ezekre a példákra már lehet építeni, remélem segíthettem azokon akik ezt a TFT-t vásárolták.
A cikk folytatása: Újra SPFD5408 TFT kijelző 150812
Homepage | contact | html | css | © 2007 Anyone | Design by www.mitchinson.net | This work is licensed under a Creative Commons Attribution 3.0 License