Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Valamennyit lehet rajta javítani, de mindenképp látszani fog, az arduino uno nem alkalmas nagy sebességű TFT képernyő kezelésre.
Ebben a projektben is egy hasonló van (picit nagyobb), a jóval jobb hardver ellenére is látszik a képernyő újrarajzolása: Videó
Ez elszomorít, tehát ez a kényelem ára... Eddig PIC-ekre programoztam assemblyben, és ott sosem volt gondom a sebességgel, csak a lassú fejlesztés miatt, próbáltam arduinoval időt spórolni a kész könyvtárak révén. (gondolom, itt sem a vezérlő a ludas hanem a könyvtár, elvileg ha 16MHz-en jár az Ardu akkor az 16MIPS-es műveleti sebesség.) Köszi azért!
A max SPI 8MHz. Ez max 1Mbyte elméleti maximum. A kijelző feltöltéséhez kb. 150kbyte adat kell, ez 1/8-ad másodperc (ennél persze rosszabb a helyzet, mert CPU-ból kell csinálni, nincs DMA), ez már mindenképp látszik.
Ezzel a megoldással használok egy plusz interrupt lábat: Bővebben: Link.
Az interruptot egy nyomógomb indítja be, hogyan tudok védekezni a gomb prellelése ellen? Ez a jelenlegi kódom:
Hali
Az Adafruit_ILI9341 konyvtarral futtatok egy tft lcd-t.A gondom az hogy a default karakterekkel kiiraskor mindig torli egyszer az uj karakterek helyet a tft.setTextColor(szin1, szin2); utasitassal, de nem ugyan ez tortenik a specialis karakter keszletkor (Adafruit_GFX\Fonts). Ha innen vallasztok egy akarmilyen karaktert ( tft.setFreeFont(&_font_); ) akkor nem hajlando mar torolni az ujonnan kiirando karakter helyet, hiaba van a tft.setTextColor(szin1, szin2); utasitas beszurva a kiiras elebe. Lehet ezt valamikeppen orvosolni ? A hozzászólás módosítva: Nov 3, 2017
Ez nem az Arduino hibája, csak kicsit gondolkozni kellene. Pl. miért törlöd le az egész kijelzőt, ha csak egy szám változik? Odamész a kijelzőn a szám pozíciójához, rajzolsz egy megfelelő méretű (egy karaktert elfeledő) háttér színű négyzetet, majd ugyanoda kiírod az új számot. Trükközni kell, ennyi a lényeg.
Ha ebook olvasónak akarod használni a kijelzőt, akkor marad a várakozás, de akkor el kell olvasni a kijelző adatlapját, mert nem mindegy, hogy karakterenként küldöd az infót, vagy egy ablakot írsz tele, hogy az írás alatt készíted el az új kijelző képét, ezzel is lassítva a folyamatot, vagy előre legyártod, majd utána csak kiküldöd, és a proci csak a küldéssel tud foglalkozni. Vannak könyvtárak, ahol nagyon pici delay-ek vannak a függvényekben, nagyobb stabilitás miatt, viszont ezekből sok egymás után igencsak lassítja a frissítést. Csak a megoldást kell keresni, és igen jó eredményt tudsz elérni. Én pl. rengeteg számot jelenítek meg a kijelzőn, és csak akkor frissítem, ha változott a szám, és ha az utolsó változtatás óta eltelt x mS. Ezáltal folyamatos a kép, nem remeg, nem szaggat, nincs törlési efektus, egyszerűen csak pörögnek, változnak a számok.
Raksz a nyomógombokkal párhuzamosa 100n kerámia kondikat! Ez csökkenti a szikrázást.
Tapasztalatból tudva a gombok elengedéskór prelleznek. És mivel nem tudjuk, menyi idő múlva engedik fel a gombot? Ezt megszakításban hiba lenne kivárni. Inkább figyelni kellene, ha ugyan arra a gombra rövid időn belül még 1 megszakítás érkezik? Azt nem hajtja végre.
Úgy csináltam, hogy az arduino D2 lába össze van kötve direktben egy DS3231 SQW lábával, az arduino D5 lába egy 4148-on keresztül a D2-vel, és ez a kör egy nyomógombon keresztül GND-re lehet kapcsolni.
Ha az rtc indítja az interrupt-ot, D5 magas marad az - > egyik funkció indul. Ha a nyomógombot használom az indulás pillanatában D5 alacsony -> másik funkció indul. Azt szeretném, a két "eset" elkülönítése tökéletesen működjön. Úgy gondolom biztosabban működne dolog, ha többször megvizsgálnám, D5 szintjét, és utána döntenék.
Ez attól függ milyen gyorsan kel reagálni a megszakításra?
A többször i vizsgálat utáni döntés, szintén csak időhúzás a megszakításban. Ezzel az a gond, hogy addig semmi mást nem tud csinálni az uC! És már említettem akár másodpercekig is rajta hagyhatja az úját a gombon a felhasználó! Addigra lekezeled a megszakítás, és mikor felengedi, akkor jön 1-3 prrel. Ha csak az elsőre reagálsz? Ez már 2 végrehajtást jelent. A hozzászólás módosítva: Nov 3, 2017
Nem kell gyors reakció, lehet 2-3 mp is.
Az interrupt egy mérési folyamatot indít (a ciklus kb. 30 mp-ig tart), aminek idejére ki vannak kapcsolva a interuptok, nem lehet, hogy új megszakítás érkezik a folyamat befejezése előtt.
Így működő képesnek tűnik!
Aztán úgy is tesztelni kel az egész rendszert!
Teszteltem, és van tévesztés.
Ilyenkor jön, hogy más módszert próbálunk!
Esetleg amit fentebb javasoltam? Nem olyan nehéz azt sem megvalósítani!
Még van, hogy a megszakítás végén kikapcsolod a megszakítás kérés jelző bitet. (A neve most nem ugrik be)
Ezzel törlöd a közben beérkezett újbóli kérések végrehajtását. A hozzászólás módosítva: Nov 3, 2017
Teszek rá kondit, kipróbálom. Aztán meglátom, kell e még valami szoftveres trükk.
Sziasztok.
Segitséhet szeretnék kérni. Még pedig abban, hogy egy adott idö allat lehessen nyomkodni 2 gombot aztán pedig ha letelt utánna már nem. A program eddig igy áll, még erre kellene varázsolni egy ilyen idözitöt. ![]()
Üdv.
Behozol egy értéket, amit összehasonlítasz a millissel pl:
Így csak akkor fog történni valami, ha a program kevesebb ideje fut, mint az "idozito"-ben megadott érték.
Sziasztok találkoztatok már a következő jelenséggel?
vettem egy 3.5" os TFT-T UNOhoz /MCUFRIED/ letöltöttem hozzá a demo kódokat és jöttek a hibák.. -tükröződve jelenik meg rajta a kép -az érintő panel kódját meg fel sem tölti Inkább az első problémára keresek megoldást! vezérlő elvileg ili9488 felbontás 480x320 elvileg helyes Libaykat töltöttem le.
megoldódott:
// // This demo was made for modules with a screen resolution // of 480x320 pixels. // // This program requires the UTFT library. // #include <Adafruit_GFX.h> #include <UTFTGLUE.h> UTFTGLUE myGLCD(0x9341,A2,A1,A3,A4,A0); 0x9341 helyén 0x9488 ált, átt keltet írni gondolom így ismeri meg a fordító hogy milyen kijelzőre vagyunk kötve
Szia.
Hibásak a feltétel vizsgálásnál az AND jelek. Idézet: „
Nem ugyanaz mint a
Helyesebben
Ez is lehetne még jobb de igy remélem érthetöbb. A szimpla ÉS jel a bitközi ÉS. A hozzászólás módosítva: Nov 6, 2017
Sziasztok!
Van egy egyszerű kis progim, az arduinon csak egy serial-al írható radioadó hc-12 modul van (SoftwareSerial.h-val használom) illetve egy mpu6050 gyro sensor amit i2c-n olvasok (Wire.h-val). 'Lopásgátló' lenne, küldené az adatokat, hogy elmozdult-e a szenzor. De sajnos véletlenszerűen kiakad és a while(Wire.available() < 14); sor egyszer csak beragad és sosem lesz 14...... ott leakad. Az az érdekes, hogy csak a szenzor vagy csak a rádió kódja teljesen jól működik (csak a kód számít felforrasztva lehet mind a 2) ezen az arduinon is, ha mind a 2-t használom a progiban akkor történik csak hogy a a szenzor nem küld adatot... Bővebben: Link kód A hozzászólás módosítva: Nov 6, 2017
Segitséget kérek.
![]()
Köszi.
Hibás COM port van kiválasztva vagy valami használja a COM portodat, valamilyen program kommunikál az Arduino -val. Esetleg egy reboot, Windows -al volt nekem is ilyen gond, pl task manager ben szinte 100 százalékon pörgött az avrdude akkor is ha becsuktam az arduino IDE t.
A hozzászólás módosítva: Nov 6, 2017
Privátban megoldottuk, de hátha valakinek később segít, a hiba a Bluetooth modul volt az Rx-Tx lábakon.
Van egy egy FTDI 232 modul. Adna valaki egy működő drájvert Win 8.1-hez. Már letöltöttem párat. de csak vírust kaptam. Köszi
Ezt az oldalt nézted már? A Win 8.1 is szerepel a támogatási listáján.
Köszi. Már sikerült. De! A COM3 portot látja, az arduinót nem.
Sziasztok
Mi lehet a hiba amiért nem jön meg aminek kellene? szam=inputString.substring(0,2).toInt() A bemenet pl "001" de 111 re sem ad vissza semmit... Előre is köszi!
Ha az ember leírja hamarabb meglátja a hibát
Ami 2 is volt 1 töröltem a változót mielőtt feldolgoztam volna, és a második szám a hossz, nem pedig hogy meddig... A második hiba még se hiba csak félig, rossz szám megadás volt és mégse a hosszt hanem az addig jelöli, csak nem hje a help ![]() A hozzászólás módosítva: Nov 7, 2017
Szervusztok!
Szakdolgozatomat írom éppen és témám ÉKG görbe mérése arduinoval. a test felszínről levett jel, nagyon zajos, amit többé kevésbé sáváteresztő szűrővel szűrök, de a szívképben frekvencia is előfordul, ezért nem tudok minden zajt leszűrni, anélkül, hogy a szívkép ne legyen veszteséges. konzulensem erre azt a tippet adta, hogy digitális szűrővel, autokorrelációval. Bőségesen utána olvastam a témának, de nagyon sok inkább matematikai teóriákat találtam csak a témával kapcsolatosan. Határértékszámításokat, integrál számításokat, Fourier transzformációkat. Matematikai tanulmányiam miatt többé kevésbé értem a cikkeket, de például egy integrálszámítást vagy egy Fourier transzformáció nem tudok leprogramozni C nyelven arduinora. Valaki estleg foglalkozott már ilyennel? esetleg van erről valami ismert cikk? csak mert én nem igazán találok. Auokorreláció fogalma alatt találtam egy cikket, mely azt mondja, hogy egy értéket összehasonlít egy eltolt értékkel, például az előző időpillanatban felvett értékével. A példaprogram úgy nézett, ki, hogy egy tömböt feltöltött mért értékekkel, majd az i tömb elemet, összeadta i-1 tömb elemmel és az összeget eltárolta egy változóba. Elképzelhető, hogy ilyen egyszerű lenne? ha igen akkor valaki eltudná magyarázni, hogy miért is működik ez a fajta metodika? Előre is köszönöm a segítséget ![]() |
Bejelentkezés
Hirdetés |