Hirdetés
-
PROHARDVER!
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.
Új hozzászólás Aktív témák
-
Mr-Pamacs
senior tag
válasz Wolfram #22998 üzenetére
A dfplayer boardon az Adkey1-re és Adkey2 portra kötött nyomógombok lenyomását szeretném programból lekérdezni. Tehát pl azt megoldani ha megnyomják a K12-t (Adkey2, 51kOhm), akkor az legyen a hangerő szabályozás növelése.
Valamint lenne még egy olyan problémám hogy ha a hangerő nagyobb mint 22, akkor a board leáll és újraindul. 5V-ról van megtáplálva, mértem a feszültséget, alap állapotban 4.8 körül van, és hangos lejátszásnál se esik lentebb 4,6-nál. Mind a 3 teszt hangfájlnál ez a probléma fennáll. Ez miért lehet?
[ Szerkesztve ]
-
Postas99
senior tag
Sziasztok!
Kérdésem lenne, azok akik csináltam már ESP32 vagy CH55x-el touch értékelést, mekkora a touch sensitivity?
Elegendő csak 1-2 cm-re meközelíteni a touch pin bekötést, vagy hozzá is kell érni?
Halloween projekt mindjárt 2 is. -
Mr-Pamacs
senior tag
Sziasztok
DFPlayer-nél az AdKey-nél ki lehet olvasni hogy melyik gombot nyomták meg? Nem a fejleszőt boardon akarom, hanem a dfplayer boardon.
-
JulianSinulf
senior tag
válasz Undoroid #22993 üzenetére
Szia!
A köztes helyzetben ez nem lényeg.
Amúgy a forgásirányra van egy kapcsoló, amit figyel a program. Így mindig tudja a motor, hogy merre kell menni.
Nekem van két LED-em, ami alapján tudom, hogy felfele vagy lefele fog menni, ha megnyomom a mozgató kapcsolót.
A végállásnál az a lényeg, hogy ez egy asztal, aminek nem kellene túlságosan lemennie, mert beleütközik a tartó szerkezetbe. Persze ez nem akkora gond, de jobb elkerülni.
És túlságosan fel se mehet, mert ott is beleütközhet ebbe-abba. -
Undoroid
őstag
Párszor láttam már ezt a megoldást, ha nem csak az aktuális értéket szeretném látni, hanem a változásokat is! Ez csak programozás kérdése vagy szükséges valami hardveres eszköz is, amivel el lehet valameddig menteni a korábbi értékeket? (eprom, microSD kártya, DS1307Z modul stb...)Okosotthonoknál láttam ezt a kijelzést...
https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-
-
Undoroid
őstag
válasz JulianSinulf #22992 üzenetére
Szia!A programozás részéhez nem értek, de lenne egy érdekes -gondolatindító- kérdésem: a két végállás közül, ha köztes helyzetben van a motor és így kellene elindítani, akkor azt mi dönti el, hogy az merre induljon el? Előfordulhat ilyen lehetőség? Ha igen, akkor lehet, hogy bonyolítani kellene az egészet egy digitális útadóval, amivel tudni fogja a motor, hogy éppen hol tart és merre kellene indulnia!
szerk: úgy tűnik, hogy közben megoldottad.[ Szerkesztve ]
https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-
-
JulianSinulf
senior tag
Ez így felettébb érdekes.
Most ilyen a kód:void step0_1mm()
{
heTest();
for (uint32_t i=0; i<2850; ++i)
{
vegallas_fent();
vegallas_lent();
if ((u == 1 and r == 1) or (d == 1 and r == 0))
{
Serial.print("fent: ");
Serial.println(u);
Serial.print("lent: ");
Serial.println(d);
Serial.print("forgas: ");
Serial.println(r);
return;
}
else
{}
digitalWrite(STEP_PIN, !digitalRead(STEP_PIN));
delayMicroseconds(STEP_DURATION);
}
}Ha teljesül a feltétel, akkor kiírja az "u" (fent), "d" (lent), "r" (forgásirány) értékeit és nem csinál semmit. Vagyis teszi a dolgát.
Ha nem teljesül, akkor nem fut le az "else" rész (ezért is vettem ki belőle a motor vezérlése részt), ellenben újrafut a ciklus.
Viszont szerintem túl lassan fut le a ciklus ahhoz, hogy megmozdítsa a motort, mert bár a motornak van áramfelvétele, mégsem mozdul. És tovább is van terhelve, mintha normálisan lefutna a ciklus.
Persze, ha azt mondanám a motornak, hogy 1 lépés, akkor 1 lépést is tudnia kellene fordulni, de így terhelés mellett nem venném észre, hogy megmozdult a terhelés.Gondolom szebb lenne a dolog, ha a végállást úgy vizsgálnám, hogy, ha az érték nem változott, akkor ne csináljon semmit. De ez per pillanat túl bonyolultnak tűnik.
Lehet, hogy a végálláskapcsoló állapotának a soros monitorra iratása fogná vissza?
Akkor is, ha nincs gépre kötve a panel?Szerk.: Igen, így van. Kivettem a soros monitor kiíratást és máris működik.
Azt viszont nem értem, hogy a "if" "else" része miért nem fut le és tér vissza a ciklushoz, mikor nem teljesült egyik feltétel sem.[ Szerkesztve ]
-
JulianSinulf
senior tag
válasz Tankblock #22989 üzenetére
Szia!
Köszi!
A "break"-et egy példaprogramban láttam. "Return"-t sehol nem láttam, de átírom.A 2850 csak a 0,1 milliméternél van. 1 milliméternél a tízszerese. 10 milliméterre most nem programoztam, de az megint egy szép ugrás lenne.
A PWM-hez nem értek. Nézegettem már, de eddig még nem kísérleteztem vele. Nem egészen világos minden része. Legalábbis ami infót találtam róla.
-
JulianSinulf
senior tag
válasz ekkold #22988 üzenetére
Eredetileg nem volt fent és lent, csak két kapcsolót figyeltem. Bármelyik is zárna rövidre, a motornak meg kellene állnia. De aztán rájöttem, hogy meg kell különböztetni, mert valahogy el kell indítanom a cuccot a másik irányba, ahol a kapcsoló nem zár.
Szóval mindegy, hogy melyik miatt lesz a "v" értéke 1. A lényeg, hogy ilyenkor a ciklus ne fusson tovább vagy épp el se induljon, hacsak nem teljesülnek bizonyos feltételek.Az lenne a lényeg, hogy, ha az egyik végálláskapcsoló zár, akkor a forgásirányt megváltoztatva elinduljon a motor a másik irányba.
Vagyis, ha a lenti végálláskapcsoló zár, de a forgásirány szerint még "lefele" menne, akkor ne induljon. Különben (vagyis, ha a forgásirány szerint már "felfele" menne, akkor) induljon el.
A két kapcsoló egyidőben nem zárhat.Hmm. Ez így tényleg nem jó. Így leírva és párszor még elolvasva a hsz-ed, tényleg gond, hogy csak a "v" van.
Akkor kell még egy változó, amivel megkülönböztetem őket.
És akkor már a forgásirány is kap egy változót, akkor nem kell megint a gombot néznem.
A forgásirányt a loop-ban amúgy is nézem minden lefutásnál.Köszi! Sokat segítettél!
Remélem így már menni fog! -
Tankblock
aktív tag
válasz JulianSinulf #22985 üzenetére
Szia
HA megáll a ciklus azt jelenti hogy a FV véget ér akkor
break
keywordöt cseréldreturn
re....breakkel a for ciklust egyel tovább lépteted és kész....
Mi lenne ha a PWM jelet HWből generálnád és lentre ill fentre vagy időre leállítanád a PWM jelgenerátort....
az
uint32_t
meg felesleges a 2850 értékhez.... 65535 a legnagyobb tárolható szám 16 biten előjel nélkül...[ Szerkesztve ]
Release the Beast....
-
ekkold
Topikgazda
válasz JulianSinulf #22985 üzenetére
Van néhány logikai probléma a programodban. A legdurvábbak:
- Avegallas_fent(); és a vegallas_lent();
függvényedet egymás után hívod, tehát az első függvény teljesen mindegy, hogy mire állítja a v változódat, mert a második függvény felülírja a v értékét.
- A másik probléma, hogy ugyanazokat az információkat többször értékeled ki. Tehát a v függ a végálláskapcsolók állásától, de azután újra vizsgálod ezeket. Tehát a két vizsgálat közül az egyik vizsgálat felesleges, a másikat meg jobban át kellene gondolni.
A javaslatom, hogy ne ezeket foltozgasd, hanem -> kuka, majd gondolt át mit szeretnél elérni, és írj új függvényeket rá.http://skory.gylcomp.hu/ http://www.skory.z-net.hu/ https://skori.hu/ https://skori.spacetechnology.net/
-
Wolfram
aktív tag
válasz JulianSinulf #22985 üzenetére
Kezdésként egy Serial.Println("v = 1"); -et berakhatsz a v=1 után, hogy lásd, fut erre az ágra vagy sem. 🤷
-
JulianSinulf
senior tag
Sziasztok!
Akadt egy kis bajom a "if and or" használatával.
Itt a kódrészlet. Remélhetőleg az oldal megfelelően fogja kezelni:void step0_1mm()
{
heTest();
for (uint32_t i=0; i<2850; ++i)
{
vegallas_fent();
vegallas_lent();
if (v == 1)
{
if (((digitalRead(KAPCSOLO_VEGALLAS_FENT) == LOW) && (digitalRead(KAPCSOLO_FORGASIRANY) == HIGH)) || ((digitalRead(KAPCSOLO_VEGALLAS_LENT) == LOW) && (digitalRead(KAPCSOLO_FORGASIRANY) == LOW)))
{
break;
}
}
else
{
digitalWrite(STEP_PIN, !digitalRead(STEP_PIN));
delayMicroseconds(STEP_DURATION);
}
}
}A "v" int változó és a vegallas_fent és vegallas_lent részben kaphat 1-es értéket. Amúgy nullával indul.
A végállás részek majdnem ugyan úgy néznek ki, a különbség a figyelt kapcsolóban van.
A cél az lenne, ha valamelyik "és" feltétel teljesül, akkor álljon meg a ciklus, ha nem, akkor fusson tovább.
De nem így tesz.
Ha a forgásirány kapcsoló magas értéken van, akkor nem hajtja végre az "else" utáni részt, ellenben lefut a ciklus 2850-szer. Gondolom, nem számoltam meg, de a végállás részekben kiíratom, hogy aktív a kapcsoló és az jó sokszor ott van a soros monitoron.
Ha a forgásirány kapcsoló alacsony értéken van, akkor megáll a program.Próbálkoztam egy ilyennel is, de az eredmény változatlan:
void step0_1mm()
{
heTest();
for (uint32_t i=0; i<2850; ++i)
{
vegallas_fent();
vegallas_lent();
if (v == 1)
{
if (digitalRead(KAPCSOLO_VEGALLAS_FENT) == LOW && digitalRead(KAPCSOLO_FORGASIRANY) == HIGH)
{
break;
}
}
else
{
digitalWrite(STEP_PIN, !digitalRead(STEP_PIN));
delayMicroseconds(STEP_DURATION);
}
if (v == 1)
{
if (digitalRead(KAPCSOLO_VEGALLAS_LENT) == LOW && digitalRead(KAPCSOLO_FORGASIRANY) == LOW)
{
break;
}
}
else
{
digitalWrite(STEP_PIN, !digitalRead(STEP_PIN));
delayMicroseconds(STEP_DURATION);
}
}
}És azt sem értem, hogy először be van állítva a "v" nullára, majd amikor utána lefut a végállás rész (itt már 300 ms van a "v = 0" és végállás rész között), akkor a "v"-t át kell állítani 1-re (mert a kapcsoló érteke LOW) és ezzel együtt egy kimenetet magas állapotba kell tennie. Ezt nem teszi meg indulásnál.
Ha futtatom a "step" részt, akkor az a bizonyos kimenet magas állapotba kerül.Azért ide teszem a végállás részt is:
void vegallas_lent()
{
if (digitalRead(KAPCSOLO_VEGALLAS_LENT) == LOW)
{
v = 1;
digitalWrite(LED_VEGALLAS, HIGH);
Serial.println("Végálláskapcsoló lent aktív!");
}
else
{
v = 0;
digitalWrite(LED_VEGALLAS, LOW);
}
}[ Szerkesztve ]
-
ViZion
félisten
válasz Wolfram #22982 üzenetére
mi a jel forrása? És hova megy? (aktív hangfal, erősítő, akármi)
Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html
-
Wolfram
aktív tag
Analóg audio jel hangerejét hogyan lehet legegyszerűbben távolról szabályozni?
Ezt nézegetem: [link] - erről le lehetne forrasztani az analóg potmétert, és egy digitálist rakni a helyébe, amit egy ESP vezérelhetne? 🤔 ..vagy már megint túltoltam a napi kávéadagot? 🧐[ Szerkesztve ]
-
-
Wolfram
aktív tag
válasz its_grandpa #22978 üzenetére
Inkább koncentrálj a következő kreatív projectedre, pl.: https://www.youtube.com/watch?v=mguHd-alAYs
-
Wolfram
aktív tag
válasz its_grandpa #22975 üzenetére
de távirányító volt benne, egy sört kérek.
-
nagyúr
válasz ratkaics #22970 üzenetére
Lehet azt G szenzorral is, de mikrofonnal szerintem egyszerűbb.
Kell egy piezo mikrofon (~200Ft), az bírja a rázkódást, extrémebb meleget (motortérben). Kell hozzá egy erősítő / impedanciaváltó / aluláteresztő szűrő fokozat, ami 1db opamp + pár dióda+ellenállás+kondenzátor (max 1000Ft, ha mindent a sarki hobbielektronika boltból veszel ) és már csak számolni kell az impulzusokat.
-
ViZion
félisten
válasz ratkaics #22971 üzenetére
valami optikai módszer? tükröző vs nem tükröző felület a kihajtáson? Okosotthon topikban voltak ilyesmi gázóra/vízóra leolvasók. Esetleg ha van egy dudor bárhol (tengelyen csavar, ilyesmi), akkor azzal is lehet már számolni.
Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html
-
ratkaics
senior tag
-
Wolfram
aktív tag
Egy ESP32-S3 WROOM N16R8-ot ( [link] ) próbálok beüzemelni Ard IDE 2.3-ban ("ESP32S3 Dev Module" van board-nak kiválasztva, jobbat nem találtam)
Feltöltés után ilyen hibát kapok a serial monitoron:
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Van valakinek hasonló lapja? 😥 -
ekkold
Topikgazda
válasz ratkaics #22966 üzenetére
Ha van benne generátor, akkor a generátor valamelyik tekercsén a frekvenciát lehet mérni (egyenesen arányos a fordulatszámmal). A haladási sebesség hez vahgy kell egy szerzor/jeladó valamelyik kerékre ill. tegnelyre, vagy GPS-el is meghatározható a sebesség.
A GPS-el csak annyi a baj, hogy lassabban frissül, de a sebbég és a forduzlatszám alapján meghatározható az áttétel (váltó sebességfokozata), és a GPS frissülései között, a fokozat ismeretében (a fordulatszám alapján) is frissíthető a sebesség.
Vagy ha a váltón is van valamilyen jeladó, akkor a fokozat + fordulatszám alapján is kalkulálható sebesség.http://skory.gylcomp.hu/ http://www.skory.z-net.hu/ https://skori.hu/ https://skori.spacetechnology.net/
-
ratkaics
senior tag
Sziasztok!
Öreg diesel traktorra szeretnék egy kis kijelzőt varázsolni, amin látszik a fordulatszám, és az abból származtatható PTO sebesség, valamint még esetleg a haladási sebesség.
Én valamilyen ESP-s megoldásra gondoltam először, de nem igazán találok olyan megoldást, amivel a motor főtengely fordulatot megbízhatóan lehetne mérni.
Tudtok esetleg javasolni valamilyen egyszerű megoldást?
Esetleg van valakinek tapasztalata a rezgésen alapuló fordulatszámmérőkkel? Mennyire működnek jól?Előre is köszi mindenkinek a segítséget!
Olyan nincs, hogy valami nem sörnyitó ....
-
Wolfram
aktív tag
válasz its_grandpa #22962 üzenetére
Az IR-es távirányítót váltom le RF-re, írtam a részleteket a [link]
-
its_grandpa
tag
válasz Wolfram #22952 üzenetére
Többet tudnánk segíteni ha elárulnád mit szeretnél megoldani.
Általam kipróbált és működő (nem filléres) megoldás n+1 433Mhz-s eszköz vételére.
1 Arduino Mega + Rxb6 + Rflink [link]
2 Lilygo + Openmqttgateway [link]
3 RTL-SDRAz ESP-s megoldások is működnek de (szerintem) páka+programozás is szükséges, még ha minimális is.
-
And
veterán
válasz Wolfram #22960 üzenetére
Ez pont egy olyan vevő, amit említettem az előbbi hsz-em végén: nem egy diszkrét jel jön le róla, hanem egy soros adatfolyam, 0,1 ... 10 kbps sebességgel (ezt az adóoldal határozza meg, mivel semmilyen kontrollert nem tartalmaz). Ez az Rx-modul a modulációban hozzá való adóval egy szimplex / egyirányú soros UART-ként használható. Ez az ASK-modul annyiban különbözik attól, amit a #22958-ban linkeltél, hogy ehhez kell egy uC, ami kezd valamit az adatfolyammal, ahhoz meg nem feltétlenül, hiszen az direkt vezérlésre használható DO-jeleket ad.
-
And
veterán
válasz Wolfram #22958 üzenetére
Ezek az xx2272-szerű cuccok párhuzamos jeleket adnak vissza vevőoldalon, és ennek megfelelő bemenetekkel dolgoznak az adóik is (tipikusan: nyomógomb megnyom az adón, a vevőn pedig az ahhoz tartozó jelkimenet lesz aktív). Mindössze 2...6 bit hasznos adatról van szó, amelyek független pin-eken jönnek ki a vevőmodulból. Esetedben a hét pin közül kettő tápfesz, egy antenna, a maradék négy pedig a hasznos adat. Ezek az eszközök az elérhető nagyobb, mint félmilliós címtér miatt hasznosak, mert elméletileg ennyi eszköz különíthető el címben anélkül, hogy a másiknak szánt üzenetet dekódolják. De a hasznos adat csak az a pár bit, talán egymástól függetlenül is vezérelhető (bár ez sem egyértelmű), ami legfeljebb 16-féle kombinációt adhat.
Ha ennél összetettebb adatátvitel kell, akkor valami normális soros vezérlésű Rx/Tx modulpár ajánlott, amibe annyi adatot küldesz be és úgy dekódolod a vevő kimenetét, ahogy tetszik. Ezekkel lényegében egy vezeték nélküli UART-ot kapsz. ([link] ). -
Wolfram
aktív tag
válasz Sebiferi #22953 üzenetére
Ezzel kell foglalkoznom (rc-switch)?
supported chipsets:SC5262 / SC5272
HX2262 / HX2272
PT2262 / PT2272
EV1527 / RT1527 / FP1527 / HS1527
Intertechno outlets
HT6P20XMagyarul ha veszek egy noname RF távirányítót, meg egy noname RF vevőt, menni fog, vagy kell valamit nézni részletesebben is?
[ Szerkesztve ]
-
.-..-.
junior tag
Aryes, Tankblock: Koszonom a tippeket.
Jelenleg 2db NRF24L01 van antennaval devkitc-re kotve, az onboard 3v3 szabalyozot hasznalva, viszont veletlenul vettem eszre, hogy valami tuzforro az esp32 pcb-n.
Nagyon meg nem volt idom vele foglalkozni, de elso tapintasra nem is a vregulator, hanem mintha valami masik smd alkatresz lenne.Ket ilyet konfigot kotogettem ossze probapadon, mukodik is, de mindegyik melegszik.
Ezert jott az otlet, hogy valami kulso 3v3 megoldast hasznalnek.De meg valamikor pontositom a problemat es szerintem elso nekifutasra lehet azzal kellene kezdeni valamit.
Ha nem sikerul sajat kutfobol, akkor visszaternek es a segitsegeteket kernem, ha nem banjatok. -
-
nagyúr
válasz .-..-. #22945 üzenetére
Hát az egyik verzió az onboard regulátor (a fűtős ) használata 5V boost konverter mellett, ez a pazarlós, de bevált, stabil megoldás.
A másik a 3.3V boost-buck konverter, aminek szintén nem nagyon megy a hatásfoka 80% fölé, inkább 70% az is.
Aztán van olyan is, hogy egy low drop regulátort kötni a pucér cellára, hátránya, hogy nem tudod a teljes töltést kivenni.
Talán a legjobb megoldás a 2S li cella + egy jó hatásfokú buck konverter, azzal 90% vagy afölötti hatásfokot is el lehet érni.Az AVR-ek ilyen szempontból egyszerűbbek, mert az 5V chipek 6V-3V közt simán elketyegnek minden konverzió nélkül (más kérdés, hogy a rájuk között perifériák annyira nem). Az ESP flash része viszont 3,6V fölött sajnos megsül, így azzal nem érdemes kísérletezni.
[ Szerkesztve ]
-
.-..-.
junior tag
Sziasztok.
Egy esp32 devkitc-t (és pár külső komponenst) szeretnék Li-Ion celláról használni.
Van valami bevált módja a 3.3V kinyerésének egy 18650 cella esetében?
Nyilván olyan megoldást nem használnék, ami "elfűti" a felesleges feszültséget. -
GeriSzán
csendes tag
Sziasztok!
Valaki szokott OpenPlc-vel programozni otthon Arduino-t?
Egy Uno r4 wi-fi -n gondolkodom, milyen kit-ET javasolná tok hozzá elsőre?
Később a Factory I/O-n keresztűli működtetés lenne a cél. -
ekkold
Topikgazda
Változó, hogy mikor melyik a jobb (#define vagy pl. const int).
Van amikor csak az egyik jó, pl. vannak olyan függvények amelyeknek csak változó lehet a paramétere, simán egy beírt szám nem. Ilyenkor a #define-al megadott érték nem lesz jó paraméterként használva.
Aztán itt van pl. ez:
#define ERR_MSG1 "Megszakadt a kapcsolat!";
const char* err_msg1 "Megszakadt a kapcsolat!";Ha a programban több helyen írjuk ki ezt az üzenetet, akkor az első esetben (#def..), a program több különböző helyén is fog tárolódni a szöveg, annyi példányban ahányszor kiírjuk. A második esetben viszont csak a stringre mutató pointer lesz többször felhasználva, a szöveg csak egyszer tárolódik el.
Az fordító optimalizálójára szerintem nem illik túlságosan támaszkodni, mert nem biztos, hogy mindig ugyanúgy fog viselkedni, és a működése attól is függ, hogy mi az optimalizálás célja (mert az is állítható: kódméret, sebesség, memóriahasználat, stb...), valamint sok esetben az is állítható, hogy mennyire legyen "agresszív" az optimalizálás. Utóbbi esetben sokkal hatékonyabb lehet, de előfordulhat, hogy olyasmit is kiszed amit nem kellene, és összeomlik a program... Tudom sokan már nem így programoznak, de én még azt tanultam, hogy igyekezzünk eleve hatékony kódot összehozni...
[ Szerkesztve ]
http://skory.gylcomp.hu/ http://www.skory.z-net.hu/ https://skori.hu/ https://skori.spacetechnology.net/
-
válasz JulianSinulf #22935 üzenetére
#define PIN 8
A preprocesszor, ami a fordítás előtt fut, gyakorlatilag tol egy "search and replace"-t.
const int PIN = 8;
Ez egy sima változó. Fordító ellenőrzi, hogy a típusa megfelel-e a függvénynek. Mivel const, ezért a fordító kioptimalizálja a kódból, így nem foglal extra memóriát sem.I did nothing, the pavement was his enemy!
-
nagyúr
válasz JulianSinulf #22937 üzenetére
Ilyen értelemben a #define és a const uint8_t közt nincs különbség, ha jól tudom, egyik sem használ RAM-ot.
uint8_t igen, csak 1byte-ot foglal, de ha nem dolgozol nagy mennyiségű adattal (tömbök) akkor nem igazán kell vele ilyen szempontból foglalkozni. Persze nem árt megszokni, hogy az ember ne pazaroljon, ha nem muszáj. -
JulianSinulf
senior tag
Bocs, valahol elnézhettem a LED-es részt.
Igaz, nem
cont
. Kevertem. Int. Vagy épp uint8_t. Megspékelve egy const-tal a sor elején.A TMC2209 példaprogramja const uint8_t-vel határozza meg a lábat, ami kimenetként fog szolgálni.
De ugyanezt használja időmeghatározásra is és más érték meghatározásához, mint a motoráram.
Nekem így fura.
Érdemes lenne a TMC2209 által használt lábakat is #define-re átírnom?
Az biztos, hogy átláthatóbb lenne.Kellett a programba egy tároló, az int lett. De mintha azt olvastam volna, hogy az uint8_t kevesebb memóriát igényel. Úgyis vagy 1 vagy 0 az értéke.
Vagy ilyennel ne foglalkozzak, a Mega 2560 elbírja?[ Szerkesztve ]
-
nagyúr
válasz JulianSinulf #22935 üzenetére
Mi az a
cont
?Azért jó a #define, mert ha szeretnél változtatni a bekötésen, utólag, akkor csak egy helyen, a program elején kell megváltoztatni a lábat. Ráadásul a #define nem használ RAM-ot.
A LED kapcsolás: korábban írtam a low side vezérlést, egyszerűbb, olcsóbb és problémamentesebb, mint a high side. Ráadásul ha közvetlenül kötsz egy ledet egy kontroller kimenetére, akkor az sink módban több áramot tud általában (károsodás nélkül) elviselni, mint source módban. Egy esp8266 esetében például 20mA vs. 8mA, ha jól emlékszem.
[ Szerkesztve ]
-
JulianSinulf
senior tag
Amit linkeltél nekem a #22922 hozzászólásban, abban benne van, hogy egyszerűbb a földhibák megtalálása, ha a magas oldal van kapcsolva.
LED-eknél miért jó a GND kapcsolása?
A pozitív ágon ugyanúgy ott vannak az ellenállások minden egyes LED-nél.
Ez is amiatt, mint a gomboknál a különböző áramkörök és azok feszültségszintje miatt?Mi a különbség, hogy #define vagy cont módon határozok meg egy lábat?
Próbáltam utánaolvasni, de nem volt egyértelmű. A LED-es példaprogramban a cont van használva, a chatgpt a #define-vel adta meg.
Más is kérdezte már külföldi fórumokon, de a válasz nem igazán volt világos azon kívül, hogy elvileg mindegy.
Én most a bemeneteket és a kimeneteket is #define-vel adtam meg. -
ekkold
Topikgazda
1, Több nyomógomb kezelése esetén is probléma mentes a GND -re húzás. Viszont az egyes áramkörök VDD feszültsége (logkai H szintje) lehet különböző (1,8V - 3,3V - 5V - 12V), ami hibás csatlakoztatás, ill. a gombok elcserélése esetén komoly problémát okozhat, ha a gombok H szintre kapcsolnának. Viszont a GND az mindig 0V...
2, A mikrokontrollerek bemenetén többnyire van szoftveresen bekapcsolható felhúzó ellenállás, így esetleg megspórolható egy külső alkatrész. Lehúzó ellenállás viszont nem minden mikrovezérlőben van, így ha a gombok H szintre kapcsolnak, ahhoz a legtöbb esetben kell külső ellenállás is. (de pl. STM procikban van választható felhúzó vagy lehúzó ellenállás is)
[ Szerkesztve ]
http://skory.gylcomp.hu/ http://www.skory.z-net.hu/ https://skori.hu/ https://skori.spacetechnology.net/
-
ViZion
félisten
woww Köszönjük. Azt tudtam, h a zajok miatt előnyösebb, de így részleteiben még jobban érthető.
Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html
-
nagyúr
válasz JulianSinulf #22919 üzenetére
De ott van a sütőelektronika, ahol a reléket ugyanígy kapcsolják. A 9V vagy épp 24 V a relé egyik lábán, majd egy illesztő IC segítségével a uC kapcsolja a földet a másikra
Na ezt pont tudom miért van. Ez a low side switch, [link]
A mikrokontroller általában 3-5V-ot képes kapcsolni, high side esetében viszont a fet teljes nyitásához a gate-et táp feszültségre kéne kapcsolni (9-24V) ami csak egy másik fet segítségével lenne lehetséges.Azt hiszem high side vezérlést csak az autókban használnak, valamiért ott az a biztonságos. /Fixme
szerk.:
Megkérdeztem a ChatGPT-t erről a témáról, ezt írta:A nyomógombbal történő vezérlésnél az egyik legelterjedtebb megoldás az, hogy a bemenetet egy felhúzó (pull-up) ellenállással a magas jelszintre húzzák, és a gomb megnyomásával a bemenetet a földre kapcsolják. Ennek a megoldásnak több gyakorlati oka van:
Zajkezelés és stabilitás: A földre húzás (pull-down) kevésbé hatékony a zajokkal szemben, mert a digitális bemenetek érzékenyebbek a zavarokra magas jelszint esetén. A földre húzott bemenet jobban ki van téve a zajoknak és elektromos zavaroknak, amelyek véletlenül "magas" állapotba hozhatják. Egy felhúzott bemenet viszont stabilan magas jelszinten marad, és a földre kapcsolás kevésbé hajlamos véletlen átváltásra, mivel a logikai "0" (föld) egy határozottan alacsony feszültségszintet jelent.
Bemeneti ellenállás és áramfelvétel: A CMOS és TTL áramkörök bemeneti áramfelvétele jellemzően alacsonyabb, amikor a bemenet földre van kapcsolva. Ha a bemenetet a tápfeszültségre zárnánk (pull-down ellenállás), akkor nagyobb áram folyhatna át a bemeneten a táp és a föld között, ami növelné az áramfelvételt.
Egyszerűbb felépítés: Számos digitális eszközbe beépített felhúzó (pull-up) ellenállás található, ami megkönnyíti a tervezést, mivel nem kell külső ellenállásokat alkalmazni. Ezek az ellenállások már elő vannak készítve a bemenet stabil magas szinten tartására.
Mechanikai stabilitás: A kapcsolók, nyomógombok és egyéb mechanikai eszközök gyakran bizonytalanok a zárás pillanatában, és visszapattanás (bounce) léphet fel. A földre kapcsolás esetén ez kevésbé okoz hibás jelzéseket, mert a bemenet egyszerűen nullára kapcsol, és a digitális rendszer könnyebben kezelheti a visszapattanás okozta zajokat.
Összességében tehát a földre kapcsolásos megoldás azért terjedt el, mert zaj- és mechanikai szempontból stabilabb, egyszerűbb és kevesebb áramot fogyaszt, különösen a CMOS technológiájú áramkörök esetében.
[ Szerkesztve ]
-
JulianSinulf
senior tag
Engem is érdekelne.
Nameg úgy eleve a kapcsolgatás.
LED-ek pozitív oldala a megfelelő tápon és a "földet" kapcsolják rá. Vagy IC-vel, ha több LED is van, vagy épp egy tranzisztor nyit a föld felé.
De ott van a sütőelektronika, ahol a reléket ugyanígy kapcsolják. A 9V vagy épp 24 V a relé egyik lábán, majd egy illesztő IC segítségével a uC kapcsolja a földet a másikra.
A triac ugyanez, csak ott tranzisztor van, nem IC. -
nagyúr
válasz JulianSinulf #22914 üzenetére
Érdekelne, hogy ez miért jobb megoldás, mint egyszerűen a gombbal tápra húzni a bemenetet, ami aktivál egy parancsot?
Igazából nem tudom miért ez a
fordított
logika terjedt el, de ez ilyende facto
szabvány megoldás, mindenki ezt használja, ha gombokat akarsz vezérelni, egy ismeretlen eszköz esetében, 99,9%, hogy ott is földre húzza a nyomógomb a bemenetet. Ez így volt már a C64 joystick portnál is 40 éveHa valaki esetleg tudja a miértjét, írja már le, én is kíváncsi vagyok!
[ Szerkesztve ]
-
Postas99
senior tag
válasz JulianSinulf #22914 üzenetére
Szia!
1, Van internal PullUp opció, vagy ezt bekapcsolod - Szoftver opció
2, Ellenállás 10K tápra felhúz - Hardver opció erre csatlakoztatod fel a nyomógombot aminek a másik vége földre van húzva.
Ezért kell mert a bemenet "lebeg" amit összeszed az fog történni a bemenetén. Ezt megelőzendő kell hardveresen vagy szoftveresen megoldani.A prell mentesítés már szoftverből is megoldható.
-
JulianSinulf
senior tag
Sziasztok!
Egy kis technikai segítségre lenne szükségem.
Egy-néhány gombbal szeretnék vezérelni egy motort.
Az openAI ajánlása, hogy a gombok bemenetét húzzam fel, a gombokkal pedig a földre az aktiváláshoz.
Érdekelne, hogy ez miért jobb megoldás, mint egyszerűen a gombbal tápra húzni a bemenetet, ami aktivál egy parancsot?
Esetleg a "lebegő láb" összeszedhet annyi zavart, hogy aktiválja a bemenetet?
Akkor húzhatnám a földre is a bemenetet?Mi a javasolt eljárás, milyen egyéb alkatrész kellhet még nekem a nyomógomb mellé?
Gondolok itt az esetlegesen megjelenő perregésre. De lehet, hogy ezt egyszerűbb kiküszöbölnöm a programban idővel, hogy egy gombnyomásra biztos, hogy csak egyszer fusson le az adott szakasz. -
Postas99
senior tag
válasz skun76 #22911 üzenetére
Kell 1db 8 csatornás logikai analizátor: pl:
[Ez]
Hozzá a [PulseView]
Ráforrasztod a cuccokat, vagy keresel pinpontokat és mehet a játék. Olyan mint az ágyb@sz@rás. Egyszerű.Itt egy jó [HowTo] hozzá. Gyerekjáték használni.
[ Szerkesztve ]
-
skun76
csendes tag
válasz ViZion #22910 üzenetére
Igazad van, nodemcu az.
Valószínűleg rosszúl fogalmaztam meg a kérdést a pinout-al kapcsolatban.
Engem az érdekelne, hogy melyik IO megy az egyik motorra, melyik a másikra, melyik a kormány motorra, stb. Mert így nehéz (hosszadalmas) lesz egyesével végig méregetni, hogy mi hova is megy. Nem megoldhatatlan de egyszerübb lenne ha valakinek lenne infója hozzá.
Köszönöm a válaszod.Üdv
-
ViZion
félisten
válasz skun76 #22909 üzenetére
az nem wemos d1, hanem egy nodemcu lesz szerintem. pinout a képeden van, meg neten is egy halommal.
Ha nincs meg a progija, akkor jó móka lesz újra kitalálni.Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html
-
Zsmester89
őstag
Csalóka, a rakéta 1m magas, a talapzat, amin 4 LED szalag lesz spirálban leengedve ~37cm magas
Nem állnadó világítás lesz, így igazából lehet gyenge vagy erős is a fénye.[ Szerkesztve ]
A "Hogyan lehetsz milliomos?" c. könyvet egy csomagban árusítják a BTK-val.
-
ViZion
félisten
válasz Postas99 #22906 üzenetére
nem én tervezem, a kérdező 4*50 cm írt.
sok-e? Fogalmam nincs. kellene a rakéta mellé banana 4 scale...
Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html
-
Postas99
senior tag
válasz ViZion #22905 üzenetére
Nem akartam semmibe belekötni, pusztán sokallom azt a hosszú füzért mert a kevés led is elegendő ahhoz hogy ezt a megvilágítást elérd. Már az 1 méter is szerintem sok.
Ebből kiindulva:
[vagy mégsem?] -
ViZion
félisten
válasz Postas99 #22901 üzenetére
...köszi az észrevételt
Ha olvastad, ott az Alis link. Írtam is, hogy ez van legközelebb az igényéhez. Én is hibáztam, mert 3m-re emlékeztem, de csak 2m kell neki. 2 db 1m elég ezek szerint. De lehet máshol is venni, keresni kell, csak példának dobtam a linket. Halkan írom, h 4000 Ft-ért hozza az 5m-et nálam, itthon a beltéri 1300/m volt, egy jó táphoz képest ingyen van.
Inkább a W-ot számoljátok át, adjatok tápra tippet, arra nem jutott idő -nekem is ez szokott macerás lenni.Ary, albérlet? Elfogadom, mesélik, h milyen árak vannak.
Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html
-
Postas99
senior tag
Ugye ha nem kell ennyi LED meg elég amit írtam, akkor a [HLK-5M05] 5V 5W elegendő lenne, és méretben sem nagy:
-
ViZion
félisten
válasz Zsmester89 #22900 üzenetére
Nagyobbak már főleg fémházasak, de visszaolvasva Te 4×50 cm írtál, kevesebb W-os is elég. Találd ki, h milyen sűrű led, milyen hossz és azzal kalkulálj. Wled-ben szoftveresen is lehet korlátozni a ledeket, ha esetleg nem akarod maxon járatni, de hagyj egy kis rátartást, ne 100%-on üzemeljen a táp.
[link]Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html
Új hozzászólás Aktív témák
Hirdetés
- Nintendo Switch OLED 19.0.1 Dual-Boot Cfw + 128GB MicroSD + Atmosphere 1.8.0, 3 hó garival!
- XBOX ONE S 1TB, dobozában, gyári tarozékaival és 6 hó garanciával, Bp-i üzletből!
- XBOX ONE X 1TB, makulátlan szép állapotban, 6 hó teljeskörű és 1 év SW garanciával Bp-i üzletből!!
- XBOX Series X, dobozában, gyári tartozékaival, 2025.06.28.-ig gyári garancia!! Bp-i üzletből eladó!
- GIGABYTE Nvidia Geforce GTX 1080 TI Aorus
Állásajánlatok
Cég: Axon Labs Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest