- Macrodroid
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Redmi Buds 6 - ajándék fülesnek hallgasd a dalát
- Fotók, videók mobillal
- Milyen okostelefont vegyek?
- További kavarás a Pixel 10-ek körül
- Apple iPhone 16 Pro - rutinvizsga
- Okosóra és okoskiegészítő topik
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Samsung Galaxy A56 - megbízható középszerűség
-
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
-
bagarol
tag
válasz
lanszelot #20064 üzenetére
Na akkor utoljára
void loop() {
if (millis() - lastms > 500)
{
lastms = millis();
if (gombNyomas) /* volt valamennyi gombnyomás */
{
gombNyomas++;
gombNyomas = gombNyomas%3 ;
Serial.println(gombNyomas); /* kiírjuk hány gombnyomásnál tartasz */
}
megnyomva();
}
}Írd át a megnyomva() -ban is 0,1,2 az 1,2,3 helyett.
-
válasz
lanszelot #20064 üzenetére
Az ellenállás nélkül, de úgy raktam be
Tehát nem úgy.
Tudom, hogy sok információ, de:
1. A prellmentesítést/debouncing-ot nem hardveresen szokás megoldani, mivel szoftverből jól kezelhető a probléma.
2. Ha mégis hardverből szeretnéd, akkor az ellenállás és a kondenzátor értéke együtt fogja neked kiadni a debounce idejét. A beépített ellenállás 30kΩ-50kΩ közti random érték, amivel nem igazán lehet számolni
3. Ha szoftverből csinálod, nem kell külső felhúzó ellenállás, a beépített pont elég, hogy a lebegést megszüntesse, hiszen erre kell az ellenállás.
4. Felejtsd el a kalkulátort, csináld szoftverből, hiszen ez a bevett, kipróbált módszer.
5. A 80ms debounce és a 270ms mérési késleltetés egymástól teljesen független. Ha a fenti kódot beteszed a programba, észre fogod venni, hogy egyik nem befolyásolja a másikat. A működése egyébként az, hogy amikor prellez a gomb érintkezője, az utolsó alacsony szint után vár 80ms-ot, és csak utána reagál. Ha 80ms előtt új impulzus érkezik, akkor nem reagál rá.szerk.: Most jöttem rá, hogy rossz a kód, ez interrupt esetén nem fog működni... Ez lesz a jó:
void gombotnyom(){
if (millis() - debounce > 80){ /* eltelt 80 msec ? */
gombNyomas ++; /* növeljük 1-el a gombnyomások számát */
if (gombNyomas >3) gombNyomas = 1;
debounce = millis();
}
}
Új hozzászólás Aktív témák
- Eladó használt Gigabyte AMD Radeon HD 6750 videókártya
- ZBook Fury 15 G7 15.6" FHD IPS i7-10850H RTX 3000 32GB 512GB NVMe magyar vbill ujjlolv IR kam gar
- 7DB 60GB SSD eladó kedvező áron
- HP EliteBook 830 G8 i5-11gen//16GB//256SSD//13.3 " FHD Bang&Olufsen hang
- 0 perces RYZEN 3 laptop eredeti Win10-zel! GARANCIA + SZÁMLA (a Te nevedre)! LEGOLCSÓBB SZÁMLÁS ÁR!
- Lenovo Thinkpad P1 gen1, gen2, P52s FHD, 4K oled touch
- ÚJ Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Ezüst -(2025)- 3 Ciklus-3 év gari - MAGYAR
- AKCIÓ! ASRock Z390 i7 8700K 32GB DDR4 500GB SSD RTX 3050 8GB Zalman i3 Edge Seasonic 650W
- Samsung 840 SSD 120GB újszerű, 100/100
- Használt Intel procik - Core 2 - Dual Core
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged