- Izmos Corsair tápok oldalsó interfészekkel és iCUE Link kontrollerrel
- Igen komolynak látszó tapipad fortyog a Hyper boszorkánykonyháján
- Színhelyességre fókuszáló, menedzselhető monitorral jelentkezett a BenQ
- Váratlan kütyü hódít a nők körében
- Négy nagy x86-os újítással készül a jövőre az AMD és az Intel
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- 5.1, 7.1 és gamer fejhallgatók
- Épített vízhűtés (nem kompakt) topic
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- SSD kibeszélő
- Fujifilm X
- HiFi műszaki szemmel - sztereó hangrendszerek
- Vezetékes FEJhallgatók
- Hobby elektronika
- Négy nagy x86-os újítással készül a jövőre az AMD és az Intel
-
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
-
Janos250
őstag
válasz
Djstefan1848 #12634 üzenetére
Nem másra ráerőltetni akarom a véleményem, csak egy kis figyelem felhívás céljából elmondom:
Djstefan1848 kérdezi, de KFORboy problémájára is ez a legegyszerűbb megoldás:
Hogyan lehet arduinot programozni úgy, hogy 2, vagy több párhuzamos loop folyamatot futtasson egymástól függetlenül ?
Annak ellenére, hogy azt írod, hogy újonc vagy, nagyon jól látod a problémát. Több loop kellene párhuzamosan. Ez a párhuzamos szálak futtatása egymás mellett. Hogy van-e ez arduinoban? Erre még így nem lehet válaszolni, mert az arduino programozás is annyiféle, ahányféle a kontroller. A régi Atmel kontrollerekkel valószínűleg nehezebben oldható meg, de itt nem ér véget az arduino világ.
Kezdjük egyből az egyik felső szeletén:
Az ESP32 arduinojában van több lehetőség is, hogy hogyan lehet arduinot programozni úgy hogy 2, vagy több párhuzamos
"loop" folyamatot futtasson egymástól függetlenül.
Az egyik lehetőség a C++ párhuzamos szálai (thread). Ha nem várakoztatod őket egymásra, akkor nyugisan elvannak egymás mellett.
Vagy a freeRTOS taskjait használod. Ez rugalmasabb. Ezekben a delay nem igazi delay, hanem átadja a vezérlést más várakozó tasknak.
Az ESP8266-on is van valami, ami ennek a kisöccse, de már nem pontosan emlékszem, egy ideje már nem használom. Egymás mellett több PWM jellegű vezérlést kellett futtatnom, különböző, és folyamatosan változó, de elég hosszú, több szekundumos periódusidőkkel, de demo módon. Van egy lib, ami azt csinálja, hogy egy beállított idő elteltével megcsinál valamit. Előkotortam egy régi programot, ezt használja:
https://github.com/esp8266/Arduino/tree/master/libraries/Ticker
Azonkívül van ez a lehetőség is schedulerre:
https://github.com/anmaped/esp8266-scheduler
Ezt nem próbáltam. Ez elvileg Atmel procikon is biztosít
párhuzamos futtatást, nem tudom, van-e valaki, aki használta már. Persze a Ticker is az arduino schedulerét használja.
Lehet persze azt csinálni, hogy járogatunk körbe-körbe, és mindig megnézzük, hogy kell-e valakinek valamit csinálni.
Mint már többször írtam, én szinte csak ESP32-t használok. Egy UNO ezer Ft, egy ESP32 kétezer. Ennyit igazán megér a kényelem, hiszen ami
UNO-n megy, az ESP32-n is, de fordítva nem, tehát egyáltalán nincs szükségem UNO-ra. -
válasz
Djstefan1848 #12647 üzenetére
Szerintem jól látszik az ismétlődés a kódban:
servo1pos+=step1*irany1;
if(servo1pos>179)irany1=-1;
if(servo1pos<1)irany1=1;
servo1.write(servo1pos);
Ebből annyit teszel be, amennyit nem szégyellsz.
És persze a kód elején ne felejtsd el definiálni a hozzájuk tartozó változókat (servo3pos, step3 stb).
Nem tudom honnan táplálod a szervókat egyébként, de egy UNO usb-ről és Vin-ről sem bír el kettőnél több szervót (Vin-ről inkább csak egyet). Ha külső tápra kötöd a szervókat, a vezérlő jel mellett a GND-t is össze kell kötni a lappal.A delay-t és az egyes szervókhoz tartozó értékeket úgy számold ki, hogy mindenhol egész számok jöjjenek ki, különben kínos meglepetések érhetnek.
Ha ez nem lehetséges,
int
helyettfloat
változókat használj mindenhol. -
válasz
Djstefan1848 #12644 üzenetére
Mert egyáltalán nem azt csináltad, amit írtam.
int servo1pos=0;
int servo2pos=0;
ínt irany1=1;
int irany2=1;
int step1=1;
int step2=2;
void loop (){
servo1pos+=step1*irany1;
if(servo1pos>179)irany1=-1;
if(servo1pos<1)irany1=1;
servo1.write(servo1pos);
servo2pos+=step2*irany2;
if(servo2pos>179)irany2=-1;
if(servo2pos<1)irany2=1;
servo2.write(servo2pos);
delay(10);
}Javítottam.
-
válasz
Djstefan1848 #12639 üzenetére
Miért várnák be? Max érték elérésekor előjelet váltasz és azonnal indulhatsz az ellenkező irányba.
-
válasz
Djstefan1848 #12634 üzenetére
Több loop-ot futtatni nincs lehetőséged, viszont a problémát egyszerű megoldani. A servo motornál ugye sebességet nem tudsz megadni, csak fordulási szöget, a sebességet pedig az adja, hogy adott idő alatt mekkora szöget fordul. Mind 3 szervónál kiszámolod, hogy pl 10ms alatt hány fokot kell neki fordulni, és minden ciklusban annyit adsz hozzá/vonsz le a korábbi értékből. Legyen pl a leglassabb motor 1, akkor a másik kettő 1,5 és 2, akkor az első 1,8mp alatt ér egyik végállásból a másikba, a másik 1,35 és 0,9mp alatt.
Új hozzászólás Aktív témák
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Futárcégek
- Építő/felújító topik
- Rendszergazda topic
- 5.1, 7.1 és gamer fejhallgatók
- GoodSpeed: Pillangóhatás: F billentyű meghibásodása -új gamer számítógépasztal
- Épített vízhűtés (nem kompakt) topic
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Honor Magic6 Pro - kör közepén számok
- További aktív témák...
- Eladó Bambulab P1P Combo
- ASUS Dual GeForce RTX 4060 ingyenes szállítással, 2026 szeptemberig garanciás
- Alphacool Rise Flat Reservoir D5 - pumpa nélkül
- Dell Pro 14 PC 14" FHD+ IPS Ultra 7 265U 16GB 1TB NVMe IR kam gar
- Újszerű LENOVO Ideapad 3 - 15.6" Full HD IPS - Ryzen 5-5500U - 8GB - 256GB SSD - Win11 - MAGYAR
- BESZÁMÍTÁS! Acer KG251QF 24 144Hz FHD TN 1ms monitor garanciával hibátlan működéssel
- BESZÁMÍTÁS! Asus A620M R5 7600X 32GB DDR5 1TB SSD RTX 3080 10GB Zalman M4 A-Data 750W
- RÉSZLETRE , KAMATMENTES , BANKMENTES Panasonic TOUGHBOOK FZ-55 MK3 FZ-55G6601BG Notebook
- Xiaomi Redmi Note 13 Pro 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- HIBÁTLAN iPhone 11 Pro 256GB Space Grey -1 ÉV GARANCIA - Kártyafüggetlen, MS3173, 100% Akkumulátor
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest