Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Aha, értem akkor mi a hiba!
A millis függvény nem lesz jó, mert csak szabályos villogásra jó, 2300ms/100ms nem kivitelezhető vele. Valami más megoldás lesz majd, mert szinte biztis, hogy megoldható.
void setup(){
pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, (millis() % 2500) >= 2400); }
Ugyan miért ne lehetne megoldani?
Itt van rá egy példa.
Köszönöm mindenkinek!!
Lenne újabb kérdés. Vannak hexa kódok az abc betűire? Vagy van valami parancs, amivel egyszerű szavakat lehet kiíratni 7szegmenses kijelzőre, MAX7219-el?
Minden betűnek van hexa kódja, meg a nem betűknek is. Úgy hívják ASCII kódtábla, az alap készlet az első 127 karakter ami nem tartalmaz ékezetes betűket és FIX.
A kiterjesztett ASCII kódtábla utolsó 127 karakter meg tartalmaz ékezetes betűket is és atól függően melyik táblát használod, olyan ékezeteket fog tartalmazni, akár kínai kanjikat is. Az IC adatlapjában meg benne kell lenni, hogy csak az alap fix kódtáblát tartalmazza, vagy van benne valamilyen kiterjesztett kódtábla is. Ami gyárilag fel van programozva, te csak azt tudod használni az IC-n keresztül. Ha speciális karaktert akarsz, akkor vagy keresel olyan dekóder IC-t ami tartalmazza az igényeidnek megfelelő karaktereket, vagy kihagyod a dekóder IC-t és direktben vezérled a szegmenseket. Ekkor azt rajzolsz ki amit a kijelző ábrázolni tud, akár még forgó pörgő animációkat is, csak a fantáziád szab neki határt. A hozzászólás módosítva: Jan 21, 2024
Max7219 hez jobb esetben van driver konyvtar ami tartalmazz valamennyi karaktert is.
Rosszabb esetben a karakterekhez tartozo mintak pixelek adat tombjeit neked kell definialni. Abbol olvasni ki az aktualis karakter kepet. Az ic csak "vas" 8x8 matrix pixeleit tudja ki es bekapcsolni. Karakter tabla nincs benne. Azt neked vagy az adott mar megirt "driver" konyvtar tartalmazza. A mar megirt driver konyvtarban vannak elore definialt utasitasok amik alapjan tudod a karakter megjelenitest utasitasokkal megvalositani. Ehhez tanulmanyozni kell az adott drivereirasat. Jobb esetben mar magan az arduino.cc weboldalan is talalsz kesz drivert hozza. Mivel nepszeru ic ... nepszerutlenebbhez te magadnam kell majd a drivert rutinokat megirni. ilyen ez a uC vilag .
Ui.: Az említett IC csak számkijelzésre használható, és négy betűt tud megjeleníteni adatlap 8.-ik oldal. Számok 0-tól 9-ig, - mínusz jel, betűk E, H, L, P, valamint üres karakter, mondhatjuk szóköznek is.
Amit ebből a négy betűből ki tudsz írni azt tudod megjeleníteni vele. pl.: HELP, LE, több nem jut eszembe. A direkt szegmensenkénti vezérlést nem tudom hogy képes e megvalósítani, nem néztem utána. De az ilyen FIX dekóder IC-k nemigen tudnak direkt szegmensenkénti vezérlést megvalósítani. A hozzászólás módosítva: Jan 21, 2024
Arduino.cc. oldalon keresve
talalatok ... Ezek githubon levo linkekre mutatnak . Aztan mand eldol hogy jo e neked. VAGY egyedi drivert kell irnod hozza.
Szerintem túl nagy fa ez egy kezdő fejszének.
Egyelőre nem erőltetem.
Pontmátrixra jó is lehetne, de nem az volt a terv.
Kicsi vagyok még a komolyabb fejlesztésekhez, driver íráshoz. Talán majd egyszer. Addig nem erőltetem ezt a dolgot.
Decode Mode regiszter. Ha 0x00-ra állítod, a szegmenseket bitenként lehet kapcsolgatni. 8x8 mátrix kijelzőhöz is ebben az üzemmódban használható. A dekódolás (adatlapban Code B) egy extra, nem kötelező használni.
Mindenki kis lépésekkel kezdte az arduinot, aztán ahogy jönnek az igények, úgy keres kutat és tanul tovább. A lényeg, hogy az egyszerűbb projektektől haladj a bonyolultabbak felé, különben elvérzel.
Vannak pontmatrixot is hajto konyvtarak.
Korbe kell nezni miket irtak mar meg. Aztan jo vagy nem neked ? Idovel majd kialakul. Mikor mi a fontos , mi az elvart kovetelmeny.Ahhoz igazodik a program.
Az igaz lehet, én nem ismerem ezt az IC-t.
Ajánlott olvasmányok:
LedControl programkönyvtár (és a dokumentációja) Arduino tanfolyam 2020. január 23-i előadása A 2018/19-es évadból esetleg érdekesek lehetnek még a Hétszegmenses LED kijelzők 1. rész (2019. április 4.) és a Hétszegmenses LED kijelzők 2. rész (2019. május 2.) előadások
És nagyon sok autórádióban A gombok kezelése ilyen. 8-10 gombig el szoktak menni.
Üdv mindenkinek!
Egy kis segítséget szeretnék kérni egy arduinos projektben. Azzal vagyok elakadva hogy próbálok egy 3 fázisú fázishasításos dimmelést megvalósítani egy nanoval, de nem igazán tudok rájönni hogy hogyan kellene. Van az első fázison egy zero-cross figyelésem ami a D2es bemeneten egy interrupt és a timer1 segítségével azon a fázison szépen csinálja a dimmelést. Viszont nem tudom, hogy a másik két fázist hogy tudnám megfelelően megoldani, vagy hogy egyáltalán egy nano képes-e erre. Nagy segítség lenne ha valaki adna pár tippet hogy hogyan menjek tovább.
Ha van egy nullátmeneted, akkor X, Y és Z idő elteltével kell gyújtanod a triakokat. 0 -> X idő változó, ez a szabadon beállítható érték. X -> Y és Y -> Z idők fixek, elvileg 3.33 ms. Ennyi időeltolódás van a fázisok között, 50 Hz esetén.
Ha normál 50Hz-es jelről van szó, akkor egy teljes hullám az 20msec. Mivel ugye egy teljes hullámban kettő nullátmenet is van, a figyelőd 10msec közönként fog észlelni nullátmenetet. A 3 fázis miatt a nullátmenetek száma meg fog háromszorozódni, ezért 3.33msec időközönként lesz nullátmented. Az egyszerűbb megoldás az, ha 2db timert hsználsz. Az egyik timer-t a nullátmenet figyelő indítja. Ha letelt a fázishasítás mértékétől függő késleltetési idő, és a timer megszakítást okozott, akkor adsz egy bekapcsoló impulzust az adott fázishoz és indítod a másik timert amit 3.33msec időzítésre állítasz. A másik timer megszakításakor meg a másik fázisra küldesz indító impulzust, és még egy alkalommal elindítod a másik timert, hogy a harmadik fázisra is elmenjen az indító impulzus.
Egy timerrel is meg lehet oldani, csak kicsit bonyolultabb, mert átlapolódnak az időzítések. mnyugger: a 3 fázisú motorokat nem fázishasítással, hanem a frekvencia változtatásával lehet fordulatszám szabályozni. Itt nem arról van szó (mondjuk arról nincs infó mire szeretné ezt használni, de remélhetőleg nem motorhoz, mert arra nem jó).
Igen, 50hz-es jelre kell a dolog, a logikát értem és köszönöm az ötletet. A kérdésem akkor már csak a kivitelezés részét érinti: egy arduino nano alkalmas e erre a feladatra? Azt tudom hogy van benne egy timer amit a delay függvény használ, illetve van benne egy timer1 nevű amit használok az első fázishoz, ezt indítja a nullátmenet és ennek a végén gyújt az első triak. A kérdésem hogy van e benne még egy timer (a netes kereséseim alapján kellene lennie) és ha igen akkor azt hogyan tudom erre felhasználni? (valami konkrét kódrészlet ha lenne az lenne a legjobb)
Ezt a kontrollert használják nagyon sok 3d nyomtatóba és cnc-be. Ebből látszik, hogy sokkal összetettebb feladatot is meg lehet vele oldani. Töltsd le az atmega 328 adatlapját, abból minden kiderül. Többek között az is, hogy 2db 8 bites és 1db 16 bites timer van benne. A konkrét feladathoz keress a neten példákat a timer-ek megszakításos használatához. Türelemmel és kitartással (néha egy kis hajtépéssel ) menni fog az.
Idézet: „timer amit a delay függvény használ” A millis() fugvennyel jobban jarnal ... a delay() alatt teljesen "áll a proci " .
Szia!
Kell még a megoldás? Szerintem tedd fel azt a kódot, ami a timer-eket indítja stb. Ha tök hibás, az sem baj, átkalapáljuk, hogy jó is legyen esetleg. A lényeg, hogy a Timer-eket kell megfelelően ütemezni, felparaméterezni. Ehhez kellenek különböző előosztók, meg kezdeti értékek, és annyi. No meg a ráaggatott interruptok. Szerintem megoldják itt neked, csak legyen valami kezdeti elképzelés. Ha lesz időm, akkor felpakolok egy ilyen időzítőt neked. Onnantól meg egy kaptafa szinte mindegyik.
Bővebben: Link Ide feltöltöttem, megy. A LED világít folyamatosan de nem tudja lemodellezni, no meg 100Hz-en amúgy is emberi szemmel nem látható lenne a villogás. Nekem PORT manipuláció kellett, azzal villogtatom a ledet, de 8-13 ig villogna most minden lábon. A timer 2 szerintem hasonló. De 150Hz-re ez állítható, de ekkor az interrupt- függvényben kell a megelelő változóknak értéket adni. A hozzászólás módosítva: Jan 25, 2024
Én nem használom a delay függvényt, éppen ebből az okból, hogy megállít mindent, csak azt olvastam hogy a 3bol az egyik timert a delay hasznalja. És nemtudom hogy így én mennyire faraghatom azt át magamnak.
Szerintem, ha a beépített delay-t a kódodban sehol sem használod, akkor a timer megmarad neked, arra használod amire akarod. A delay is egy programkód, ami a fenti beállításokat elvégzi neked úgy, hogy az eredmény a delay() zárójelében lévő szám legyen. Szóval ha az nincs, attól még te arra használod, amire szeretnéd.
Köszönöm a dolgokat, ha hazaérek felteszem a kódomat amit eddig összetákoltam, abban én a timerone.h könyvtárat használom és úgy az időzítőt.
De ne indíts több timert szerintem, mert azzal csak feleslegesen bonyolítod a kódod. Mikor melyiket kell leállítani, meg indítani. Szerintem ezzel is megoldható, de ha nem értem a feladatot és mindenképpen kell timer2 is, az sem gond. dsPIC-ben minden timert függetlenül lehet használni, mert különben nem lenne jó. Persze PWM-nél, stb.-nél élből lefoglalja a megfelelő timert, de ha nem indítod el, akkor minden hardverelemhez hozzáférésed van. Szerintem itt is ez a helyzet.
A hozzászólás módosítva: Jan 25, 2024
A beépített delay nem használ timert. Simán egy ciklusban pörög, míg le nem telik az idő. Lásd a forrását.
A millis használ timert. |
Bejelentkezés
Hirdetés |