Hirdetés
-
Mobilarena
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
-
Miért fontos, hogy a gombot röviden vagy hosszan nyomod meg? A leírásod szerint semmi különbség nincs ha csak röviden egyszer lenyomod akkor indul, még egyszer meg nyomod akkor meg leáll. Így programozás szempontból is egyszerűbb lenne.
Itt egy egyszerű példa interruptra.
Loop-ba belerakod a led és a motor vezérlő részt. interrupt függvénybe csak 1 változó értékét változtatod. 1x lenyomod a gombot belép példa szerint void blink, változó állít "HIGH" mondjuk, loop-ban if turn on == 1 akkor motor forog, led bekapcsol.
Ha megint lenyomod akkor meg változó void blink-en bleül LOW-ra áll és leáll a motor, led kikapcsol. -
Teasüti
nagyúr
Átírtam neked a programod.
Lefuttatni nem nyilván nem tudom, de ránézésre kb jónak tűnik.
Elvileg bekapcsolásra oda-vissza jár a léptetőmotor (feltéve ha ez a része jól működött az eredeti programnak) és felvillantja a led-et a mozgás végén. Majd két másodperc múlva újra.
Hosszú gombnyomásra megáll és két másodperces villogtatásba kezd, majd 1 perc elteltével újraindul a motor.Amúgy a Stepper.h könyvtár blokkolja a program futtatást, amíg mozgásban van a motor. Vagyis addig nem ugrik a következő sorra, amíg be nem fejezi a mozgást. Ez problémás lehet. Pl. nem tudom ez a könyvtár milyen hardvert használ (Timer, Int, stb.). Ha kikapcsolja a megszakításokat, akkor a millis() nem fog számlálni a motor léptetése közben.
-
Teasüti
nagyúr
Ez így jelenleg halva született. Ennyi delay() mellett nem lehet időt számolni. Ezzel így max billenőkapcsolót tudnál használni, azt nem kell időzíteni. Ha gombnyomást akarsz mérni, ahhoz másodpercenként többször ellenőrizni kell a gombot, vagyis gyorsnak kell lennie a programnak. Ennyi delay()-el 4-5 másodperc legalább, mire egyszer lefut a loop(). A lineáris gondolkodás még hiányzik, de majd kialakul ha megérted, hogy nem muszáj minden egyes ciklusban végigmenni az összes parancson.

Ezért használunk feltételeket, hogy szabadon ki-be ugrálhassunk az elágazásokba. Így lehet, hogy egy If parancs csak minden századik ciklusban fut le. Vagy ezredik. Vagy százezredik... Ha millis()-el időzítesz, akkor eltelt időt számolsz milliszekundumokban. Ezt feltételben vizsgálod, hogy igaz-e a reláció:if (millis() > temp + 1000) { }. Ideális esetben nincs megakasztva a program ennyi delay-el és mire teljesül pl. az 1000 ms várakozási idő, addigra akár sokezerszer ismétlődhet a loop(). Futhat akár üresen, ha egyik elágazásba (feltételbe) se ugrik bele, vagy csinálhat addig akármi mást is. -
Tankblock
aktív tag
Új hozzászólás Aktív témák
- Gitáros topic
- Autós topik
- sziku69: Szólánc.
- Óvodások homokozója
- Xiaomi Mi 9 - egy híján
- Mesterséges intelligencia topik
- World of Tanks - MMO
- Milyen notebookot vegyek?
- Fizetős szoftverek ingyen vagy kedvezményesen
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- További aktív témák...
- Bontatlan DJI OSMO Mobile 6 - ez elbírja a 16 pro max-ot!
- Telefon felvásárlás!! Samsung Galaxy S23/Samsung Galaxy S23+/Samsung Galaxy S23 Ultra
- Egyedi ékszerdobozka
- BESZÁMÍTÁS! 10TB WD Purple Pro SATA HDD meghajtó garanciával hibátlan működéssel
- HP ZBook Studio x360 Gen5 Intel Xeon E-2176M - Garancia - Villám akció 11.21. Péntekig!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

ekkold

