Hirdetés
Hirdetés
Talpon vagyunk, köszönjük a sok biztatást! Ha segíteni szeretnél, boldogan ajánljuk Előfizetéseinket!
-
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
-
Teasüti
nagyúr
Ez azért van, mert a loop() másodpercenként több ezerszer lefut és amennyiben egy ciklus idejénél tovább tartod nyomva a gombot (
), úgy ki-bekapcsolgat a led, aztán mikor felengeded akkor teljesen random, hogy épp melyik állapotban lesz.
Ezért szokás egy változóval figyelni a gomb állapotát és minden ciklusban összehasonlítani az előző állapottal, ami ha megegyezik a jelenlegivel, akkor nem futsz fölösleges köröket. Ha nem egyezik meg a jelenlegivel, akkor ez alkalommal lett lenyomva a gomb, mely átállítja a változót is és a következő körben már nem fog beaktiválni.
Én ezt a módszert szoktam alkalmazni gombnyomásra, vagy bármi egyéb digitális jelzésre:
//button press
if (digitalRead(button) == LOW && !pressed) {
buttonOn = !buttonOn;
pressed = true;
Serial.println("Pressed");
}
else if (digitalRead(button) == HIGH) pressed = false;Ezzel a kóddal pontosan úgy fog működni a gomb, ahogy azt az ember várná. Már ha kapcsolóként akarod, nem pedig "nyomvatartósként". Utóbbinál nyilván nem kell akkor szűrni a jelet, elég annyi, hogy a buttonOn változót nem csak átbillented, hanem konkrétan meghatározod milyen értéket vegyen fel lenyomott és felengedett állapotban.
(#4200) Tankblock
Ez nem erre van kitalálva.
A kolléga egy-egy gombnyomásra akarja ki- és bekapcsolni. A késleltetéssel a prell-t szűrőd, viszont a feladatot nem oldja meg, hisz nyomva tartásnál villogtatni fogja a ledet, ha X időközönként újra és újra átbillenti a buttonOn változót, amíg tartod a gombot.
Új hozzászólás Aktív témák
- iPhone topik
- Lakáshitel, lakásvásárlás
- exHWSW - Értünk mindenhez IS
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- PlayStation 5
- Épített vízhűtés (nem kompakt) topic
- Mibe tegyem a megtakarításaimat?
- Battlefield 6
- Fejhallgató erősítő és DAC topik
- Call of Duty: Modern Warfare III (2023)
- További aktív témák...
- Seagate BarraCuda 3.5 8TB 5400rpm 256MB SATA3 (ST8000DM004) Recertified, új, több db
- Eladó billentyűzet csomag!
- WD Red Pro 6TB (WD6003FFBX, 7200rpm, 256MB, CMR) 353 nap futásidő - garancia: 2028.02.29ig
- MacBook Pro Retina 13" M2 Chip 16GB RAM / 512 SSD / Magyar / 60 nap garancia
- GAMER SZÁMÍTÓGÉPEK GARANCIÁVAL/SZÁMLÁVAL, AKCIÓS ÁRON!!! LEGOLCSÓBB SZÁMLÁS ÁR!
- Asus ROG Strix G713QE - 17"3FHD IPS 144Hz - Ryzen 5 5600H - 8GB - 512GB - RTX 3050 Ti - Win11
- Honor MagicBook 16 Ryzen 5 5600H 16GB 512GB FHD 144Hz
- Apple iPhone 7 128GB Yettel Függő 1Év Garanciával
- HIBÁTLAN iPhone 14 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3017, 100% Akkumulátor
- Gamer Notebook! Lenovo Ideapad Gaming3! I7 10750H / GTX 1650Ti / 8GB DDR4 / 256GB SSD
Állásajánlatok
Cég: FOTC
Város: Budapest