Hirdetés

2024. március 29., péntek

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-03-11 00:46:52

LOGOUT.hu

Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.

Összefoglaló kinyitása ▼

Hozzászólások

(#22201) Janos250 válasza Aryes (#22200) üzenetére


Janos250
őstag

Nekem mostanában Aliról 2-3 hét alatt megjönnek a cuccok. Ritka, ami nem. (Például elvileg Olaszországból 2 hónap is volt)

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22202) Aryes válasza Janos250 (#22201) üzenetére


Aryes
nagyúr

Költői túlzás volt :D

Novemberi rendelésemből szintén minden megjött 3 hét alatt, kivéve azt az egy alkatrészt, amiért az egész rendelés volt, amit legjobban vártam karácsony előtt, na annak kellett 2 hónap. :W

(#22203) cigam


cigam
félisten

Csatlakozóról jut eszembe: Hol lehet kapni szerelhető USB-A és USB-B dugót?
Furán hangzik, de nem találok olyan "printer kábelt", amit nem valami félvezetőből készítettek. 5V és ~400mA hatására 1V esik rajta, és 4V-al már nem röffen be a ketyere. Lehet rosszul kerestem rá de nem találtam olyan szerelhető csatlakózót, amiből tápkábelt tudok faragni.

[ Szerkesztve ]

Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews

(#22204) dew28 válasza cigam (#22203) üzenetére


dew28
aktív tag

A - B

[ Szerkesztve ]

(#22205) cigam válasza dew28 (#22204) üzenetére


cigam
félisten

Köszi!

Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews

(#22206) Postas99


Postas99
senior tag

Múltkor panaszkodtam, hogy a LittleFs nincs támogatva Arduino 2.1 alatt.
Most találtam egy jó leírást hozzá és plug-int is
[Itt]

(#22207) Aryes válasza Postas99 (#22206) üzenetére


Aryes
nagyúr

:C köszi!
És stabil?

[ Szerkesztve ]

(#22208) Postas99 válasza Aryes (#22207) üzenetére


Postas99
senior tag

Nem voltam körültekintő:
LittleFS Filesystem Uploader

ERROR: Only Arduino-Pico RP2040 and ESP8266 supported.

Nekem már nincs ilyen régi cuccom.

Vagyis RP2040-el teli van a ház. Azzal meg nem akartam vacakolni mert azt meg python-ban meg lehet oldani és még barkácsolni sem kell hogy az MP3 fájl felugorjon a készülékre, viszont abból meg nincs ekkora kapacitácú cuccom, csak a 2 megás.

[ Szerkesztve ]

(#22209) Tankblock válasza Postas99 (#22208) üzenetére


Tankblock
aktív tag

Milyen Boardhoz kellene?

Release the Beast....

(#22210) Postas99


Postas99
senior tag

[Ez]
vagy
[Ez]

DE huszárvágással megoldom. Van még 1.8 Arduino környezet. Ott feltolom a LittleFs-re az mp3 fájlokat, és a kódot lehet akár 2.1-ből is feltenni. Bár maradhatnék 1.8-on is.

Hétvégén már nem volt kedvem ezzel játszani, szárítógépet szedtem szét és még csak nem is jutottam a végére. Összeraktam és majd tavasz után amikor már nem lesz szükség rá, szétkapom és kitakarítom a vízgyűjtő szivattyú motort, addig meg add üvöltsön.

(#22211) Tankblock válasza Postas99 (#22210) üzenetére


Tankblock
aktív tag

Most értettem meg, te a filokat szeretnéd feltölteni, a sketch mellé...

[link] az vagy a régi 1.x ide vagy parancssorból lesz elérhető, vagy vársz mire elkészül/megírod te :-)

Release the Beast....

(#22212) Gergosz2


Gergosz2
veterán

Sziasztok!

Nincs valakinek elfekvőben egy W5500 vagy enc28j60 modulja, amit nem használ és megválna tőle?

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#22213) ViZion válasza Postas99 (#22194) üzenetére


ViZion
félisten

Hát... ezek... hááát... :U megérkeztek és qrva jók :R
Még nem szereltem be, de már fogásra is komolyabb. Aki mini projectekbe van, annak nem ez lesz a kedvence. Én már próbálok inkább a tartósság/szerelhetőség felé menni, a kis méret rengeteg lemondással jár. Ezek sem szekrény méretűek, de dupla hely, mint az átlag kínai sorkapocs. De itt lehet rögzíteni a vezetéket normálisan, nem csak 0,0001 mm átmérőig használható.... :D

Gergosz: [link] ha nincs senkinek. Esetleg aprón keresés? :U Néha vannak kincsek, fiókürítős akciókban.

[ Szerkesztve ]

Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy

(#22214) Gergosz2 válasza ViZion (#22213) üzenetére


Gergosz2
veterán

már mindegy, rendeltem :)

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#22215) Postas99 válasza ViZion (#22213) üzenetére


Postas99
senior tag

Örülök, hogy tudtam segíteni. :)

(#22216) cog777


cog777
senior tag

Van egy uj projektem. Egy kezi radio audio kimenetet kellene monitoroznom, es szamolnom hanyszor nyitott ki a zajzar. Szerintem egy meglevo esp32-ot hasznalok fel, annak van kijelzoje, fogyasztas mindegy, mert usb-rol taplalom.

Kerdes hogy hogyan kossem ossze fizikailag az esp32-vel, talan vezetekekkel es proba panellal?
Mekkora lehet a max feszultseg egy kezi radio audio jack csatlakozojan? (Quansheng k5-k6-rol lenne szo) Szerintem az ESP32 3V-ot visel el, asszem...

Az egesznek az a lenyege, hogy ha nem vagyok radiokozelbe, akkor is tudjam kesobb, hogy valaki kereshetett (amolyan nem fogadott hivas szamlalo).

HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian

(#22217) Aryes válasza cog777 (#22216) üzenetére


Aryes
nagyúr

Én egy ellenállás + 3,3V zener diódát használnék.

(#22218) cog777 válasza Aryes (#22217) üzenetére


cog777
senior tag

köszi!

HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian

(#22219) cigam válasza cog777 (#22216) üzenetére


cigam
félisten

Esetleg ez a leírás segíthet adatkapcsolaton keresztül kommunikálni/figyelni/ vezérelni a rádiót.

[ Szerkesztve ]

Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews

(#22220) Béééla


Béééla
őstag

Biztos, hogy nem az itt tartózkodóknak fog első renden tetszeni, de csak van mindenkinek egy kis kocka ismerőse: terveztem egy kifejezetten abszolút kezdőknek szánt shieldet. Anyagára tokkal-vonóval nagyjából 2000 Jó Magyar Királyi váltóból kijön. Nem árulom, mielőtt valaki átirányítana az apró részre :DDD a dizájn szabadon elkérhető. Hátha valami iskolai foglalkozáson vagy hasonlón hasznos lenne valakinek!

Bélabá

(#22221) cog777 válasza cigam (#22219) üzenetére


cog777
senior tag

wow, koszonom, meglesem mit lehet kihozni.

HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian

(#22222) tibi-d


tibi-d
tag

Sziasztok!
Hogy egy kis programozás is essen szóba.
Hogyan tudnék String tömböt létrehozni. (String myString[2] = {"string1", "string2"};) ezt nem fogadja el a fordító. Mi a helyes szintaktika?

(#22223) cigam válasza tibi-d (#22222) üzenetére


cigam
félisten

Miért rakod az egészet zárójelbe? Vagy csak a példa kedvéért?
Milyen nyelven?

Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews

(#22224) Aryes válasza tibi-d (#22222) üzenetére


Aryes
nagyúr

Szerintem először deklaráld a tömböt, és a setupban töltsd fel adattal. Úgy emlékszem így fog menni.

(#22225) Gergosz2 válasza tibi-d (#22222) üzenetére


Gergosz2
veterán

Mivel a string egy char array, ezért string vectorhoz egy char mátrixot kell deklarálnod. Erre azért lesz szükséged mert ahogy te próbáltad, úgy nem azonos hosszú is lehet egy egy sor, amire hisztizni fog a compiler.

Példa

char myStrArray[3][10]= {"asd", "asd1","asd12"};

Értelemszerűen a "" miatt a /0 is ott lesz mindegyik végén

B opció, ugyanez pointerrel :

char *myStrArray[3]= {"asd", "asd1","asd12"};

[ Szerkesztve ]

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#22226) Janos250 válasza Gergosz2 (#22225) üzenetére


Janos250
őstag

Biztos, hogy nem fogadja el?
String myString[2] = {"string1", "string234"};
Én nem látom a logikáját, mivel a myString[2] önmagában pointer.
Majd holnap kipróbálom.

[ Szerkesztve ]

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22227) tibi-d


tibi-d
tag

Megint bebizonyosodott, hogy a figyelmetlenség mekkora galibát is okozhat. Mindenkinek igaza volt, mindegyik verzió helyes, csak azért dobta vissza a fordító, mert duplikált változónév volt a rendszerben, amit nem vettem észre.
Köszi mindenkinek.

(#22228) 5150head


5150head
senior tag

Sziasztok. Melyik arduino uno klón az ajánlott pl amazonról?
Egy, majd később kettő db nema17 léptetőt szeretnék róla hajtani.
Ezekhez milyen motor vezérlőt ajánlotok?
Köszönöm :R

(#22229) JulianSinulf válasza 5150head (#22228) üzenetére


JulianSinulf
senior tag

Szia!
Hogyan szeretnéd hajtani?
Számítógép nélkül vagy számítógéppel?

Ha számítógéppel, akkor érdemes egy Mega-t választani, azon van több serial port.
Persze megoldható Uno-val is, de, akkor szoftveresen kell megcsinálni a serial portot, mert a hardverest a számítógéppel való kommunikációra használja. Úgy olvastam, hogy ez nem mindig jó.
Ha számítógép nélkül csinálod, akkor csak addig kell lehúzni a meghajtót, amíg felprogramozod az Uno-t.

Én TMC2209 meghajtót használtam.
GitHub-on elérhető a library.
Sajnos nincs benne hogyan lehet adott lépésre vezérelni. Legalábbis én nem találtam meg. Így maradt az adott sebesség alatt megtett út beállítása és a működtetési idő változtatása a kívánt távolság eléréséhez. Elméletileg.
Egy lézervágó állítható magasságú asztalát csináltam meg vele.
Számítógépről állítható.

Azért ezt a meghajtót választottam, mert erről tudom, hogy csendes.
Viszont lehet, hogy egy A4988-ban több a lehetőség programozás szempontjából. Érdemes utánanézni. Én nem tettem, csak tudtam 3D nyomtató tapasztalatból, hogy ez hangos meghajtó, míg a TMC2209 halk.

Én csak vettem pár különböző arduino darabot ebay-en rákeresve. Hogy pontosan milyen klón, nem tudom. Működnek.
Van köztük Mega wifivel is.

(#22230) Aryes válasza JulianSinulf (#22229) üzenetére


Aryes
nagyúr

Már miért kellene ehhez serial port? :F Vannak olyan stepper driverek, amit nem is neked kell vezérelni gpio-n keresztül, hanem i2c-n át lehet programozni, például a wemos d1 mini motor shield, ami TB6612 drivert használ. Emiatt nem hogy mega, de az uno board-ról is lebeszélném, hacsak nem ragaszkodik hozzá oktatási vagy egyéb okból, inkább egy wemos board két ilyen shield-del (lehet stack-elni és akkor még nagyon jumperelni sem szükséges).

Bár most nézem, hogy ez csak dual motor shield, de van shield kimondottan stepperhez, illetve a dual H-bridge is alkalmas stepper vezérlésére, csak nem tudom a wemos shield i2c/library szinten támogatva van-e.

[ Szerkesztve ]

(#22231) 5150head válasza JulianSinulf (#22229) üzenetére


5150head
senior tag

Semmi extra. Egy adott sebességen forgó steppert akarok csak egy csillagászati mechanikához. Visszakeresve volt itt olyan aki már épített, de ha jól emlékszem ő go-tot, ami magától rááll egy objektumra. Neki írtam már pm-et de eddig nem válaszolt. Én egyelőre csak annyit szeretnék, hogy a föld forgását kövesse le.
Wokwiban ezt hoztam össze, nyilván lelesve innen-onnan a kódot, most kezdtem csak foglalkozni a dologgal. [link]
Esetleg annyit jó lenne még megoldani, hogy két gombbal tudjam csak egy pillanatra ameddig nyomom a gombot gyorsítani/lassítani a forgást, meg lenne mondjuk egy on/off.
Később majd a másik tengelyt is motorizálnám.

(#22232) JulianSinulf válasza Aryes (#22230) üzenetére


JulianSinulf
senior tag

Tök jó!
Én erről még nem hallottam.
És ez tud olyat, hogy adott lépést megy a motor?

(#22233) Janos250 válasza JulianSinulf (#22232) üzenetére


Janos250
őstag

Attól függ, mit akarsz. Azt hiszem nem meglepő, hogy én nem az ezeréves UNO-val hanem nagyjából ugyanannyiba kerülő, vagy olcsóbb, de jóval korszerűbb, hosszabb távon is megfelelő ESP32-vel csinálnám. Lehet hozzá kapni kicsi panelt, amivel lehet csatlakozni.
https://vi.aliexpress.com/item/1005005677080016.html
Én is vettem ilyet, de nem használom, mert korábban készíttettem JLCPCB-n eléggé univerzális 100x100 mm-es ESP32 panelt, aminek lefelejtettem egy vezetékét, ezért a túloldalán van egy vezeték, így már snassz megmutatni valakinek, kidobásra lettek szánva, de tökölődésre megteszi, így ezeket használom, sajnálom kidobni.
Van konkrét példa is ESP32 és léptetőmotor hajtására, pl.:
https://www.youtube.com/watch?v=JQGnLW6SB8M
A TMC2209 jó, korszerű, hosszabb távon is lehet rá számítani, de drágább, mint az egyszerűbbek, mint például az általánosan használt A4988.
Vannak persze mindenféle kész shieldek is, de én nem olyat használnék, de ízlés dolga.

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22234) Aryes válasza JulianSinulf (#22232) üzenetére


Aryes
nagyúr

Erre sajnos nem emlékszem.

(#22235) JulianSinulf válasza Janos250 (#22233) üzenetére


JulianSinulf
senior tag

Ezzel a videóval csak az a baj, hogy ez sem a TMC2209-et mutatja be.
A múltkor is néztem egy videót, ahol éppen csak a végén megemlítették, amúgy meg az A4988-at használták. Mérges is voltam, mert fölöslegesen néztem meg. Persze a címbe, meg a kezdő képbe bele kellett tennie a TMC-t is.
Egy blogbejegyzés és videó alapján indultam el a dologgal. Tudtommal az illető a mai napig nem tette közzé, hogy befejezte e az asztalt vagy sem. Ha tippelnem kellene, akkor nem fejezte be.
Ráadásul ma már jó pénzért lehet olyan lézervágókat kapni, aminél nem kell vacakolni a fókuszbeállítással, mert megcsinálja a gép magától.

(#22236) 5150head válasza Janos250 (#22233) üzenetére


5150head
senior tag

Nyitott vagyok bármire, mivel nincs berögzülve nálam semmi.
Azért unora gondoltam mert ahhoz rengeteg leírás, guide van. Gyorsan és egyszerűen össze lehet dobni.
Nyilván ha gotosítani szeretném akkor ahhoz kell egy pc vagy egy astroberry szerver.
A lényeg, hogy hamit írtam, azt a lehető legegyszerűbben és legolcsóbban megoldani.
Ha nem muszáj pl nyákra nem forrasztanék, annyira nem vagyok gyakorlott.

(#22237) Janos250 válasza JulianSinulf (#22235) üzenetére


Janos250
őstag

" ez sem a TMC2209-et mutatja"
Nem, persze, de az elve ugyanaz. Mert akkor még valószínűleg nem volt divat a TMC2209.
A TMC2209 kétségkívül jó, tavaly én is azt vettem, mert "a következő ötéves tervben" szerepel egy ESP32-vel megépített, panel, ami tartalmaz léptetőmotor meghajtókat, érzékelő kapcsolókat, FET-es "nagy áramú" kimenetet, SD kártya olvasót, stb.
(vagyis, ami egy CNC-hez kell)

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22238) Janos250 válasza 5150head (#22236) üzenetére


Janos250
őstag

Amit linkeltél, az is jó. Az az egyszerűbb olcsóbb léptetőmotor vezérlő is jól használható. Gyakorlatilag egyformák ezek. Megvan, mit kell a tekercsekhez kötni, van irányt megadó bemenete, és "lépj egyet" bemenete. Van pár pinjük, amivel be tudod fixen, drótozni, hogy milyen legyen a microstep, ha akarod (microstep, amikor nem egész lépést tesz, hanem valahol közte megáll)
A többi szoftver kérdése. Meg kell csinálnod egy szabályt, algoritmust, hogy milyen időközönként léptessen. Olyankor ad egy "lépj egyet" jelet. Ennyi. Az ESP32 annyival jobb, mint az UNO, hogy korszerűbb, hosszabb távon is jó. Ami program az UNO-n megy, annak általában az összes többin (pl. ESP32-n is) kell mennie, hiszen az is Arduino.
ESP32-nek még előnye, hogy van benne WiFi, így később ha kedved szottyan, tehetsz rá WEB szervert, és telefonon keresztül állíthatod a paramétereket.

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22239) 5150head válasza Janos250 (#22238) üzenetére


5150head
senior tag

Akkor vissza a kályhához :DDD
Van ajánlott klón ami tuti jó lesz, vagy csak válasszak valamit aliról és ennyi?
Ha jól értem, akkor az ESP32 az unot váltaná fel, csak korszerűbb kivitelben, viszont kell hozzá egy alap board.
A TMC2209 meg halkabb meg újabb mint az A4988, ha jól értem.

Érdemes egyébként starter kitet venni, majd ahhoz még amit kell, vagy csak vadásszam össze ami jó lehet?

(#22240) Janos250 válasza 5150head (#22236) üzenetére


Janos250
őstag

Az ESP32-t most néztem Alin:
US $3.59
Price includes VAT
· Free shipping
· Fast delivery 13-day delivery by Apr 03 - 09

Ennyiért UNO-t se kapsz!

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22241) Aryes válasza 5150head (#22239) üzenetére


Aryes
nagyúr

Ha jól értem, akkor az ESP32 az unot váltaná fel, csak korszerűbb kivitelben, viszont kell hozzá egy alap board.
Lehet venni ESP32-t magában is, de senki nem teszi, vannak UNO-hoz hasonló board-ok usb-vel, visszajelző ledekkel, headerrel stb, Janos250 kolléga is ilyen kész board-okat illeszt saját pcb-re, hogy ne kelljen huzalozni/jumper kábelt használni. Ilyen board többféle van, Lolin, Wemos, NodeMCU, XY developer board néven találod meg. Olyat vegyél, ami usb csatlakozót tartalmaz, ahhoz nem kell külön programozót is venni. Például ilyen esp32-s3 board-ot: [kép]. De találsz olyat is, amin van egy kis OLED kijelző, ami szintén hasznos lehet.

Érdemes egyébként starter kitet venni, majd ahhoz még amit kell, vagy csak vadásszam össze ami jó lehet?

Attól függ, mit szeretnél. Ha szükséged van sok kiegészítőre, szenzorra stb mert nem tudod előre, mit szeretnél, akkor jó lehet, de olcsóbb, ha pl az Ali-n összekattintgatsz mindent külön, ami kell.

[ Szerkesztve ]

(#22242) Undoroid


Undoroid
őstag

Sziasztok Szakik!

Két kérdésem lenne egy ESP01S-el kapcsolatban!

1. Programozás előtt vagy után tegyem fel rá a DEEP SLEEP-es átkötést vagy az teljesen mindegy?

2. Programozni szeretném (megvan a hozzá való eszközöm) de ha jól emlékszem, akkor kell rá valami átkötés (?) is az adatátvitel megkezdése előtt...vagy nem kell és különben se igyak annyit szerelés közben? :DDD

https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-

(#22243) olli válasza Undoroid (#22242) üzenetére


olli
tag

[link]

By cool !

(#22244) Undoroid válasza olli (#22243) üzenetére


Undoroid
őstag

Szia!

Köszi, ezt már valamikor már olvastam! Viszont nem akarom frissíteni a firmware-t, hanem csak egy önállóan működő programot szeretnék rá telepíteni! Egészen pontosan EZT! Vagy első használat előtt fel kell telepíteni valami boot-loader félét?

https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-

(#22245) Janos250


Janos250
őstag

Hogyan lehet használni C++ -ban a unionban benne lévő másik uniont?
Erre a programrészre:
union dataFrame1 {
    uint8_t bytes6[6];
    union x {
       uint8_t code[5];
       uint8_t code2;
    };
} ;
dataFrame1 proba1 ;
proba1.x.code2 = 1 ;
A következő a hibajelzés:
invalid use of 'union setup()::dataFrame1::x'
Tudom, meg lehet kerülni, de én így szeretném megoldani, hogy egymásba ágyazott unionokkal.
Miért nem jó így?
Hogyan kell?

Közben meglett: a union nevet a végére kell tenni :-(

[ Szerkesztve ]

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22246) Aryes válasza Undoroid (#22244) üzenetére


Aryes
nagyúr

Viszont nem akarom frissíteni a firmware-t, hanem csak egy önállóan működő programot szeretnék rá telepíteni

Vagyis frissíteni akarod rajta a firmware-t :D

(#22247) Aryes válasza Janos250 (#22245) üzenetére


Aryes
nagyúr

Vagyis mi a helyes megfejtés? rájöttem.

[ Szerkesztve ]

(#22248) Janos250 válasza Aryes (#22247) üzenetére


Janos250
őstag

Aztán, persze nem igazán sikerült megértenem a lelki világát, hogy pl.
union x {
uint8_t a;
uint8_t b;
} y ;
Ebben mi a különbség az x és az y között?
Rendben, hogy x a típus, y meg a változó neve, de azért nem sikerült teljes mélységében magamévá tenni. Például a korábbi mintapéldában.
Bonyolultabb esetben (többszörös beágyazások), ha valami hiba van, és az y helyén nincs semmi, akkor hibajelzésként a unionra nem "unnamed union", hanem "unnamed struct" hivatkozik.
Ezek szerint, a union számára egy struct, csak az elemeit egymásra címzi?
Meg lehet azt adni, hogy egy sima struct elemei ugyanazt a memóriaterületet használják, azaz a fenti példában ha az uint8_t b helyére megfelelőt írok, akkor közösen használják?

Mert rendben van, hogy tömbnél ezt hasznáhatom, hogy megadom a címet, pl:
volatile uint32_t* SHA_TEXT_0_REG_array_32 =
((uint32_t *)(0x3FF03000));
És akkor érvényes, értelmes pl. az:
SHA_TEXT_0_REG_array_32[i] = 0;
(mert ezt épp most írtam, és jó)
viszont, ha nem tömb, hanem egyszerű változó, akkor is meg tudom adni, hogy egy konkrét címre, vagy egy mások változó "tetejére" rakja?
Structnál is megy, de egyszerű változónál hogyan?

[ Szerkesztve ]

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22249) ekkold válasza Janos250 (#22248) üzenetére


ekkold
Topikgazda

Lényegében egy pointert hoztál létre, amit utána úgy indexeltél egy változóval, mintha egy tömb lenne. Ezt megteheted, de tudni kell, hogy ilyenkor nem történik memória foglalás, mint egy tömb vagy sima változó esetén (csak a pointer számára foglal memóriát), tehát ha nem jó címre írsz, elszállhat a programod.

Ezt megteheted sima változó esetén is, foglalhatsz memóriát dinamikusan, vagy létrehozhatsz konstans pointert is.

uint32_t * kodszam = ((uint32_t *)(0x3FF03000));
*kodszam = 0 //az adott fenti címre beírja a nullát
kodszam[0] = 0 //ez ugyanezt csinálja

[ Szerkesztve ]

(#22250) Aryes válasza Janos250 (#22245) üzenetére


Aryes
nagyúr

Egész délelőtt azon gondolkodtam, hogy milyen gyakorlati értelme lehet ennek a kódnak:

union dataFrame1 {
uint8_t bytes6[6];
union {
uint8_t code[5];
uint8_t code2;
} x;
} ;

azon túl, hogy proof-of-concept. :)

(#22251) JozsBiker


JozsBiker
aktív tag

Sziasztok !

Van egy Arduino programom ami a SETUP -ban különböző beállításokat végez, delay -eket is használva. Szeretnék egy sátusz LED -et, ami villogna addig amíg végére nem ér a SETUP, ezzel jelezve a használónak hogy még nem üzemkész az áramkör.
Nem vagyok benne túl mélyen a programozásba de úgy olvastam hogy megszakítással lehet az ilyen dolgokat "programfüggetlenül" megoldani. Utána viszont azt is olvastam, hogy a delay utasítás bezavarhat. A SETUP -ban nincs jelentősége a delay -ek pontos idejének, akár pár 100 ms -nak sincs jelentősége, viszont fontos lenne hogy nehogy kiakadjon a program vagy ilyesmi.
Tudnátok valami jó megoldást javasolni ?

[ Szerkesztve ]

(#22252) Janos250 válasza Aryes (#22250) üzenetére


Janos250
őstag

Gyakorlati értelme?
Hát az, hogy egy szerűbb példát kérdezzek, és ne ezt:
union dataFrame {
    uint8_t bytes6[6];
    struct  {
        union {
            uint8_t code;
            struct {
                uint8_t opcode  : 4;
                uint8_t RSV3    : 1;
                uint8_t RSV2    : 1;
                uint8_t RSV1    : 1;
                uint8_t FIN     : 1;
            } byte0struct;
        }byte0;  // byte0
        
        union {
            struct {
                uint8_t payloadLen  : 7;
                uint8_t mask        : 1;
            } maskPayload;
            uint8_t byte1data;
        } byte1; // byte1
        
        uint8_t masking_key[4];
    } dataFramestruct  ;
}; // union dataFrame
dataFrame frame1 ;


Ez a WEBsocket data protokolja.

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22253) Janos250 válasza ekkold (#22249) üzenetére


Janos250
őstag

Kösz, de éppen azt szeretném, hogy ne kelljen csillagozni!
Ne
*kodszam = 0 
hanem
kodszam = 0 
legyen, de rájöttem, hogy ezt nemigen lehet, mert a fordító nem fog úgy fordítani, hogy a változót az általam megadott helyre tegye, ha nem pointer. :-(

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22254) Janos250 válasza Janos250 (#22252) üzenetére


Janos250
őstag

Mert akkor pl. az opcode-ot így kapom meg:
msgtype =frame1.dataFramestruct.byte0.byte0struct.opcode ;
Tudom persze, egyszerűbb bizonyos szempontból,ha rákérdezek, hogy 81 az első byte?

[ Szerkesztve ]

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22255) Janos250 válasza JozsBiker (#22251) üzenetére


Janos250
őstag

Ez attól is függ, milyen lapot használsz, mert például ESP32-n biztosan tudom, hogy van szál, ott mehet külön szálon amit a setupban akarsz, és egy másikon a villogás, és bevárják egymást.
Hogy ez mondjuk UNO-n is van, arra nem vennék mérget.

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22256) JozsBiker válasza Janos250 (#22255) üzenetére


JozsBiker
aktív tag

Ez még UNO/Nano.

(#22257) Aryes válasza Janos250 (#22252) üzenetére


Aryes
nagyúr

De nem érted, unionba másik uniont tenni, annak mi értelme? Ugyanazt az egy byte-ot 3 különböző néven elérni?

A most linkelt (WEBsocket) példának látom értelmét, mert unionban struct van és fordítva.

(#22258) Janos250 válasza Aryes (#22257) üzenetére


Janos250
őstag

A problémám a beírt WEBsocket dataframe-nél volt, mert nem tudtam elérni valamelyik bitet, mert a unionnak csak az elejére tettem nevet, a végére nem. Viszont megpróbáltam a problémát egy egyszerűbb példára leegyszerűsíteni, mert ha a teljeset írom be, szerintem sokan csak vakarták volna a fejüket, hogy mi a fenét is akarok. Annak a példának a gyakorlatban semmi más értelme, mint hogy megkérdeztem, hogy hasonló esetben hogyan kell csinálni.
Azóta már próbáltam a netről tanulni. Ami nevet a union elejére írunk, az típus. Mint például az, hogy "int". Azt csak ugyanarra, vagyis új létrehozására használjuk, mint pl. az int-et.
Viszont a végére írt, az a terület neve.
Példával élve:
int pelda ;
Ebben az int-nek "felel meg" a union elejére írt név, a "pelda"-nak meg a union végére írt.
Mivel a példában csak a legkívül álló egységgel hozunk létre, foglalunk le területet, csak ott SZÜKSÉGES a típus név. Ott előre is kell írni. A belsőkben már nem kell, mert azok már a terület egy részét mutatják, az már "változó név", azt a végére kell írni.
"Ugyanazt az egy byte-ot 3 különböző néven elérni?"
Ha másként daraboljuk, például bitekre, akkor van értelme.
A példával (a hosszabbal) élve:
Először beolvasom a 6 byte-ot, mert az a protokoll fejléce, annyi mindenképp jön. Utána az egyes részeket vizsgálom, akár bitenként, mert például a FIN bit azt jelenti, hogy nincs több csomag, ez az utolsó, ha az opcode = 1, akkor egy egyszerű adatcsomag következik, ha meg nyolc, az a close, akkor agyon kell csapni a klienst. (néhány házaló klienssel is szívesen megtenném :) )

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22259) Aryes válasza Janos250 (#22258) üzenetére


Aryes
nagyúr

Ha másként daraboljuk, például bitekre, akkor van értelme

Én is ezt mondom: ha másként darabolod, akkor van értelme, de az eredeti példának nincs. :DDD

De értem az egész problémát, és igazad van. :K

(#22260) Janos250 válasza Aryes (#22259) üzenetére


Janos250
őstag

:)

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22261) ekkold válasza Janos250 (#22253) üzenetére


ekkold
Topikgazda

Hacsak nem használsz erre #define -t :)
Pl.
#define kodszam (*kodszampointer)
......
uint32_t * kodszampointer = ((uint32_t *)(0x3FF03000));
......
kodszam = 0;
....
kodszam ++;
.....

[ Szerkesztve ]

(#22262) ekkold válasza ekkold (#22261) üzenetére


ekkold
Topikgazda

Másik lehetőség (lefordul, kipróbáltam):
const uint32_t &kodszam = 0xFFFF0000;

void setup() {
printf ("%ld", kodszam);
}

Ennek annyi a hátránya, hogy így a kodszam csak olvasható, írni (értéked adni neki)nem lehet.

(#22263) Janos250 válasza ekkold (#22261) üzenetére


Janos250
őstag

:R Ügyes! :)
Majd a másodikat is kipróbálom.

[ Szerkesztve ]

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22264) Janos250 válasza ekkold (#22262) üzenetére


Janos250
őstag

Ez nem teljesen nyerő, mert nem a tartalmat írja ki, hanem magát a címet.
const uint32_t &kodszam = 0x3ff0001C;
printf ("kodszam = 0x%X\n", kodszam); // kodszam = 0x3FF0001C
Pedig ennek a tartalma nem a címe, mert ez az SHA CLK engedélyezését tiltását tartalmazza.
Úgy tűnik, * nélkül nem oldható meg, legfeljebb define-al el lehet rejteni a csillagot.
:)

[ Szerkesztve ]

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22265) ekkold válasza Janos250 (#22264) üzenetére


ekkold
Topikgazda

Dehogynem :) attól még, hogy nem tömb, lehet így is használni (ha tudod mit csinálsz):

#define kodszam (kodszampointer[0])

(#22266) Undoroid válasza Aryes (#22246) üzenetére


Undoroid
őstag

Tehát, akkor Vagy első használat előtt fel kell telepíteni valami boot-loader félét? :U Lehet, hogy fogalomzavaros a kérdésem, de ez az idegen nyelvezetű megfogalmazás pont arra jó, hogy a kezdő ne értse meg az alap dolgokat... :B

https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-

(#22267) Janos250 válasza ekkold (#22265) üzenetére


Janos250
őstag

Igen, de épp az volt a kérdés, hogy tömb nélkül lehet-e?
Ha azt írom, hogy:
const uint32_t &kodszam = 0x3ff0001C;
És []-teszek mögé, akkor az már töm, és épp az volt a kérdés, hogy:

Mert rendben van, hogy tömbnél ezt használhatom, hogy megadom a címet, pl:
volatile uint32_t* SHA_TEXT_0_REG_array_32 = 
           ((uint32_t *)(0x3FF03000)); 
És akkor érvényes, értelmes pl. az:
SHA_TEXT_0_REG_array_32[i] = 0;
viszont, ha nem tömb, hanem egyszerű változó, akkor is meg tudom adni, hogy egy konkrét címre, vagy egy mások változó "tetejére" rakja?

Vagy rosszul értelmezem?

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22268) ekkold válasza Janos250 (#22267) üzenetére


ekkold
Topikgazda

Attól még, hogy * helyett [0]-t használsz nem lesz belőle tömb.

(#22269) Aryes válasza Undoroid (#22266) üzenetére


Aryes
nagyúr

...firmware alatt azokat a rögzített, többnyire kis méretű programokat és/vagy adatstruktúrákat értjük, melyek különböző elektronikai eszközök vezérlését végzik el.
Forrás: Wikipédia

Vagyis egy okoskonnektor szemszögéből nézve a benne lévő esp 01-en futó program (mivel a gyakorlatban bele van "égetve") egy firmware. :)

Copyright © 2000-2024 PROHARDVER Informatikai Kft.