Fórum témák

» Több friss téma
Fórum » Arduino
 
Témaindító: groening, idő: Szept 28, 2008
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   609 / 614
(#) Cooter válasza icserny hozzászólására (») Márc 25, 2020 /
 
Ez nagyon jó, köszönöm szépen, viszont valamiért nem működik. Ezt írja:

Arduino: 1.8.5 (Windows 7), Alaplap:"Arduino Nano, ATmega328P"

Ora:7: error: expected initializer before 'TM1637Display'

TM1637Display.display(CLKPIN, DIOPIN);

^

C:\Users\User.User-PC\Documents\Arduino\Ora\Ora.ino: In function 'void setup()':

Ora:11: error: 'display' was not declared in this scope

display.setBrightness(0x0F);

^

C:\Users\User.User-PC\Documents\Arduino\Ora\Ora.ino: In function 'void loop()':

Ora:17: error: 'Clock' was not declared in this scope

hh = Clock.getHour(h12, PM);

^

Ora:18: error: 'display' was not declared in this scope

display.showNumberDecEx(hh,64,false,2,0);

^

exit status 1
expected initializer before 'TM1637Display'

Ennek a jelentésnek több információja lehetne
a "Bővebb kimenet mutatása fordításkor"
opció engedélyezésével a Fájl -> Beállítások-ban.
(#) Cooter válasza Cooter hozzászólására (») Márc 25, 2020 /
 
Közbe megoldódott, gondolom a TM1637 könyvtár volt más...
(#) zoz11 válasza Kovidivi hozzászólására (») Márc 25, 2020 /
 
Sajnos nagyon nem pontos, van ahol már 10fokot is csal. Így más megoldást keresek.
(#) Kovidivi válasza zoz11 hozzászólására (») Márc 25, 2020 /
 
Szerintem ha kalibrálod, akkor jó lesz. Ez a számolási mód, amit alkalmaztál, nekem nem szimpatikus.
Ha lineáris az NTC (10K NTC-hez 10K ellenállás tartozik), akkor nagyjából jó értékeket fogsz kapni. 25°C-nál és 90°C-nál kalibrálnám (attól függ persze, mire kell. Ha szoba hőmérsékletet akarsz mérni, akkor az NTC nem jó választás). +-1°C-ra tippelném ilyenkor a pontosságát, ami pl. hővédelemhez megfelelő.
(#) zoz11 válasza Kovidivi hozzászólására (») Márc 25, 2020 /
 
A kiszámolás módja nem saját ötlet, úgy akadtam rá. 80-130fok között lenne használva 2-3fokos pontosság elegendő. Találtam rá más jellegű szoftveres megoldást, most tesztelem.
(#) Kovidivi válasza zoz11 hozzászólására (») Márc 25, 2020 /
 
Kalibrálnod kell, nem pedig másik számolási módot keresni...
Két ponton eltárolod a mért ADC értéket (mondjuk 25°C és 90°C), majd ebből visszaszámolod az aktuális hőmérsékletet. Ekkor fogsz kapni pontos értéket. Az NTC-nek van szórása, az soros ellenállásnak is, arról nem is beszélve, hogy az Arduino 5V-os tápját használod feszültség referenciának, ami a pontos ellentéte. Az NTC-t az Aref-re kell kötnöd a soros ellenállás pedig a GND-re, a közös pont mehet az ADC bemenetre. Az ADC referenciát át kell állítanod a belső 1.1V-osra. Ez lenne a korrekt út.
A hozzászólás módosítva: Márc 25, 2020
(#) zoz11 válasza Kovidivi hozzászólására (») Márc 26, 2020 /
 
Az egyértelmű, hogy az Aref-re került az 5V helyett. Hasonlóba gondolkodom, mint amit írtál, kezd össze állni a mérés így.
(#) Vacok válasza proba hozzászólására (») Márc 26, 2020 /
 
4 számjegyű kijelzőm van. Azóta elkezdtem azon dolgozni, hogy a Timer1-et felszabadítom a kijelző frissítés alól és ezt a funkciót átadom a főprogramnak. A főprogramban lévő while és for ciklusok a hang kiadásért felelősek, amik így viszont megakasztanák a kijelző frissítést, amint a program belép ezekbe a ciklusokba, de ha a csipogást a Timer1-nek adom, akkor ez is kiküszöbölődik. Egyenlőre most ott tart a dolog, hogy a főprogramból már működik a kijelző.
(#) StMiklos hozzászólása Márc 26, 2020 /
 
Szevasztok!

Két kérdésem lenne, de elég gyenge vagyok a témában, nem elején, hanem a közepén kezdtem, így sok hiányom van.
1. 1-2 éve felhagyott project (Arduino nano, több csatornás hőmérő, SD tárolás ez már összejött, de finomítani kellene rajta) működő paneljáról (mert elveszett az eredeti anyag) ki lehet-e nyerni a futó programját?
2. A soros monitor adathalmazát lehet-e kinyerni, menteni?

Választ köszönöm, üdv: StMiklos
(#) Kovidivi válasza StMiklos hozzászólására (») Márc 26, 2020 /
 
1. Csak gépi kódot tudsz visszakapni, tehát a későbbi szerkesztés nagyon nehéz.
2. Ha soros portra csatlakoztatod, jön az adat, akkor le tudod menteni.
(#) StMiklos válasza Kovidivi hozzászólására (») Márc 26, 2020 /
 
Köszönöm!

Az nekem is leesett korábban, hogy csak gépi kódsorozat jöhet vissza, azzal meg elég nehéz bánni, nekem ez felejtős.

Soros portról?

A módját még nem tudom (van a lapon csatlakozó), lehet megpróbálom.

Kösz: StMiklos
(#) Kovidivi válasza StMiklos hozzászólására (») Márc 26, 2020 /
 
A soros porton nem fog a programod visszajönni, ha erre gondolsz. Ott csak az az adat jön, amit a programodba a Serial.print-tel beírtál. Más nem fog jönni. Egyszerűbb újra megírni a programod, mint megpróbálni visszafejteni. Vagy ha csak lemásolni kell az AVR tartalmát, az megoldható (az Arduino alapból nincs lezárva, tehát ki lehet olvasni a tartalmát).
A hozzászólás módosítva: Márc 26, 2020
(#) StMiklos válasza Kovidivi hozzászólására (») Márc 26, 2020 /
 
Szevasz!

Nem, nem a programra, hanem a futása közben a soros porton (Arduino) megjelenő adatokra gondoltam.

Kösz, StMiklos
(#) pipi válasza StMiklos hozzászólására (») Márc 26, 2020 /
 
Hali!
"Jobb" terminál programok helyből tudják a soroson jött cuccot menteni, a megjelenítés mellett...
pl: https://sites.google.com/site/terminalbpp/
(#) Massawa hozzászólása Márc 26, 2020 /
 
Csak kérdés. Gyakran irok kodokat léptetö motorokra, és sok közülük nagyon komplex - speciális CNC hajtások és gyakran vagyok gondban biztosan megállapitani, hogy a kodban csuszik néhány lépés vagy a mechanizmusokban. Ezért ma elhatároztam, higy fejlesztek egy lépésszámlálot, hogy valoban mennyi lépésparancsot kapnak a tekercsek. ( nem minden berendezésben van speci meghajto modul, azaz én irom a 4 (vagy több) állapotot is a motorhoz, ami 4 porton csatlakozik a procihoz.
Aki már csinált ilyesmit gondolom tudja miröl beszélek.
Nos a kérdés az lenne, hogy mi mindent kellene egy ilyen lépésszámlálonak tudnia.
Jelenleg számolja a 4 kivezetés állapotát ( ha bemenet bármelyike változik az egy lépés). Ha megáll a motor a számolt értéket eltárolja és mutatja a displayjen. Majd ujra várja hogy változik-e valami a bemeneten és akkor ujra számol nullátol. Az várakozási idöt be lehet állitani 5-20 sek tartományban.
Van még valami ötlet mi mindent merülhet még fel?
(#) StMiklos válasza pipi hozzászólására (») Márc 26, 2020 /
 
Szevasz!

És köszönöm!
Nem találok lehetőséget, pédát az alábbira:

Arduino, SD írás, kódrészlet:
  1. if (dataFile) {
  2.     dataFile.print(meresszam);
  3.     dataFile.print("   ");
  4.     dataFile.print(IC1);

File megnyitás után ez végrehajtódik, működik.

Lehetséges ezt, és milyen szintaktikával egy parancssorba tenni, pl:

  1. dataFile.print((meresszam),("    "),(IC1));


Fordító lefordítja, de csak a meresszamot hajtja végre, többit figyelmen kívül hagyja..
Most hogy nézem, nem vagyok biztos benne, hogy a nyitó/zárójeleket így írtam a programban is.
Nem tudom most megnézni, éppen mérés fut.

Választ köszönöm, üdv: StMiklos
A hozzászólás módosítva: Márc 27, 2020
Moderátor által szerkesztve
(#) Kovidivi válasza Massawa hozzászólására (») Márc 26, 2020 /
 
Logikai analyzer kapásból megoldja a problémád.
(#) wbt válasza Massawa hozzászólására (») Márc 26, 2020 /
 
A hiba lehet mechanikus természetesen, de sokszor fordul elő a hétköznapi glitch vagy ramp hiba. A ramp hiba aránylag gyorsan kijön, a glitch az aljas! Tehát meg kellene nézni, hogy az interpolációs rutinjaidnál előállhat-e olyan helyzet, amikor a vezérlő kimeneteid csak egy nagyon rövid impulzust adnak vagy nagyon rövid ideig vesznek fel más állapotot. Aztán arra vagy van válasz, vagy nincs, esetleg elszámolás (belül azt tudjuk, hogy hol vagyunk, de a kimenetre beszaladt egy 120nsec-es tüske). Persze ehhez ismerni kellene jobban az egész dolgot. Esetleg külön megszakítás lekezelése/egymásrafutása tud még vicces lenni.
(#) David 3g válasza asch hozzászólására (») Márc 26, 2020 /
 
sSzia. Már rájöttem miben hibáztam. Köszönöm szépen azért a válaszokat. Valami okos kisokost nem tudnátok nekem ajánlani amiből tanulhatnék a programozásokról?
A hozzászólás módosítva: Márc 27, 2020
Moderátor által szerkesztve
(#) Massawa válasza Kovidivi hozzászólására (») Márc 26, 2020 /
 
Azt csak gondolod, számolj majd meg egy logikai analizátoron mondjuk 6400/4 állapotot ( az egyik esetben ez a mozgási minimum). És néha téved a gép.
(#) Massawa válasza wbt hozzászólására (») Márc 26, 2020 /
 
Meg elég sok trükk is kell ilyen gépekhez. Az egyik pl nagyon ritkán mozog ( 5-10 percenként egyszer). Az elsö verzioban nagyon szivtam, nyilván nem akartam a tekercseket állohelyzetben állandoan füteni, hiszen a mozgatott szerkezet nem tudta a motort elmozditani az önzáro mechanizmus miatt. Igy amin a motor célba ért, lekapcsoltam a tekercsekbe menö áramot. Ez nem volt jo, a motor 10-15 lépéssel tovább forgott a tehetetlenśeg miatt. Igy most az utolso lépés kb 3 mp-g rajta marad a tekercseken (ennyi idö alatt megnyukszik a mechanizmus), és csak ezután megy standby modusba.
Vagy egy másik eset ez pl még nem világos a speci motormeghajtokon sem.Mondjuk kiküldök 10 lépést a motorra majd hagyom megállni (standby) ha ujra kell léptetni akkor melyik állapottal kezd a ez elözö 10 lépést követö 11.-el , vagy valamilyen default állapottal? Nem tudom, higy standbyban vagy az EM mit kapcsol le az áramkörben, gondolom a motoráramot csökkenti vagy kapcsolja ki.
(#) Peter65 válasza Massawa hozzászólására (») Márc 27, 2020 /
 
A második bekezdésben érintetted azt, ami hasonló probléma, mint amit wbt felvetett. A következetes szekvencia jelenléte. Ha a lépések elvárt rendjéhez képest valami más érkezik, akár rossz sorrendben, akár túl rövid jel formájában, hibás lépéshez vezethet.
Ha ilyen analizátort készítesz, az is egy lehetséges feldolgozás lehet, hogy számolod az egyik irányú megfelelő szekvenciájú lépéseket, külön a másik irányú lépéseket, és ha olyan állapot áll elő, ami egyikbe se illik, akkor azt mint hibás állapotot külön számolja. Így ha a 10. lépés után jön a 11. az egyik irányba számol, ha a 9. akkor a másik irányba számol, ha a 8. lépés, akkor azt mint hibás állapotot számolja.
És akkor még a wbt által említett ramp hibával nem foglalkoztál, meg a többivel, mint például az általad is említett megállási bizonytalanságokkal.
(#) Massawa válasza Peter65 hozzászólására (») Márc 27, 2020 /
 
Nincs ramp a kodban, a mozgatott szerkezet pehely könnyü és amugy is lassan mozog alig 20 Hz a lépésfreki. Ki kell még találnom valamit mi mindent jelezzen. Gyakorlatilag most csak a lépéseket kell számolni. Elöbb azt fog kelleni tisztáznom, hogy nincs-e belsö tévedés a kodban ami rossz lépésszámot ad ki.

Más.
Lehet az Arduinoban olyasmit csinálni, hogy 4 bemenetet mint fél bytet kellene beolvasni? A bytere (8bit) van megoldásom de ilyen röviditett izére nincs.
Szoval van 4 digi bemenet és annak az egyidejü beolvasása megoldhato? Ha nem akkor vissza kell mennem ASM-be. Az is elképzelhetö, hogy a hiányzo másik 4 bitet egy fix nibbleven helyettesitem mondjuk 0xF-l? Ilyesmit még nem csináltam és az alapdolgok között nem találtam megoldást csak 8 bites verziora.
Kösz.
A hozzászólás módosítva: Márc 27, 2020
(#) usane válasza Massawa hozzászólására (») Márc 27, 2020 /
 
Nem valószínű, mert 4 bites regiszter maximum 4 bites vezérlőben van. Magadnak kell csinálni ha nem jó a 8 bites port olvasás.
Esetleg ez alapján tudsz, de lehet, hogy jobban jársz ha asm-ben írsz egyet, mert ez nem tudom milyen gyors.
A hozzászólás módosítva: Márc 27, 2020
(#) Massawa válasza usane hozzászólására (») Márc 27, 2020 /
 
Kösz, ugyanezt találtam én is. Na majd még valahogyan elgondolkodok rajta. Azt sajnos még nem tudom, hogyan lehetne az Arduino C nyelvet összekombinálni az ASM-mel.
(#) usane válasza Massawa hozzászólására (») Márc 27, 2020 /
 
Tanulmányozd pl ezt.
Vagy ezt. De van a neten több példa.
A hozzászólás módosítva: Márc 27, 2020
(#) Massawa válasza usane hozzászólására (») Márc 27, 2020 /
 
Szuper, kösz idáig még eddig nem jutottam el...
(#) asch válasza Massawa hozzászólására (») Márc 27, 2020 /
 
Simán be lehet olvasni 4 bitet egyszerre, ha azok egyetlen porton vannak. Nem kell hozzá ASM-et írni, C-ből elérhető a művelet:

  1. // A port azon lábai, amiket használunk:
  2. #define MASK 0b00001111
  3. // 8 érték beolvasása és a használt bitekre maszkolás, azaz a nem használtak 0-ra állítása:
  4. uint8_t value=PINA&MASK;


Ez működik Arduino IDE-ben is. A PINA helyére tedd azt a portot, amit olvasni akarsz. Csak tudni kell, hogy melyik port melyik lábai hova vannak mappingelve, de ezt az "Arduino UNO pinout" keresőszóval meg lehet találni. Semmi hátránya nincsen annak, ha így közvetlenül használod a lábakat, csak annyi, hogy platformfüggő lesz a kódod, azaz más mikrovezérlőre nem lehet ugyanezt a programot feltenni. Ez a kód pár utasításra fordul, és pár ciklus alatt lefut. A beolvasás konkrétan egy IN utasítás lesz, ami 1 ciklus alatt fut le.
A hozzászólás módosítva: Márc 27, 2020
(#) asch válasza David 3g hozzászólására (») Márc 27, 2020 /
 
Nemrég az Arduino 60 nap alattot javasolták itt többen is. Én nem ismerem, de jó lehet, és meg lehet még rendelni a könyvet a TávIR-tól.

Ha angolul is értesz, akkor végtelen sok anyagot találhatsz a neten.

Ha nem csak konkrétan az Arduino érdekel, hanem mély tudásra is vágysz, akkor egy _nagyon_ jó videó sorozatot tudok ajánlani a beágyazott programozásról, amiből nagyon sokat lehet tanulni, akár profik is profitálhatnak a későbbi részekből: https://www.youtube.com/watch?v=gQOv8o5lS2k Quantum Leaps, LLC: Embedded Systems Programming Lesson 1: Counting
(#) Massawa válasza asch hozzászólására (») Márc 27, 2020 /
 
Szia
Pontosan ilyesmit kerestem ( ilyesmivel még nem volt dolgom ).
A jelenlegi program a NANOn megy ahol a D2,3,4,5,6,7 négyet kiválasztok pl D2,D3,D4,D5 ami a port D 4 bitje PD2,3,4,5. A többi nem kell. Gyakorlatilag a maradék 4 bitet is felhuzhatom Highre. ( azok nem változnak), igy az összehasonlitáshoz megfelel az egész byte is, hiszen ha változik valami, csak az a 4 bit változhat.
Azaz akár ugy is maszkolhatom hogy
0b00111100. Azt hiszem ez tökéletesn elég lesz erre az alkalmazásra. Kösz!

IMG_4490.PNG
    
Következő: »»   609 / 614
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu