Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Több könyvtári függvény is ilyen. Például a printf:
Bővebben: Link
Sziasztok!
Van pár tömböm,ami különböző hosszúságúak, byte típusúak. Hogy tudnám meghatározni a hosszukat? (a hossz a kiíratáshoz kellene) a sizeof mindig 4 értéket ad vissza (amit nem tudok, hogy miért) Böngésztem a netet, de az strlen csak sting/char tömbhöz jó, ha jól láttam. Mi a megoldás? Nyilván úgy is létre tudom hozni a tömböt, hogy a [] közé beírom az elemszámot, ha ezt vissza tudom nyerni valahogy,akkor az is megoldás jelenleg számomra.
A hozzászólás módosítva: Dec 25, 2019
Mert minden tartalom a tömben egységesen 4 byte, ezért ad a sizeof 4-t vissza. Ezt kezelned kell ( mondjuk osztva 4-l stb).
ööö... lehet nem értek valamit,de ha a 4-t osztom 4-el,akkor meg mindig 1-et kapok.Ezzel nem vagyok előrébb.
Nálam ez 5,4,6 és 9 byte hosszat ír:
A tömbök méretét előre meg szoktuk határozni, mivel a mikroprocesszorok memóriája elég karcsú!
A tömb mérete meghatározott, akár előre definiálod tomb[12], vagy ha üresen hagyod, akkor a fordító tölti ki helyetted, hogy hány eleme van a tömbnek. Tehát elviekben már tudod, mekkora a tömböd a fordításkor is!
Használhatsz változót is, vagy előre definiálhatod mint előttem írták #define. Ha valamilyen oknál fogva nem akarod számolgatni, mert a programozás során össze-vissza írsz hozzá, veszel el a tömbökből, akkor megpróbálhatod, hogy a sizeof(tomb)-értéket elosztod a sizeof(tomb[0])-val. Írj vissza, ha kipróbáltad, én telóról vagyok. Vagy a tömbőd végére berakod a '/0' lezárót, és akkor az strlen meg tudja számolni, de ha nem, akkor írsz egy saját fv-t hozzá. A hozzászólás módosítva: Dec 25, 2019
Persze.
Upc-s neten ment az outlokon keresztül gmailra is és tonlinera is a küldés. Telekomos netnél már csak tonline irányába tud küldeni. Üdv
Pedig biztosan hívtál már meg így. Pl. ott a Serial.begin(), nézd csak meg!
De ott is hasznos, ahol ugyanazt a függvényt több típusra is akarod használni. Pl. a Serial.print() ki tud írni int-et, float-ot, karaktert, karaktertömböt, stb., itt ez a függvény minden adattípusra meg van írva, és futásidőben az kerül meghívásra, ami a paraméter típusa alapján stimmel.
Itt van kb 11. perctöl pontosan elmagyarázva ( németül) hogyan müködik a sizeof funkcio és a tömb.
Igazatok van, működik a dolog, viszont akkor más a hibám.
Melléklem a részleteket is.
Egy tömbbel hívnám meg VFD_tomb rutint, de byte hossz=sizeof(tomb); sor négyet ad vissza Pedig elméletileg azt kellene visszaadnia, hogy milyen hosszú a tömb és a for ciklusnak addig kellene olvasnia a tömb elemeit. Hol a hibám? A hozzászólás módosítva: Dec 25, 2019
Tömböt nem tudsz paraméterként átadni egy függvénynek (még ha annak is látszik), csak a tömb kezdőcímét (a címe ezek szerint 32 bites). Vagy kiegészíted a függvényed egy harmadik (tömbméret) paraméterrel, vagy lezáró nullát teszel a tömb végére és akkor az strlen függvénnyel lekérdezhető az aktuális tömböd hossza.
Ha egy tömböt egy fv-nek át akarsz adni, akkor azt csak pointerrel tudod (a címével), onnantól kezdve elveszted azt az infót, hogy a tömböd milyen hosszú, mert a függvényen belül csak egy címe látható.
Köszönöm a segítséget mindenkinek, megoldottam a dolgot másképpen.
Köszönöm a segítséget!
Így már érthető, viszont van egy olyan gubancom hogy nem működik a telep feszültség mérése ezzel a megoldással. Holott így van megoldva gyárilag is, felvillan a telep hogy tele, fél perc múlva üreset mutat a kijelző.... Kis pihenés után megint jó fél percig, amit viszont végképp nem értek hogy ilyenkor nem is mérek az A0 bemeneten semmit, már kötöttem direktbe is egy dróttal 220k ellenállással a végén ugyanez..... Nem értem hol a gond
Közben úgy nézem megoldódott a probléma, két vezetősáv nagyon közel volt egymáshoz
Egy Yamaha szinti billentyűzetmátrixát próbáltam szimulálni ma Arduinoval. A lényeg, hogy a mátrix 9 címvezetéken kapja az éppen aktuális címet. A 9 címhez 6 billentyű (fél oktáv) tartozik. (Egyszerre csak egy címvezeték van alacsony szinten)
Arra gondoltam, hogy egy Arduinó Nanoval helyettesítem a mátrixot. A0-A8 és D13 a címvezetékeken veszi az aktuális címet, a D7-D12-ig pedig visszaadja , hogy melyik billentyű van lenyomva a 6 közül. Tehát ha az A0 alacsony szintre megy, akkor pl. D7-et alacsony szintre váltom, mellyel jelzem, hogy le van nyomva a hozzá tartozó billentyű. (de csak akkor ha címet kap) A dolog elvben szép, a gyakorlatban túl lassú az egész, úgyhogy semmi haszna nem lett. Mire reagál a Nano, addigra, 2-3 ciklus lezajlik a címzésben, és sokszor mire kiteszem az adatot, addigra rég más címhez tartozik már... Tehát ne így próbáljátok megoldani, ha ilyen problémába ütköztök... És megint random hangokat hallgatott a család egész délután
Lehet ha analóg kapcsolókat használsz működik. A sor meg oszlop jelekre a kapcsolók egyik pontja, a másik pontjukat meg közösíted. Így ha az adott gombhoz tartozó sor meg oszlop kapcsolót kapcsolod, egyenlő a gombnyomással.( már csak az időt kell mérni, hogy biztosan lenyomottnak érezze a gombot.)
Az ilyesmit nem biztos, hogy a sima Arduino C nyelvben kell megirni. Az ilyesmit alapbol ASM-ben vagy annak a kombináciojával lehet csak elérni. A minap éppen bizonyitottuk be, hogy igy az Arduinobol akár 100 kHz is kihozhato ( szignalgenerátori minöségben) C nyelvben meg a 10 kHz is sok.
Persze, csak akkor 49db kapcsoló kell... Vagy 49 kimenet ami nagyon sok vezeték sajnos. Egyszerűbbet szeretnék...
Ha tudnál dobni valami doksit, vagy linket erről, azt megköszönném! Természetesen rászánom az időt. Most tulajdonképpen már látom a serial printen, hogy címezgeti a bemeneteket, ha lenne szkópom talán látnám is mennyi a késésem a kimeneten...
Illetve melyik idet tegyem fel hozzá? A hozzászólás módosítva: Dec 26, 2019
Miért kellene? A midi minden ki/bemenetére egy kapcsoló, a másik pontjuk meg közös. Bármelyik gomb két analóg kapcsoló sorba kapcsolásával megvalósítható. Az adott gombhoz tartozó cím, meg oszlop lábakon lévő kapcsolók egyidejű zárásával már meg is van nyomva a gomb. ( talán a több midis gomb egyidejű megnyomása így nem megvalósítható, de az egygombos kezeléshez jó)
MT8812 vagy MT8816 akár hazsnálható is lenne szerintem.
Ami kérdés, egyáltalán milyen tempóban változnak a cím lábak. Ha 50-100Khz-nél több, nem sok esélyed van az arduinóval szoftveresen.( esetleg egy frekvenciamérővel megmérheted, max a kapott értéket a kimenetek számával szorozni kell.)
Egy gombhoz az mt8816 megfelelhet, több gomb esetén korlátos a diódák hiánya miatt. Amúgy miért nem veszel egy pár dolláros 8 csatornás logikai analizátort? Azzal simán megnézhetnéd milyen sebességgel van a mátrix működtetve.
Vagy váltasz egy erősebb hardverre, ami izomból megoldja neked a dolgot. Elég szűkös amit az arduino sebességileg tud, ide már lehet hogy érdemes lenne a váltás.
Ez nem olyan egyszerü. Itt már magával a chippel kell foglalkozni (az Atmel oldalon ott van rengeteg ASM példa) a portokat direktben kell cimezni ( nem digitalwrite meg hasonlo funkciokkal). Az Arduino IDE környezetéböl csak a program strukrura marad meg (Setup, loop stb).
Böngészd át az Arduino Port Registers fejezetet. Ott az alapok egészen jol meg vannak irva. A hozzászólás módosítva: Dec 26, 2019
Igen ezek a kodok már gépkodok (ASM), azaz egyenesen a chipet hajtják minden késleltetés nélkül. Persze még igy sem éred el a chip maximális sebességét, de már sokkal gyorsabb mint az Arduino alapsebessége.
|
Bejelentkezés
Hirdetés |