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
-
válasz
lanszelot
#20283
üzenetére
Nem tudom milyen enkódered van, de kénytelen leszel vagy interruptot használni, vagy ütemezőt, ahogy Aryes is írta.
Ha az a tipik pozícióba billenős kattogós enkódered van, akkor hiába forgatod, mert annak a clock lába mindig ugyanaz a stabil állapotban.
Mivel a kódod csak két villogás között mintavételez, ezért mindig csak az az állapot számít, ami a kék led kialvása + keses utáni DE a piros felvillanása előtti időben, azaz pár mikroszekundumban áll fenn. Tehát neked akkor kellene a CLK egy pillanatra más legyen. De ezt nagyon nehéz elkapni, leginkább lehetetlen, ezért a kódod folyamat azt látja, hogy a CLK változatlan, így nem tesz semmit a keses értékével.Interrupttal azt tudod csinálni, hogy a uC figyeli az inputot, és amint az változik, végrehajt egy kódot (esetedben a loop
/*read current state of inputCLK*/)Ennek köszönhetően a kód nem marad le a váltásokról, mert az interrupt szépen kierőszakolja a futást minden váltáskor.
Ütemezéssel pedig maradhat így a kódod, csak a delay-eket törlöd, és helyettesíted if() feltételekkel. Esetedben 4 ütemre van szükség: redOn, redOff, blueOn, blueOff. A kód elején meghatározod, hogy a piros először mondjuk a futás első másodpercében kell felvillanjon (redOn = 1000). Akkor kialudnia redOff = redOn+keses; időben kell. A blueOn ideje redOff+keses. blueOff = blueOn+keses. Ezután csak kitalálod if használatával, hogy a futásidő millis() éppen melyik ütemen belül van, és annak az ütemnek a feladatát hajtja végre. Mikor az utolsó ütemből is kilépsz, újra kell számolni az ütemek új időpontját. Így a loop nagyon gyorsan ismétlődik, és van esély, hogy nem marad le a futásod az enkóder mozgásáról. Igen, arra is van esély, hogy lemarad, főleg attól függően, hogy mennyire bonyolult marad egy-egy ütem.
Új hozzászólás Aktív témák
- World of Tanks - OFF topic
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Bekerül az Apple Pay és Google Pay a Budapest GO alkalmazásba
- EA Sports WRC '23
- Autós topik
- Battlefield 6
- Kínai és egyéb olcsó órák topikja
- Milyen RAM-ot vegyek?
- Okosóra és okoskiegészítő topik
- Sony MILC fényképezőgépcsalád
- További aktív témák...
- Gamer PC-Számítógép! Csere-Beszámítás! R5 3600 / RX 5700XT / 16GB DDR4 / 256 SSD + 2TB HDD
- Magyar menüs Delonghi Magnifica S cappuccino automata kávéfőző tejtartállyal
- SAMSUNG PM9E1 "9100 PRO" 2 TB M.2 NVME PCI-E 5.0 x4 - Új - 14.000-12.500 MBs - Eladó!
- Forza Horizon Xbox Limited Edition Controller Új! Bontatlan!!
- GAINWARD GeForce RTX 4070 Ghost 12GB GARANCIÁLIS, DOBOZZAL, SZÁMLÁVAL
- Xiaomi Redmi Note 13 8/256GB / 12 hónap jótállással!
- Eladó Samsung Galaxy S22 8/128GB / 12 hó jótállás
- Telefon felvásárlás!! Xiaomi Redmi Note 12, Xiaomi Redmi Note 12 Pro, Xiaomi Redmi Note 12 Pro+
- GYÖNYÖRŰ iPhone 14 Pro Max 128GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen, MS2998, 100% Akksi
- Dell latitude, precision, xps, magyar világítós billentyűzetek eladóak
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
ekkold

