Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Sziasztok! Megvan a megoldás az ST7735 lcd villogásának megszüntetésére. Talán hasznát veszi valaki. A változó karakterek miatt nem kell törölni a képernyőt, csak a betűszín megadásakor a háttérszínt is meg kell adni. Így amikor frissíti a karaktereket, azok háttere is frissül. Mivel nem az egész képernyőre vonatkozik, így nincs villogás, vibrálás.
Jelen esetben fehér a háttér, tehát fehér színt adok meg a betű hátterének. Az 5. sor a lényeges.
A hozzászólás módosítva: Jún 13, 2025
Én megpróbálnám más libbel is. Némelyik használhatatlan. A chatgpt sokat tud segíteni az ilyen hibák felderítésében.
Szerintem ez így jól használható, egyszerű. Azt elfelejtettem írni, hogy az Adafruit libjét használom.
Hello! "Adafruit libjét használom" Na itt van a kutya elásva, mert a másik lib-nél akkor is villog, ha a betűháttér színét megadod.
Monitor programot keresekMonitor programot keresek. Tudom, hogy az Arduino rendelkezik monitor kapcsolattal, de olyat keresek, amelyik kiírja az állandó szöveget, és utána folyamatosan írható a változó érték, vagy szöveg. Az állandó soremelés, és minden újra írás felesleges figyelem és megállítást igényel...Pl. Motor áram: 210mA, Távolság: 110mm. stb... A Processing kicsit bonyolult ehhez a feladathoz. Köszönöm a segítséget.
Ehhez terminál-emuláció kell, ami annyit jelent, hogy a "monitorprogram" képes kell legyen vezérlőkaraktereket, ún. ESC-szekvenciákat feldolgozni. Ezek nem jelennek meg, de pl. visszateszik a kurzort egy sorral feljebb minden kiírás után, vagy akár szép színeket is beállíthatsz vele. Persze neked ezeket a vezérlőkaraktereket is ki kell íratni a firmware-edből.
Tehát a kiírásaid a programodból olyanok lesznek, hogy a szöveg elé-közé ilyen parancsokat kell betenned: az ESC kódja (ami a 0x1b) megfelelő formában, aztán néhány más karakter. Pl.: a sor elejére való visszaugrás kódja: "\x1b[2K\r" \x1b = ESC (0x1B hexában), [2K = teljes sor törlése, \r = kurzor a sor elejére. Ezzel a módszerrel már ki lehet írni valamit ugyanabba a sorba, de nem csak teljes sortörléssel lehet célt érni, ez csak példa volt. A kódok táblázata pl. itt megtalálható (görgetni kell egy kicsit): https://en.wikipedia.org/wiki/ANSI_escape_code Programból sokféle akad, ami ismeri ezt, Windows-hoz hirtelen csak a Tera Term és a Putty jut eszembe. Mindkettő aktív állapotú, fejlesztik és karbantartják, és nyílt forrású. A Tera Term nagyon jó, a Putty egy elterjedt és igen jól beállítható eszköz, de abban a soros vonal használata csak másodlagos, TCP/IP-hez készült, így nem a legkényelmesebb. A hozzászólás módosítva: Aug 28, 2025
Én is rákerestem: állítólag az MS alkalmazásboltjából letölthető, a Win 11-ben pedig eleve telepített Windows Terminal is fejlesztve lett, az is boldogul az ESC-szekvenciák megjelenítésével. Én most ki nem próbálom, bocsánat, amúgy sincsenek jó emlékeim a régi beépített terminálról, azt csak elkerülni volt érdemes. : -)
Köszönöm a hozzászólást.
Azt még nem próbáltam ki, hogy az arduino program miként fordítja le a kódot. Bár amint látom, elég nehéz lenne ezt a formulát alkalmazni. Nagy vonalakban ilyenre gondolnék. Van kb10 sor, soronként 10-20 karakter lehetőség a szöveghez, és utána a mért eredmény. A szöveget nem kellene mindig kiírnom, csak a mérést. Gondolok valamilyen kódra, amivel megadom a hasznos monitor méretét, aztán a karakterek helye ebben a méretben lenne. A szín már csak hab a tortán. Hasonlóan a Processinhez. Tudom, hogy régen valaki megadott egy file nevet, ilyen programhoz, de az már eltűnt a gépemről, miután a HDD megadta magát ![]() A puttyit már próbáltam, de csak felbosszantott, nem jutottam előre. Vagy csak ügyetlenkedtem.
Szívesen. Szóval van egy soros adatfolyamod, vagyis ha kiküldesz egy karaktert a soros vonalon, azt a monitor a következő pozícióban jeleníti meg, és ha a sor végére ér, akkor folytatja a következő sorban. Ezt kell megtörni, és ezt csak speciális karaktersorozatokkal lehet.
Ilyen szempontból a "kocsi vissza" és "új sor" is speciális karakterek, a \r és \n is vezérlőkód, amiket bizonyára magad is használsz. Vagy a println függvény eltakarja, azért nem tudsz róla, de az maga is pont ezeket a karaktereket adja hozzá a kiírandó szöveghez (vagy csak a másodikat, ez most nem számít)... Tehát az ESC kódokban igazából semmi extra sincs. Elsőre minden bonyolultnak tűnik, de tényleg nem olyan nagy ügy. Az ESC szekvenciában, amit mutattam, egyedül a \ ("visszaper") karakterrel keződő ASCII karakterkód megadása jelenthet gondot, vagyis furcsa első ránézésre. Egy C vagy C++ programban a printf formázásában ezt pont így kell leírni, és persze hexa számról van szó (\x1b == 0x1b == 27 == az ESC karakter kódja). Tehát egyszerűen ki kell íratnod a következő stringet a monitorra, és az ezt követő kiírásod, szöveged ugyanabba sorba fog kerülni, vagyis kötött pozícióba. Aztán ezt a módszert lehet finomítani soron belüli pozíciókra is. Hogy van-e valami library, ami megteszi ezeket helyetted és eltakarja a kódokat, és pl. eleve koordinátákat lehet megadni neki, hogy hova tegye a következő kiírást, azt nem tudom - elképzelhető, hogy csak keresni kell. Arduino-ban: Serial.print("Egy szöveg"); Serial.print("\x1b[2K\r"); Serial.print("az érték"); C könyvtári függvénnyel (a referencia kedvéért): printf("\x1b[2K\r"); Persze finomítani kell, hogy legyen pl. kettőspont és szóköz az ESC szekvencia végén, csak elbonyolítja a példát, de itt van az is: int a_változó = 10; Serial.print("Egy szöveg\x1b[2K\r: %d", a_változó); a_változó = 6; Serial.print("Egy szöveg\x1b[2K\r: %d", a_változó); Nem próbáltam ki, úgyhogy lehetnek tévedések. Ilyesmit az AI-ok gyorsan megírnak neked ("a szekvencia állítsa a kurzort a 13, 15-ös pozícióba"), már a vezérlőkódokat sem kell keresgélned a wikiben. Ez is így készült: Serial.print("\x1b[13;15H"); Serial.print("Hello!"); Serial.print("\x1b[13;15H"); Serial.print("Hello!"); Serial.print("\x1b[13;15H"); Serial.print("Hello!"); Itt törlés nincs, de a "Hello!" mindig ugyanoda lesz kiírva, így csak egyszer fog csak látszani. Persze csak a Tera Term-ben és társaiban. A hozzászólás módosítva: Aug 28, 2025
Na, ezt csak elbénáztam:
Arduino-ban: Serial.print("Egy szöveg"); Serial.print("\x1b[2K\r"); Serial.print("az érték"); helyette ez a jó: Serial.print("Egy szöveg"); Serial.print("az érték"); Serial.print("\x1b[2K\r"); És ezt ismételgetve ugyanabba a sorba kerül a "szöveg" és az "érték" újra és újra - az egyszerűség jegyében szóköz meg értékek nélkül. Ezt bontottam ki jobban az ezt követő példákkal. A hozzászólás módosítva: Aug 28, 2025
Köszönöm a részletes leírást. Hazaérek a munkából, kipróbálom...
![]()
Próba meg volt. A szöveget egymás után írta. A "[2K" parancsot is írta, ez nem tetszett neki.
Végül is mit telepítettél a monitorozáshoz?
Csak Arduino fut a háttérben. Nem foglalkozik a parancsokkal, de nem áll hibára sem.
Attól volt szó, hogy az Arduino saját monitorprogramja nem képes a vezérlőkarakterek feldolgozására (és egyben elrejtésére), ezért jelennek meg rajta.
Visszaolvastam, látom, nem hangsúlyoztam külön, hogy _csak_ úgy fog működni, egy külső programmal, pl. a Tera Term-mel, de te azzal nyitodtad ezt a threadet, hogy "monitorprogramot keresek", ezért vettem természetesnek, hogy másikat fogsz használni, nem az Arduino sajátját. : -) Amúgy ha leírást adsz, mindig írj pontosabb alanyt is a mondatokba, ill. hogy mi, mivel, hogyan történik, mert így nehéz kitalálni, bár ez most egyelőre egyszerűnek tűnik. : -)
Hmm. Igaz, másik programot kell használnom, hiszen nincs leírása az Arduinonak, hogy felismer más parancsot. Megkeresem a TeraTerm programot, és próba lesz. Köszönöm. Remélem, tényleg egyszerű lesz.
![]()
Lehet inkabb a lapdobas ESC szekvenciat hasznald
![]() Igen vmikor en is belefutottam ebbe zavart a println fuggvenyek terminalban futo orult scrollozasa mikor en egy allando fix "tablazatot" szerettem volna latni. Kb 8 10 sor es 2 3 oszlopot irtam be print es println sorolbol reszben ugyesen "zonazva" a kirando 3 4 karaktert foglalo ertekekre is ugyelve ... kicsit tobb szokozt dobtam be ... ( persze van kurzor pozicionalo escape is ![]() A lenyeg az eredmenyek kiiratasat vegzo sorok utani utolsonak kiadott egyetlen lapdobas szekvencia ![]() Ekkor magatol" cls " (clearscreen) lesz es balfelso sarokban kezd a kurzor irni mindet az utolso sor jobb also sarkaig majd "ures lapot dob" es kezdi bal fent az irast. Ardu "buta" terminaljaban is mukodik" Aszem #escape szekvencia decimalis erteke kell a write() fuggvenynek. Bocs kicsit keveredik a C es Ardu szintaktika bennem !
Form feed ascii 12 lapdobas ...
"Pörgős" kódrészlet mintának lapdobasra
Talan ez segit ... Ardusorosmonitorban van 1 2 pipa auto CR meg LF re ezremlik. Masik minta :
Remelem segit a lapdobas. Teheted az elejere is ha ugy kevesbe villog a sorosterminal. Segithet A hozzászólás módosítva: Szept 1, 2025
Moderátor által szerkesztve
|
Bejelentkezés
Hirdetés |