Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   504 / 839
(#) gazspe hozzászólása Jan 19, 2019 /
 
Sziasztok!
ESP8266-ot szeretnék rátenni egy Arduino Megára. Elakadtam az egyik adatbekérő iterációnál, feltételezésem alapján valamiért az arduino serial monitorja tölti túl a buffereket, de a Serial.flush() függvényre sem reagál.
Tudnátok segíteni, hogy miért triplázza és hogy lehet kiküszöbölni? (csak a 0.-t írtam, a -35, -38-at már magától dobálta ki).
Az adatbekérés stringjét Serial.parseInt-tel is próbáltam, úgy csak duplázta.
A hozzászólás módosítva: Jan 19, 2019

Untitled.png
    
(#) kapu48 válasza gazspe hozzászólására (») Jan 19, 2019 /
 
Szerintem olvashatatlan ez a kép!
Nem tudom kinézni mikor, van l változó vagy 1 érték használva? (Lehetőleg ne használj 1 karakteres változó neveket!)

Jobban járnál, ha kódrészletet illesztenél ide, kicsit bővebben.
És a terminál szövegét is ki lehet másolni.
Egér kijelölés után CTRL+C billentyű kombinációval. És szövegként ide illesztenéd!
A hozzászólás módosítva: Jan 19, 2019
(#) sitto válasza kapu48 hozzászólására (») Jan 19, 2019 /
 
Köszönöm!
Kigyomlálom a string függvényeket és átnézem a változók típusait.
Ami még nagyon sok helyet foglal az a mozgóátlag számítása.
10, 50 és 100 minta átlagának számytása között nagyon jelentős különbség van a memóriaigényben.
(#) kapu48 válasza sitto hozzászólására (») Jan 19, 2019 /
 
Én mellőzném a 4 Bytes double-vel számolást, ami roppant terület és idő igényes művelet.
A beolvasót értéket felszoroznám 10 – 100 – 1000-el ahány tizedes jegy szükséges?
És ezt uint16_t-ben tárolnám, jóval kisseb műveleti igénye van, és gyorsabb is.
És ha szükséges kiírásnál vissza osztható.
(#) szeg76 válasza gazspe hozzászólására (») Jan 19, 2019 /
 
Nem tripláz semmit a soros monitor.
A -35 és -38 pont 48-cal kisebb érték, mint a soremelés és kocsi vissza ASCII kódja, amit beállítástól függően a begépelt szöveg végére tesz.
Egy megoldás, hogy a soros monitoron "Nincs sorvég" opciót választasz.
Másik, univerzálisabb megoldás, hogy programban kezeled a bejövő adatot. Ha nem a '0'..'9' karakterek ASCII kódja, nem veszed figyelembe felhasználói válaszként.
(#) gazspe válasza szeg76 hozzászólására (») Jan 19, 2019 /
 
Köszönöm. Amennyiben rákerül a későbbi LCD-je és a html beviteli eszköznek, abban az esetben ezek szerint ez a hiba ki fog küszöbölődni, mert csak azokat a karaktereket kapja az Arduino, amiket programból beadok neki, ugye?
Próbáltam timerrel, flushhel, delayyel, egyéb if szerkezetekkel, de addigra már be volt olvasva. Ezek szerint, akkor a beolvasás közben tudok beleavatkozni, hogy ne disfunkcionáljon?
Kedves kapu48! Köszönöm az igyekezetet a problémám megoldására, valóban, a kód nehezen átlátható, 3 óra próbálkozás után fordultam hozzátok, sok elvérzett kísérlet után, melyeket nem dolgoztam ki, és elismerem, hogy nem a megfelelő formában raktam fel. Ha újra hozzátok fordulok, ezek szerint fogok eljárni.
A hozzászólás módosítva: Jan 19, 2019
(#) szeg76 válasza gazspe hozzászólására (») Jan 19, 2019 /
 
Ez függ pár dologtól.
Ha a képen látható lista 9 elem fölé nő, és többjegyű számot kell feldolgozni, akkor ebben a formában nem működik jól.
Ha csak az 1..9 számok választhatók, a 0 és minden más érvénytelen, akkor igen.
A hozzászólás módosítva: Jan 19, 2019
(#) KoblogPerGyok válasza gazspe hozzászólására (») Jan 19, 2019 /
 
Szia!

Ahogy szeg76 fórumtárs mondja. A serial.read() 1-1 byte-ot ad vissza eredményül. Azt teheted, hogy az adatokat egy stringbe fűzöd össze, majd azt vizsgálod és alakítod át számmá miután megjött az összes adat. Az if ebben az esetben a cikluson kívül lesz!!! Ez egyszerű, de memória igényes mert a string.h is begyógyul a kódodba aminek esetleg sok-sok felesleges függvénye is lesz, amit nem is használsz. A szebb megoldás az lenne ha a számot magát amit kap a serial-ról, az rögtön azt a számot jelentené ami kell mert ekkor nem kell ide-oda alakítgatni.

Azaz a másik oldalról kellene NEM karakterként értelmezett módon küldeni az adatot. egy byte 0-256-ig lehet. Ha ekkora szám elég, akkor 1db byte megy át. Szemben pl ezzel: 95 /r/n ami 4byte....
A hozzászólás módosítva: Jan 19, 2019
(#) Kovidivi válasza KoblogPerGyok hozzászólására (») Jan 19, 2019 / 1
 
"sok-sok felesleges függvénye is lesz, amit nem is használsz." amit nem használsz, az nem lesz befordítva!
(#) KoblogPerGyok válasza Kovidivi hozzászólására (») Jan 19, 2019 /
 
Ez legalább egy jó hír! köszi ezt nem tudtam!
(#) rolandgw válasza Kovidivi hozzászólására (») Jan 19, 2019 /
 
Igen, ez a két beállítás alapértelmezett a fordításkor : -ffunction-sections , --gc--sections.
(#) simonsen hozzászólása Jan 19, 2019 /
 
Üdvözlet mindenkinek!

Felmerült egy kérdés amire talán valaki tudja a választ ezért gondoltam , hogy itt érdeklődöm.
Létezik I2c buszos modul ami 16db servo-t tud működtetni.
PCA9685 16 Channel 12-bit PWM Servo motor Driver
Ez rendben is van de visszafelé,hogyan lehet 16 potmétert I2c buszra vissza küldeni?
mert ugye a servókat evvel a potikkal szeretném mozgatni minden egyes mocihoz egy poti kellene.
Tehát kellene egy modul vagy IC ami tud fogadni 16 potit és I2c-n küldi vissza.

Nagy érdeklődéssel és izgalommal várom a választ mert hosszas keresgélés után sem volt a Google a barátom.
Puff neki hát ez van utolsó lehetőségként vettem a bátorságot és megosztottam veletek.

Üdvözlettel Simonsen!
(#) Bakman válasza simonsen hozzászólására (») Jan 19, 2019 / 1
 
Tudtommal a szervómotorok attól szervómotorok, hogy megkapják a megfelelő PWM jelet és beállnak oda, ahova kell. Valamit nem jól gondolok?

Egyébként ezt keresd: I2C ADC. Pl.: ADS1115: 4 csatorna, csatornánként 16 bites felbontás, egy I2C buszra négyet lehet felfűzni, max. 860 Sps.
(#) KoblogPerGyok válasza simonsen hozzászólására (») Jan 19, 2019 /
 
Szia!

Digital Potmeter. Az, hogy van-e olyan amin 16 poti van, azt nem tudom.
A hozzászólás módosítva: Jan 19, 2019
(#) KoblogPerGyok válasza simonsen hozzászólására (») Jan 19, 2019 /
 
Vagy inkább sok-sok 12C Rotary encoder.

https://www.tindie.com/products/Saimon/i2c-encoder-connect-rotary-e...c-bus/

Update:

Úgy látom van sorolható kivitelben is:

https://www.tindie.com/products/Saimon/i2c-encoder-connect-rotary-e...c-bus/
A hozzászólás módosítva: Jan 19, 2019
(#) simonsen válasza KoblogPerGyok hozzászólására (») Jan 19, 2019 /
 
Üdv!

Maradok a potméteres változatnál ha van ilyen.

De azért köszi.

Simonsen!
(#) KoblogPerGyok válasza simonsen hozzászólására (») Jan 19, 2019 /
 
Abban az esetben i2c AD konverterre lesz inkább szükséged. A potikkal előállított fesz értékekkel akarod majd vezérelni a szervókat gondolom. Ekkor inkább i2c AD konverter kell, ami minimum 16 csatornás. Sima potikkal csak ezt tudom elképzelni mert nincs ennyi AD converter lába az arduinonak.


Erre tudok gondolni.
(#) simonsen válasza Bakman hozzászólására (») Jan 19, 2019 /
 
Üdvözletem!

Igen jól gondolod de a másik oldalon lehet digitálisan programból működtetni meg lehet bármiről is konvertálni de az én esetemben csak potméter jöhet szóba.
Keresem az ADS115 az jónak ígérkezik.

Hálásan köszönöm!

Üdvözlettel Simonsen!
(#) KoblogPerGyok válasza simonsen hozzászólására (») Jan 19, 2019 /
 
mint pl itt is:

https://forum.arduino.cc/index.php?topic=447245.msg3077334#msg3077334

Igaz, ez csak 8 csatornás, de kettő ebből és meg is van a 16 csatorna.
(#) Hp41C válasza simonsen hozzászólására (») Jan 19, 2019 /
 
Egy olyan kontrollerrel is meg lehet valósítani, aminek van 16 (10 vagy 12 bites) A/D csatornája és I2C illesztője. Pl. PIC16F18455, PIC16F18456: 24 bemenetű 12 bites A/D modul és I2C slave módra is képes illesztő.
(#) simonsen válasza Hp41C hozzászólására (») Jan 19, 2019 /
 
Üdvözletem!

Elnézést kérek mindenkitől mert elfelejtettem megemlíteni,hogy arduinora kell.
közben rátaláltam az ADS1232 re.
Köszönöm mindenkinek a segítségét.

Üdvözlettel Simonsen!
(#) Hp41C válasza simonsen hozzászólására (») Jan 19, 2019 /
 
Olvastam én, hogy arduinora -hoz kell. Az arduinora kezelné I2C felületen a PIC -et, mint 16 csatonás 12 bites A/D -t.
ADS1232 (Mouser 2 331,51 Ft/db) --- PIC16F18455 (Chipcad 370 ... 500 Ft/db tokozástól függően).
(#) simonsen válasza Hp41C hozzászólására (») Jan 19, 2019 /
 
Tisztelt Hp41C!

Sajnos nem értek a PIC hez.

Közben megtaláltam az ADS1256 8CH modult.

Az hogy a PIC olcsób egyáltalán nem érdekel ha hülye vagyok hozzá.

Van céleszköz ami egyszerűbb és praktikusabb még ha többe is kerül.

Köszönöm mindenkinek , hogy rávezetett a megoldásra.

Marad az ADS1256

Üdvözlettel Simonsen!
(#) Bakman válasza simonsen hozzászólására (») Jan 19, 2019 /
 
Nem túl nagy ágyú az egy ekkora verébre? Mármint az ADS1256.
(#) mateatek válasza simonsen hozzászólására (») Jan 20, 2019 /
 
Ha az I2C buszt lefoglalod, akkor marad 6 ADC-d egy Nano-n. A 16 darab potiból egyszerre mindig 6-ot olvasol be. 3 darab 4052-vel megoldhatod, hogy egyszer az egyik, másik, majd harmadik 6-os csoport potiját olvassad be. Lehet, hogy adódhat olyan dolog, hogy az analóg kapcsoló nem viszi át 5 voltos táplálás esetén az egész 5 voltos tartományt, de ebben az esetben egy-egy diódán keresztül kapják a potik az 5 voltot és a GND-t. Így alsó állásban 0.6 volt, felső állásban 4.4 volt lesz a potikon, de ezt átviszi az analóg kapcsoló, és majd szoftveresen korrigálod.
De legalább a sarki alkatrész boltból megoldod .

Szerk: tudom, hogy 3x6 az 18, de 2 poti helyet majd nem használsz.
A hozzászólás módosítva: Jan 20, 2019
(#) Kovidivi válasza simonsen hozzászólására (») Jan 20, 2019 /
 
Én egy LCD-vel, egy rotary encoderrel és egy nyomógombbal oldanám meg a problémát. Felbontástól függően több képernyővel oldanám meg, ha 0-9 érték elég, akkor egy kijelzőre elfér mind a 16 érték. Ha ez csak visszajelzés, akkor a háttérben a változó mehet 0-100 között is, az LCD-re pedig a tized részét írnám ki (attól függ mire kell ez az egész). Nyomógombbal a szervók között tudok váltani, a rotary encoderrel tudom az állását módosítani. Két potinál többet egy időben úgyse fogsz állítani, mivel csak két kezed van, ezért két rotary encoder is elég lenne bőven. Azért nem poti, mert akkor a szervó jelenlegi állása és a poti állása tuti nem egyezik, így szervó váltásonként minden szervó felvenné a poti aktuális állását (kivéve, ha ez a probléma a programban le van kezelve: csak akkor küldöm ki a szervónak a poti állását, ha kicsit megmozdult). Az analóg multiplexeres megoldás is tetszett.
(#) Kera_Will válasza mateatek hozzászólására (») Jan 20, 2019 / 1
 
cd4067 1-16 vagy 16-1 multi/demultiplexer.
1 analóg AD csatornát foglal + 4db címző vonalat az arduból.

A szinteltoló dióda se nagyon szükséges a map() függvénnyel lehet deltaX bemenetű értékű tartományból deltaY értékű kimeneti tartománnyá konvertálni .
(#) atus1981 hozzászólása Jan 20, 2019 /
 
Sziasztok!
Használhatom-e a nano-t az uno bootloaderjével? Sajnos a nano bootloaderje valamiért vacakol, amikor egy wdt-t tartalmazó vázlatot töltök fel és wdt miatt újra kellene indulnia, de csak a led villog.
Az uno bootloaderjével nincs ilyen hiba.
Vagy esetleg valakinek más ötlete, hogy a nanora nano bootloader kerüljön és működjö a wdt is?
Köszi.
(#) vargham válasza atus1981 hozzászólására (») Jan 20, 2019 /
 
Igen. Ugyanaz az MCU.
(#) atus1981 válasza vargham hozzászólására (») Jan 20, 2019 /
 
Akkor jó. A nano bootloaderje miért csinál ilyet? Nincs rá javítás?
Következő: »»   504 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem