2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hogyha sikeresen O/PLED illetve hagyományos alfanumerikus - esetleg tán grafikus kijelzővel gyűlik meg a baja valakinek:)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: kapu48 »

Nekem ez volt a kiindulás:
https://github.com/adafruit/Touch-Screen-Library

A touchscreendemoshield mapába bemásolod a TouchScreen.cpp és TouchScreen.h fájlokat,
betöltöd az arduinoba: touchscreendemoshield.ino -t lefordítod feltöltöd!

Csak a bekötéseket kel jól eltalálni!

Kód: Egész kijelölése

// These are the pins for the shield!
#define YP A1  // must be an analog pin, use "An" notation!
#define XM A2  // must be an analog pin, use "An" notation!
#define YM 7   // can be a digital pin
#define XP 6   // can be a digital pin
DjVu
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2017. szeptember 15. péntek, 19:57

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: DjVu »

Sziasztok!

A következő problémám akadt a szóban forgó kijelzővel:

Rá drótoztam egy NANO lapkára.
Az elmélet az volt hogy, a NANO-nak több analóg lába van mint az UNO-nak.
Amit ki is szeretnék használni.
Ráadásul szükségem van a TWI portra. Ezért a kijelző LCD_RST pontját a NANO, RESET pontjára kötöttem.
(a minta programokban szereplő megjegyzés szerint ez lehetséges)

Látszólag minden rendben volt. A kijelző tökéletesen működött.
Ekkor kipróbáltam a TWI port működését. Kísérletképen rákötöttem, a kezem ügyében lévő RTC modult.
És megírtam a szükséges programot.

Ekkor jött a meglepetés!
A program működik, a TWI működik, az óra szépen ketyeg a kijelzőn.
DE.
Azt látom hogy, amikor a változók frissülnek a kijelzőn (másodperc, perc) az újonnan kiírt szám, ráíródik az előzőleg már kiírt számra.
Így gyakorlatilag, hat másodperc elteltével (illetve hat perc) teljesen fedésbe kerülnek. És egy ronda nagy fekete négyzetet látok az értékek helyén.

A probléma makacsul kitart!
Már sok munkaórám ráment.
Sok mindent kipróbáltam. Többek között azt hogy, LCD_RST-t átkötöttem az A6-ra. És persze átírtam a programban.
De ekkor a kijelző, statikus szürke lett, és nem csinál semmit.

Van valakinek ötlete?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: Robert »

A kiíráskor a pixelek kigyújtása történik meg, a kioltása nem.
Tipp: mi van ha a kiírás előtt 2 db space-t írsz a számérték helyére?
http://www.tavir.hu - a gazda :)
DjVu
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2017. szeptember 15. péntek, 19:57

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: DjVu »

Sajnos, nekem is ez volt az első próbálkozásom. (ha gond van a hardverrel, old meg szoftverrel :-))
De nem működik.
Többek között ezért is írtam be a fórumba.

Az első próbálkozásom az volt hogy,
a kurzort beállítom a megfelelő helyre. és beírok pár space-t.
majd a következő sorban, visszaállítom a kurzort, és jöhet a változó.
De nem változott semmi.
Még arra is gondoltam hogy, a szóközök rövidebbek mint a "jelentős" karakterek. Ezért megnöveltem a szóközök számát.
Hasztalan.
A következő gondolat, a frissítési idő volt. Ezért beiktattam egy késleltetést, a szóközök és a változók közé.
Ekkor csak annyi változott hogy, villogni kezdett a kép.

Továbbá, próbáltam a tft.begin-t elhelyezni a void loop-ban.
Hasztalan.
A tft.reset-et vissza dobja a fordítás. (próbáltam többféle írásmóddal)
egyedül a tft.fillScreen(xxxxx); működik. De az eredmény sajnos, ismételten egy villogó képernyő.

Teljesen ötlettelen vagyok.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: Robert »

Itt - minthogy megy a kijelző - NEM hardware hiba van.
Szoftver oldalról szükséges, hogy a _felülírás_ működjön.
Melyik library-t használod?

Olyan kellene neked, hogy overwrite enable vagy XOR disable vagy hasonló....
http://www.tavir.hu - a gazda :)
DjVu
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2017. szeptember 15. péntek, 19:57

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: DjVu »

A "hardveres gondot" úgy értettem hogy, ha nem teljesen vagyok tisztában a működésével. És felüti a fejét egy probléma, akkor nagy eséllyel szoftveresen ki tudom cselezni. Hát ez most nem jött össze.

Szóval.
Az előző választ olvasva felkiáltottam: Ez nem lehet ilyen egyszerű!!!
Amint tudtam beleástam magam.
Átnyálaztam a libraryt (innen a webshopból letöltött csomagból, az ST7735 Adafruit_GFX és Adafruit_TFTLCD)
de még hasonlót sem találtam.

Az egyetlen dolog ami reményt keltő volt, és még működik is, az a drawPixel volt.
De pixelenként tisztítani a képernyő területet elég luxus.

Előfordulhat hogy, nem a megfelelő library-t használom, és eddig nem vettem észre?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: Robert »

A legegyszerűbb megoldás:
Elő és háttérszínt cseréld fel. Úgy írj ki egy SPACE-t.
tft.setTextColor(WHITE, BLACK)
https://forum.arduino.cc/index.php?topic=364055.0
http://www.tavir.hu - a gazda :)
DjVu
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2017. szeptember 15. péntek, 19:57

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: DjVu »

Köszönöm szépen!
Ez a megoldás működik, és még egyszerű is!

Igaz kicsit furcsán viselkedik.
Ha felcserélem a színeket, és kiírok egy SPACE-t.
Akkor egy ronda nagy négyzet jelenik meg a képernyőn. Ha meg vissza cserélem a színeket, és írok még egy SPACE-t, akkor pedig villog.

Ezen a ponton kezdtem elkenődni. De végül jött az áttörés!
A megoldás az lett hogy, miután meghatároztam a kurzor poziciót, felcserélem a színeket, majd rögtön vissza is cserélem.
Nem értem miért, de működik.

tft.setCursor(2, 50);
tft.setTextColor(WHITE, BLACK);
tft.setTextColor(BLACK, WHITE);
if (now.hour() < 10) {
tft.print("0");
}
tft.print(now.hour());
tft.print(":");
if (now.minute() < 10) {
tft.print("0");
}
tft.print(now.minute());
tft.print(":");
if (now.second() < 10) {
tft.print("0");
}
tft.print(now.second());

Még egyszer köszönöm!
DjVu
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2017. szeptember 15. péntek, 19:57

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: DjVu »

Sziasztok!
Újra Én.

A kezdeti nehézségek után. Sok kísérleti projekt látott napvilágot sikerrel. (persze ahogy a szabad idő engedte)
De most megint bele futottam valamibe.

Az Adafruit GFX mappában található "glcdfont" nevű fájlt elkezdtem szerkeszteni.
Az elméletem szerint, magyarítani akartam a karaktereket.
Egyszerűnek tűnt. Az ASCII tábla szerint, szépen sorban le van írva minden karakter képe. 5x7-es formátumban, 5db HEX kód segítségével.
Az elvet értem, a kartereket meg szerkesztettem, átszámoltam HEX-be, átírtam a fájlt, és ki próbáltam.
Az eredmény nem is maradt el.
Sikerült elérnem, hogy a magyar ékezetes karakterek helyén valóban az is jelenjen meg amit szeretnék.

DE.
Sajna minden karakter előtt, ami az SCII tábla szerint 127 után következik. Megjelenik egy vízszintes vonal.
Más könyvtár alkalmazásakor egy kereszt.
Roppant bosszantó.
Az eredeti glcdfont fájlt használva is ez történik.

Tudja valaki hogy ez miért van?
Arra tudok gondolni, hogy az Adafruit GFX könyvtár valamelyik fájljában van valahol egy véletlen, vagy szándékos
utasítás, ami elé teszi ezt a bizonyos vízszintes vonalat a karakterek elé, ha az feljebb van az ASCII táblában mint 127.

Bele futott már ebbe valaki?
Tudjátok a megoldást?
Esetleg van valakinek működő változata készen?

Segítséget előre is köszönöm!
Avatar
gantal
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2012. március 21. szerda, 6:00

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: gantal »

Sziasztok!
A téma nem teljesen ez de azért írok ide, mert hasonló a kijelző amivel dolgom van. A www.mcufriend.com -on van a pontos leírása...
Hál istennek, már sikerült a karakterek irányá,t elforgatását, beállítanom, touch-ot kezelni.
Az a programozási problémám van, hogy egy fix frekvenciát kell kiadnom. A 9-es portot kapcsolgatja a progi részlete, le fel, de közben figyelni kellene a touchot, hogy érkezik e megszakítás a touchon történik e érintés, a megállításhoz esetleg. De ha a frekvencia generálásába beteszem a touch lekérdezést, az jelentősen elhangolja a frekvenciát, ... gondolom értitek miért.
Valami olyan rutin kellene ami vagy a touchot, teszi hardware interuptra, vagy a portot tudná önálóan futó PWM-re beállítani, elég hosszú percekre.

Ha láttatok már ilyet valahol, kérlek küldjetek egy linket,
Tisztelettel: Tony
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: kapu48 »

Van az arduinoban tone() lib, úgy emlékszem az megszakításon működik:
https://www.arduino.cc/reference/en/lan ... d-io/tone/

A kérdésed sajnos nem egy értelmű!
A linkelt oldalon több LCD is van. Nem írtad a kívánt Hz értékét sem.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: Robert »

Mi a cél?

Fix frekvencia: Timerrel is megoldható.Timer 1 és 2 szabad (A timer 0: a millis() alapja).
Tone() a timer2-t használja.


Tipp: https://forum.arduino.cc/index.php?topic=235774.0
TimerFree Tone
http://www.tavir.hu - a gazda :)
Avatar
gantal
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2012. március 21. szerda, 6:00

Re: 2.4" TFT LCD (320*240)/SD - Arduino shield: HELP!

Hozzászólás Szerző: gantal »

Köszönöm a választ, csak most volt időm foglalkozni vele, úgy néz ki a "NewTone" megoldja a problémámat, bár még le kell majd tesztelnem. Mégegyszer köszönöm, további jó munkát mindenkinek! Tony
Válasz küldése