Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
A leg egyszerűbb 1 végtelen ciklusba belefutni, pl.:
Nem vehető ki az írásodból, hogy melyik alkalmazásról van szó?
Ha a Blink.ino? Akkor szerintem ezt kellene 3-ra állítani a 4. sorban:
És a tömbb feltöltésnél jöhet amit akartatok:
A hozzászólás módosítva: Feb 2, 2018
A linken egy 10 csatornás spektrumanalizátor villogó van. Elméletileg komplett és működik. A cimbora viszont 10LED/ch helyett 30-at szeretne hajtani. Mivel kevés a RAM, így azt javasoltam (mivel a felbontás, ha 10 marad, nem baj), hogy a LED-ekre byte-ot kivivő rutint hívjuk meg háromszor (vagy másoljuk be még kétszer, Flash van elég). Csak ezt meg kellene találni ugye, ha valaki használja és ismeri a FastLED könyvtárat, valószínű hamarabb kitúrja, hol van ez. Persze én is dolgoztam addig, IDE 1.8.5 felrak, FastLED 3.1.8 letölt, fordít. Jönnek az üzenetek:
"C:\Program Files\Arduino\libraries\FastLED-3.1.8/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.008 pragma message "FastLED version 3.001.008" "warning: iteration 10 invokes undefined behavior [-Waggressive-loop-optimizations] for(unsigned char x = grenzen[i]; x < grenzen[i+1];x++){" "containing loop for(unsigned char i = 0; i < 11; i++){" No meg hogy elég kevés a memória. Most írtam neki, hogy nála egyáltalán működik-e a letöltött program, mert nálam nincs kimenő jel. Tehát ilyen a vak vezet világtalant dolog
A fentebb írtakon kívül.
Nem igazán értem az elképzeléseteket? Mert ha van x10*y10-es mátrixotok! Hogyan akartok rá kitenni x10*y30-as ábrát?
Nagyon szépen köszönöm. A setup részre nem is gondoltam, hogy oda írjam.
Esetleg egy olyan kérdésem, hogy ugyan ezt a példát hogyan lehet ugy megoldani, hogy ne delay legyen benne? Szeretnék vele közbe egy kapcsolónak az állapotát is figyeltetni, és ha pl az a kapcsoló ad egy magas jelet, akkor kezdjen el világítani az összes led. Az időzítés az 5perc, 10perc, 12perc, és ugye addig áll a program.
Úgy, hogy 30 LED hosszú szalagot tesz a 10-es helyére. Ennyi RGB adat tárolására már nincs elég hely, ezért neki jó az is, ha 3-LEDenként kapcsol (3 egymás utáni lesz az eredeti 1 pixel).
Na, erre gondoltam a favágó módszert, hogy amikor egy LED RGB értéke kimegy, akkor ugyan azzal (ugyan abból a tömbhelyről) még 2x kiviszem. Közben itt szenvedek, sajnos nincs kimeneti vezérlőjelem, pedig a Te által írt kisprogramon kívül csak a FastLED lib van bent. Szóval van itt baj épp elég.
Akkor már oda a loopba is kell írni , feltétel vizsgálatokkal gomb állapotát figyelni.
Az már nem lesz ilyen egyszerű.
1 változóval, amit hasonlítasz valamihez,
Itt a millis fv-t használom, ami milliszekundumot ad vissza, és a lenti egy 5 másodperces időzítés
A hozzászólás módosítva: Feb 2, 2018
A csatolt programrészt, hogyan tudnám megoldani delay nélkül? Nem jövök rá egyszerűen. Folyamatosan köreb-körbe kellene neki menni.
Úgy ahogy írtam.
A hozzászólás módosítva: Feb 2, 2018
Szerintem, Inkább igy:
Próbálom, már minden féle formába, de nem hajlandó semmit se csinálni, már végig próbáltam vele minden variációt, ami eszembe jutott.
Primán működik, kezdem érten.
Azt mivel érem el, hogy ezt a ismételje folyamatosan?
Az utolsó feltételnél elölröl indítod:
Ez a kód nálam szépen villogtatja a ledet (Uno). Arra kell figyelni (és ezt el is rontottam), hogy ha millis() helyett millis-t írsz, akkor nem szól a compiler. de nem fog működni. A millis az nem tudom micsoda amúgy, de ha println-nel ki akarom iratni akkor ambigous...
A cél az volt, hogy ne álljon a program sehol!
Akkor mivel jobb, hogy delay helyet while (millis() < t1) { itt ál? } Bővebben: Link A hozzászólás módosítva: Feb 2, 2018
Most ez a program vége. És itt most megáll, azt kellene elérnem, hogy kezdje előröl ezt a folyamatot, vagyis ami a void loop() részbe van.
A hozzászólás módosítva: Feb 2, 2018
+ Ami a setupban van:
A hozzászólás módosítva: Feb 2, 2018
Nem az volt a cél, hogy ne álljon sehol, hanem hogy ne legyen benne delay, hogy tudja vizsgálni közben egy kapcsoló állapotát.
Jelenleg egyik módszer se csinál semmit a delay helyett, csak fut egy ciklusban és közben vizsgálja az időt, az már részletkérdés hogy a loop-on fut végig amíg le nem telik az idő, vagy egy while-ban. A ciklusba is be tudja tenni a vizsgálatait amit akar csinálni (gombnyomás), de egy külön fv-be kirakva is hívogatja, és akkor ez lesz a delay helyett:
Vagy írhat egy saját, "reszponzív" delay-t is:
De interrupt-ot is használhat, nem túl régen volt arról itt szó. A hozzászólás módosítva: Feb 2, 2018
Amit én javasolta tetszőlegesen több szálon időzített progrm.
A hozzászólás módosítva: Feb 2, 2018
Hidd el, értem a kódodat.
Mindketten más javasoltunk, mindkettő működik, mindkettőnek van előnye és hátránya is, feladatfüggő hogy melyiket érdemes használni. Majd eldönti hogy melyiket akarja, illetve szerintem már eldöntötte.
OK!
Tulajdonképpen az első példát azért hagytam félbe, hogy gondolkozzon kicsit. Így közben meg érti az elvet. Az lenne a lényeg! Nem a végtelenül le egyszerűsített példa kód. A hozzászólás módosítva: Feb 2, 2018
Ohhhh, ééérteeem, Megküzdök vele, de kezd össze állni a kép.
Persze, halat és ne hálót, én is így gondolom. Én is azért írtam alternatívát, mert ötletet adhat, elgondolkodtathat.
Az egyik kis intenzitással tervezett, "talán nekiállok már egyszer tényleg" proginál én is a tiedhez hasonló kódot írok, pontosabban csak írogatok. Az cooperative multitask jellegű lesz, azaz az egyes funkciók szépen eltárolják hogy mikor kell legközelebb futniuk (pl. millis() +100), és ha legközelebb futni kezdenek akkor ezt vizsgálva vagy elkezdenek futni, vagy adják vissza a vezérlést, ami a következő ilyen funkcióra kerül át. A hozzászólás módosítva: Feb 3, 2018
|
Bejelentkezés
Hirdetés |