-
Fototrend
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
-
válasz
tonermagus #15428 üzenetére
Nem egészen, ez pont arra nem jó, ami az alap felvetés volt, t.i. a rövidebb úton forduljon a cél felé.
-
válasz
tonermagus #15422 üzenetére
1. neem, ez csak egy pszeudo-kód, csak a logika miatt írtam, de amúgy ha az ékezeteket kiveszed, szintaktikailag helyes. De ez csak az irányt adja neked vissza, a fokot nem.
-
válasz
tonermagus #15420 üzenetére
Szívesen! A PID-be ásd bele magad, mert a robot vezérléséhez egyébként is jól jöhet. Van hozzá arduino library is, bár én még nem használtam.
-
válasz
tonermagus #15418 üzenetére
cél - saját_irány: a különbség -359 - +359 közt
+360: az eredmény 1 - 718 közé kerül
% 360: modulus, az eredmény és 360 osztási maradéka -> az eredmény garantáltan 0 - 359 között lesz
? : feltételes operátor: az if-then-else szerkezet rövidített formája.Valahogy lehet skalazni is?
Lehet, te a PID szabályozást keresed, ha még nem ismered, ismerkedj meg vele! Videók: [link], [link]
-
válasz
tonermagus #15415 üzenetére
Jónak tűnik a logika, azzal a kiegészítéssel, hogy a második esetben (amikor az irány >180°) a fordulás iránya is megfordul.
Ennél van egyszerűbb megoldás, pl:fordulás_iránya=((cél - saját_irány + 360) % 360)>180?balra:jobbra
-
Vótmá'?
Új Arduino lapka: Nano RP2040 Connect
Komoly cucc, wifi, mikrofon és IMU is van rajta. Meg az ára is elég komoly. -
válasz
tonermagus #15381 üzenetére
Csak azt tudom mondani, hogy attól, hogy csak két tengelyt használsz, még mind a hármat kalibrálni kellene, mert számoláskor lehet, hogy a nem kalibrált harmadik tengelyt is használja és az félreviszi az egészet.
Úgy próbálnám, ahogy a telefonok iránytűjét szokás kalibrálni: nagy fektetett 8-as alakot leírni vele a levegőben.
-
válasz
Janos250 #15364 üzenetére
Az a baj, hogy blokkon kívül nem lehet kódot végrehajtani, pl. példányosítani.
Eddig ezt úgy csináltam, hogy összegyűjtöttem őket egy
void init(){} -be,
és azt a setupban meghívtam.
Hát nem lehet azt az init függvényt a könyvtár részévé tenni? Nem igazán látom a problémát.A másik megoldás, ha az arduino ide "gyári" main() függvényét módosítod, és beleteszed az init függvényt.
-
válasz
valkesz93 #15329 üzenetére
A napelemekhez nem értek egyáltalán, de a linkelt modulok stepdown modulok, 12,6V töltő feszültséghez legalább 14,2V feszültséget igényelnek. Azt írtad, hogy 12V a napelem, tehát elvileg arról nem fog beindulni a töltés, kivéve, ha a 12V csak névleges feszültség, és képes 14V leadására. Ellenkező esetben stepup konverterre is szükség lehet.
Arra figyelj, hogy mivel állandó töltés alatt lesznek a cellák, érdemes a töltő feszültséget a 12,6V alá belőni, pl. 12,3 vagy akár 12V-ra, a lítium cellák élettartama meg fog tőle hosszabbodni.
A BMS szerintem nem fog zavart okozni. -
válasz
vegyszer #15320 üzenetére
Nem arról volt szó, hogy ezek az ESP-k 5V kompatibilis IO jeleket kezelnek?
Nem az ESP-k, csak az ESP8266, hivatalosan a gyártó által megerősítve. Az ESP32 kimenetei már nem 5V toleránsak. Az ESP8266 kimeneteit snapback áramkör védi, azt hiszem 6V-ig bírja, az ESP32 egyszerű dióda, kb. 3.8V fölött megsül rajta a flash chip.
Akkor ezt vajon miért tette???
Azért, mert valószínűleg megszólták miatta.
Mondjuk
egy sorozatgyártásba kerülő eszköz tervezésénél nem illik erre a toleranciára építeni. Egy házi barkács eszköznél simán elmegy, azért javasoltam, könnyítésként.
Ha mindenképp szeretnél szintillesztést, egy egyszerű feszültségosztó is megteszi.
A második verzió nem véletlenül ESP32 kompatibilis verzió? -
Mit is fog ez pontosan csinálni?
A bekötés jónak tűnik, csak a logikát meg kell majd fordítani a programban, a 9V elem magas jelszintje az optón keresztül alacsonyra húzza a D5 lábat és viszont.
Még annyit, hogy a most 5V és D5 között lévő felhúzó ellenállást inkább a 3.3V-ra kösd, mivel a lap 3.3V-os, és itt gond nélkül megoldható a szintillesztés az opto-val. -
válasz
vargalex #15307 üzenetére
Azt írtad, hogy feltöltötted a kódot és nálad létrejön az AP, ezek szerint lehet, hogy nála valamelyik könyvtár nem stimmel. 🤔
Felmerül a kérdés, hogy Te régebbi könyvtárakat használsz, esetleg régebbi IDE-t, vagy mindent frissítve. Láttam már olyat, hogy egy régebbi kód csak régebbi IDE-ben, vagy egy library régebbi verziójával fordult csak le. -
válasz
vegyszer #15283 üzenetére
A Vin lesz az 5V, a képen nem látok Vusb-t, de ha nálad úgy van, akkor az lesz.
A lábak szabványos 0.1" távolságra vannak, ami kompatibilis a breadboardokkal, próbanyákokkal is. Esetleg egy ilyenre fel tudod forrasztani direktben is, vagy veszel hozzá tüskesor aljzatot, és abba tenni, hogy javítható legyen. -
válasz
vegyszer #15263 üzenetére
Szia! Üdv itt. 👍
Alig találtam meg a kérdést a hosszú szövegben."Egyáltalán jól értem, hogy az a kód, ami egy únón elfut, egy ilyen ESP32 vagy hasonlón is elmegy egy minimális fordítási beállítás után?"
Igen, az UNO-ra megírt kódok jellemzően változtatás nélkül fordíthatóak a többi lapra. A legtöbb általános arduino kód elfut az összes arduino-ba illesztett lapon, ha valami mégsem, az valamilyen alacsony szintű módon megírt, vagy hardver-specifikus kód, pl. megszakítás vagy flash tároló használat.
Ha wifit szeretnél használni, akkor a nano board-ról lebeszélnélek, mert úgyis kell hozzá egy esp, de akkor már a programot is érdemes azon futtatni.
Ha az encoderek jele 5V-os, akkor ESP8266 lesz a te embered, mert ugyan a lap maga 3,3V-os, de az ESP32-vel ellentétben a kimenetei 5V toleránsak, így szintillesztés nélkül rá tudod kötni az encodereket.
-
A hiba le van írva:
Többszörös könyvtárak találhatók ehhez: "Joystick.h"
Használt: C:\Users\abrah\OneDrive\Dokumentumok\Arduino\libraries\AxisJoystick
Nem használt: C:\Users\abrah\OneDrive\Dokumentumok\Arduino\libraries\arduino_359517Az egyik könyvtárat szedd ki, csak a jó maradjon.
-
Akkor azok 360 fokos szervók lesznek! Azokat nem fogod tudni normál szervók helyett használni, mert a benne lévő potméter le van vágva a tengelyről. Ezeket normál DC motorok helyett szokták használni, mert helytakarékos, minden egyben van, motor, áttétel, nem kell hozzá külön driver(H-híd), mert benne van a vezérlő panel, meg persze 1db pin elég a vezérléshez. A vezérlése úgy történik, hogy 90° az álló helyzet, illetve a benne lévő potméter helyzetétől függően ez lehet +- bármennyi. A poti állításával lehet utólag kalibrálni, vagy programból lekezelni.
Mivel az sg90 analóg szervó, valószínűleg álló helyzetében is fog nyöszörögni, mert nem lehet annyira pontosan beállítani a potmétert benne, hogy az elektronika teljesen egyensúlyban legyen. Cserébe nagyon egyszerűen lehet szinte fokozatmentesen vezérelni a sebességét mindkét irányba és jó nagy a nyomatéka.
Ha nincs rá szükséged, és szívesen átveszem tőled. -
-
Tudna valaki segíteni?
Kellene nekem egy
- semiduplex
- 5V -> 3.3V szintillesztéses
- soros kapcsolatot létrehozni.A kapcsolás úgy néz ki, hogy a master oldalon 5V logic van, TX és RX kimenet, a slave irányába 1 vezeték, a slave pedig 3.3V logikát igényel. Ez lenne vázlatosan:
A level shift részére pedig ezt a kapcsolást találtam:
Hogyan kellene ezt a kettőt egy kapcsolásba összekombinálni, a lehető legkevesebb alkatrészszámmal?
Elvileg egyszerű feszültségosztóval is meg lehetne csinálni, de szeretném a lehető legstabilabb megoldást, a lehető legkisebb méretben megvalósítani (pl soklábú IC-k nélkül
).
A TX - RX irányban nem probléma a visszhang.A google nem volt a barátom.
-
Ha nem mondom meg a shift registernek (nem töltöm fel 0-val ami kikapcsolja a kimeneteket), akkor hogy tudom kikapcsolni az adott szegmenseket?
Hát úgy, hogy nem kapcsolod be.
Minden körben egymás után kapcsolgatod a szegmenseket. Amikor egy szegmenst vezérelsz, a másik 3-at lekapcsolod! Tehát amikor a következőt bekapcsolnád, egyszerűen csak nem kapcsolod be.
Ezzel:{{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1}
minden számjegy minden szegmense egyszerre világítana (8888). -
Ez miért ennyi?
int digits1[11][16] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //OFF
Miért nemint digits1[11][16] = {{1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0}, //OFF
vagyint digits1[11][16] = {{1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, //OFF
?
A többi 3-ra is vonatkozik.
Végülis a futás szempontjából nem fontos, csak zavarja az OCD-met.Egyáltalán miért van szükség az off kódot kiíratni, egyszerűen csak ugorni kéne azt a szegmenst, ez egyszerű erőforráspazarlás.
-
válasz
its_grandpa #15203 üzenetére
Miért ellenjavallt? Ő esp32-re írta a kódot, ahol kimondottan elvárt a delay-ek használata, tekintve, hogy ott adja át a vezérlés a többi szálnak, pl. wifi.
-
válasz
Janos250 #15192 üzenetére
Tőlem is megy a lájk! 👍
No, ezt akkor ha időm engedi, én is kipróbálom, van ugyanis egy rfid olvasóm, vagy 3 éve rendeltem, de életjelet még nem bírtam belőle kicsikarni, pedig rajta van a "QC ok" vagy hasonló matrica, és nem hiszem, hogy én öltem volna meg, talán az van nálam is, ami nálad.
Apropó: mi is volt a gond, megosztanád?
-
válasz
ekkold #15190 üzenetére
Ez a piezo-s lifehack nagyon eredeti ötlet, megjegyzem későbbre!
A hall szenzorhoz annyit tennék hozzá, hogy az esp32-ben beépített hall szenzor van (hogy milyen célból, arról fogalmam sincs), ha feltétel a vezetéknélküli működés, akkor egy ilyennel egymagában is meg lehet oldani.
-
válasz
gyapo11 #15174 üzenetére
rémálom használni őket a kapacitív kijelzőhöz szokott ujjammal
Dehogy maradtam, volt PDA-m, és az jó is volt akkor és ott.
De 10 éve csak kapacitív kijelző volt a kezemben, az ujjam ahhoz van szokva, hogy finoman simogatni kell az üveget, nem körömmel benyomni egy puha műanyag lapot. Egy szauna kezelőfelületénél pedig eleve nem is lehet elvárás a stylus használata.
Bár kétségtelen előnye a rezisztív kijelzőnek, hogy nedves ujjal talán jobban kezelhető.
-
válasz
gyapo11 #15165 üzenetére
Ezen alapul az én javaslatom is, de ehhez elég egyetlen bit is. Ha például csak pozitív egész számokat szeretne kiírni, akkor a legfelső bit lesz a marker. Bekapcsolás után végig kell olvasni az adatokat. Ha az első adat negatív (magas marker bit), megkeresem az első olyan adatot, ami pozitív (alacsony marker bit), és azt írom felül. Ha az egész EEPROM végig csak pozitív, akkor kezdem elölről, negatív számmal. Első használatnál, feltételezve, hogy csupa 0 van az EEPROM-ban, az első kiírt adat negatív szám lesz. Ha megtelt, akkor jönnek a pozitív számok. Nem tudom mennyire sikerült érthetően leírnom.
A pozitív-negatív átváltás persze nem közvetlenül értendő, mivel a 0-nak nincs negatív alakja, ezért egy 0 elrontaná az egész rendszert. Emiatt kettes komplemens helyett egyes komplemens alakot kell használni, vagy csak egyszerűen állítgatni a legfelső bitet.Ha több adatot kell kiirni, akkor adatblokkokban kell gondolkodni, egy blokk több változót fog tartalmazni, a marker a blokk legelső byte-jának legfelső bitje, ha megoldható, hogy olyan adat kerüljön oda, aminek az értéke sosem haladja meg a 127-et. Ha ez nem megoldható, akkor egy byte-ot fel kell áldozni markernek.
-
válasz
Tomika86 #15162 üzenetére
A PLC-ről sajnos csak annyit tudok, hogy létezik.
csak szeretem megérteni amit csinálok
Teljesen jogos igény.Wear leveling az lenne mint ssd esetében, hogy összevissza rakja az adatokat?
Nem összevissza, hanem sorban, egymás után, mivel itt mindig szekvenciálisan írsz, és nem kell random törölni adatot a sorból.
-
válasz
Tomika86 #15159 üzenetére
A double az is lebegőpontos érték, ráadásul mega board-on ugyanúgy 32bites, mint a float. Szerintem te az int vagy long típust keresed.
Mi az, hogy nem működik?
Légyszi, ha kódot illesztesz be, válts át a régi szerkesztőre (a szövegbox fölött jobbra), mert ott olvasható lesz a kód, az új szerkesztő szétbarmolja az egészet...
-
válasz
Tomika86 #15157 üzenetére
Nem kell a mutatókkal törődnöd, ez a függvény belügye.
Én a mai napig nem igazán értem a mutatókat, mindig elolvasom, megértem, aztán két nap, és totál elfelejtem az egészet.Ha átállsz erre a megoldásra, és eldőlt, hogy milyen adatokat szeretnél menteni még az EEPROM-ba, akkor javaslom, hogy implementálj némi wear levelinget is. Ha aktuális, és érdekel, akkor leírom a módját.
-
válasz
Tomika86 #15154 üzenetére
Használd azt a két függvényt, amit korábban javasoltam. Az mindig 4byte-ot fog írni.
Ha külön 7805 lesz a kijelzőnek, az úgy jó, csak ne felejts el egy diódát tenni a pufferkondi elé, hogy a többi fogyasztó ne szívja le idő előtt a benne tárolt kraftot a másik irányból.
-
válasz
Tomika86 #15150 üzenetére
Ez jó kis feladat, kétféle megoldási javaslatom van, külön-külön vagy együtt is alkalmazható:
1. kikapcsoláskor szeretnél menteni, ezt úgy lehet megoldani, ha a tápfeszültség elvétele esetén pár másodpercig még működni tud. Ezt vagy egy akkumulátorral, vagy egy szuperkondenzátorral tudod megoldani. Az egyik pinnel figyeled a tápfeszültséget, mikor megszűnik, azonnal mented az adatokat.
2. wear levelinget alkalmazol az EEPROM-ba írásnál, erre van készen library, de egy nagyon egyszerű módszerrel házilag is meg lehet oldani. Ezek után tetszőleges gyakorisággal mented a menteni való adatokat, mert néhányszor 10 byte-nyi adatot 64kbyte területre kb. az idők végezetéig el lehet osztani. -
válasz
Tomika86 #15147 üzenetére
Most jöttem rá, hogy a kód az egész "hatalmas" EEPROM-ba csak ugyanarra az egyetlen címre írja ki az értéket, aztán azt írja felül újra és újra. Így végülis mindegy, hogy milyen hosszú a szám. Azt hittem, hogy folyamatosan írja egymás után, log-ba.
Megjegyzem, hogy ez a módszer elég gyorsan el fogja használni azt az egy memóriacellát a folyamatos írással. Ha a cella élettartama során 1000000 írási műveletet bír elviselni, 10ms-onkénti írással durván 3 óra alatt ez be is fog következni. -
válasz
Tomika86 #15146 üzenetére
Ha esetleg meggondolnád magad, ezzel az erről az oldalról vett példával így is ki lehetne íratni a float értékeket:
void EEPROM_writeFloat(int ee, float value)
{
byte* p = (byte*)(void*)&value;
for (int i = 0; i < sizeof(value); i++)
writeEEPROM(xAddr, ee++, *p++);
}
float EEPROM_readFloat(int ee)
{
float value = 0.0;
byte* p = (byte*)(void*)&value;
for (int i = 0; i < sizeof(value); i++)
*p++ = readEEPROM(xAddr,ee++);
return value;
} -
válasz
Tomika86 #15142 üzenetére
Én azt nem értem, hogy
1. minek astrcat( chrFloat, buffer); //
a kódba, felesleges művelet.
2. minek kell egyáltalán az EEPROM-ba kiírás előtt a float-ot string-gé alakítani és úgy kiírni? A float minden esetben 4 byte, nem kell gondolkodni, hogy mennyit kell visszaolvasni, ráadásul ha két számjegy+tizedespont+két tizedes esetén már kevesebb írásmennyiséggel is jár (4byte vs. 5byte). -
válasz
Tomika86 #15129 üzenetére
Az árkülönbségből ítélve nagyjából ugyanez lehet. 5500+haszon+magyar áfa.
A tápot illetően szerintem tehetsz vele egy próbát, esetleg a regulátorra tegyél hűtőbordát, ha érezhetően melegszik.
Ha mégis megsülne: semmit nem veszítesz, úgyis kívülről akartad adni neki az 5V-ot. -
válasz
stopperos #15123 üzenetére
Ez csak az eredeti arduino lapokra igaz, a kínai másolatokra nem! Korábban volt róla szó, hogy a gagyibb lapokon elég gyenge a regulátor, 9V tápfeszültség fölött hajlamos megsülni. Egy kínai UNO lapot én is megsütöttem így (a uC maga működik azóta is, USB-ről és 5V tápról, csak a regulátor sült meg rajta).
-
válasz
gyapo11 #15100 üzenetére
A kondenzátor viszont annál kisebb ellenállású minél gyorsabb az impulzus, szóval mindenképpen jobb mint a zéner. Együtt a kettő jó csapat.
Azon gondolkodom, hogy ha egy zener és egy kondenzátor párhuzamosan van kötve, mindenképpen lesz olyan tüske, ami átjut: a rövid impulzusokat a kondenzátor elvezeti, de ezalatt a feszültség sem emelkedik, tehát a zenerben a lavina effektus így is csak akkor kezd el kialakulni, amikor már a kondenzátor fel van töltve.
-
Elkezdtem utánanézni ennek a TTGO platformnak, és mit találtam?!?
Arduino okosóra
Eddig azt gondoltam, hogy sosem lesz okosórám, de kezdem meggondolni magam.Ez nagyon menő!
-
Hát azt bizony csak úgy, ha szerzel valahonnan ékezetes karakterkészletet a neked tetsző méretben, és lecseréled vele a Orbitron_Medium_20.h fájlban lévőt. Vagy ezt szerkeszted. Bitmap alapú font, változó szélességű karakterekkel, kíváncsi lennék, hogy néz ki működés közben. Meg lehet ezt nézni valahol, vagy csinálnál róla egy képet?
-
válasz
Tomika86 #15085 üzenetére
Ja, nem, egyáltalán nem hülyeség, így szokás csinálni, csak én valamiért azt hittem, hogy az 5V tápfeszültséget akarod így előállítani.
A zenerrel együtt jó megoldás, de ahogy a kolléga írta, a MΩ túl sok, nagyon zavarérzékeny lesz, szerintem is elég oda egy 10kΩ+20kΩ osztó. -
válasz
Janos250 #15068 üzenetére
Nem értek egyet, több okból sem.
- A nyelv fejlődik, változik, akármennyire is szeretnék a nyelvészek ennek az ellenkezőjét.A szavak gyakran olyan jelentésváltozáson mennek át, hogy teljesen megváltozik az eredeti értelmük. Most jobb példa hirtelen nem jut eszembe, mint a cselló, ami eredetileg egy kicsinyítő képző az olasz nyelvben, magyarul meg egy hangszer neve lett.
- A brutális semmilyen szlengben nem jelent jót, ahogyan az "egetrengető" vagy az "észbontó" sem. Egyszerű jelző, de nem a dolog jósága az, ami brutális, hanem a rád gyakorolt hatása.
Lőrincze / Grétsy csókoltat. -
Áhá, értem, köszönöm a részletes leírást!
Mindig tanul az ember.Tehát a fenti célra feleslegesen nagy tudású ez a kijelző, bár úgy látom, hogy 7"-os méretben nemigen van "buta" kijelző, vagy ez van, vagy HDMI, vagy telefonba/tabletbe való nemtommilyen csatolós.
Én a magam részéről mindig a "bare minimum" hardverre törekszem, tehát mi az a legkisebb hardver, ami el tudja végezni a feladatot. Rosszul érezném magam, ha olyan alkatrészt használnék fel egy projektben, ami nemcsak drága, de az 1%-át használom ki annak, amire képes.
-
Én eddig nem tudtam, hogy mi ez a HMI, szóval ha jól értem, ez egy intelligens kijelző, aminek soros porton lehet azt mondani, hogy "rajzolj egy gauge-ot" és emiatt kerül 6x többe, mint egy mezei SPI vagy i²c kijelző?
Biztos kényelmes használni, de én biztos egy olcsó i²c oled kijelzőt használnék ilyen mérési célra. -
válasz
Tomika86 #15049 üzenetére
Nem azért kérdeztem, mert tudok jobbat, főleg úgy nem, hogy nem írtad le, hogy mi volt a választás szempontja. Én eddig kétszer vettem LCD kijelzőt, raspberry-hez. A legdrágább és legrosszabb vétel egy eredeti PiTFT kijelző volt, azt 8e Ft-ért vettem, szintén 2.8", abból Octoprint rig lett. A másikból gameboy emulátort csináltam, az egy 3"-os érintőkijelző volt, 640x480 60Hz, postával együtt 6ezer Ft-ért. Egy 2.8"-osat kaptam ajándékba, ami UNO-hoz való, szintén érintőkijelző, 320x240, Kedei típusú, ebből csináltam egy oszcilloszkópot, ez konkrétan ingyen volt.
7"-ost nem vettem még, de ha vennék, a Kedei márka környékén néznék szét.
Új hozzászólás Aktív témák
- Tőzsde és gazdaság
- Xbox Series X|S
- Egyéves Gemini AI Pro a Google-től a magyar egyetemistáknak is
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen billentyűzetet vegyek?
- A Chrome egyeduralmára tör a ChatGPT böngészője
- Elemlámpa, zseblámpa
- Építő/felújító topik
- Autós topik
- iPhone topik
- További aktív témák...
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest