Hirdetés
- Milyen okostelefont vegyek?
- Fotók, videók mobillal
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Mobil flották
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Samsung Galaxy Watch6 Classic - tekerd!
- Szerkesztett és makrofotók mobillal
- Megtartotta Európában a 7500 mAh-t az Oppo
- Samsung Galaxy Watch7 - kötelező kör
- Bemutatkozott a Poco X7 és X7 Pro
-
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
-
ecaddsell
aktív tag
Na akkor rotary encoder prell mentesítés még egyszer.
Az alapötlet innen:
https://www.best-microcontroller-projects.com/rotary-encoder.html
Én KY-040-el használom (sokat), hibázni még nem láttam. A logika megszakításban megy, a lekérdezés poll.
A speed control arról szól, hogy ha gyorsabban tekered akkor nagy ugrásokkal megy. Frekvencia beállításnál igen hasznos, máshol ahol fontos, hogy az elmozdulással legyen arányos az érték meg nem kell (ki kell kapcsolni).
Mivel ez is olyan téma, hogy jó megoldást még nem láttam (ezért voltam kénytelen egyet írni), hibásat annál többet, érdemes eltenni a linket.
Kommentelni akkor szoktam kódot, ha nagyon kell. Sorry./*
This code is free software; you can redistribute it and/or
modify it under the terms of the CC BY-NC-SA 3.0 license.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND...
*/
#define ROTE_CLK GPIO_NUM_xx
#define ROTE_DT GPIO_NUM_xx
#define ROTE_SPCTM 50000 // speed control time limit, not defined no speedctrl
volatile int32_t rotval = 0;
void IRAM_ATTR isrrot() {
volatile static uint8_t pinsta = 0x3, cwi = 0, ccwi = 0;
volatile static uint8_t cwexp[] = {0xD, 0x4, 0x2, 0xB};
volatile static uint8_t ccwexp[] = {0xE, 0x8, 0x1, 0x7};
int32_t rvchg;
#ifdef ROTE_SPCTM
volatile static uint32_t tc = 0, tm = 0;
uint32_t ctm, td;
#endif
pinsta = (pinsta << 2) & 0xf;
if (digitalRead(ROTE_DT)) pinsta |= 0x2;
if (digitalRead(ROTE_CLK)) pinsta |= 0x1;
if (pinsta == cwexp[cwi]) cwi++;
else if (pinsta == ccwexp[ccwi]) ccwi++;
if (cwi == 0x4 || ccwi == 0x4)
{
if (cwi == 4) rvchg = 1;
else rvchg = -1;
pinsta = 0x3; cwi = 0; ccwi = 0;
#ifdef ROTE_SPCTM
ctm = micros();
td = ctm - tm;
tm = ctm;
if (td < ROTE_SPCTM / 2) rvchg *= 7;
else if (td < (ROTE_SPCTM * 2) / 3) rvchg *= 4;
else if (td < ROTE_SPCTM) rvchg *= 2;
#endif
rotval += rvchg;
}
} // isrrot
int16_t getrotv() {
static int32_t lval = 0;
int32_t cval = rotval;
int16_t rotc = 0;
if (lval != cval) {
rotc = cval - lval;
lval = cval;
}
return (rotc);
} // getrotv
void inirotein(gpio_num_t clk, gpio_num_t dt) {
pinMode(clk, INPUT);
pinMode(dt, INPUT);
attachInterrupt(digitalPinToInterrupt(clk), isrrot, CHANGE);
attachInterrupt(digitalPinToInterrupt(dt), isrrot, CHANGE);
} // inirotein
...
inirotein(ROTE_CLK, ROTE_DT);
...
Új hozzászólás Aktív témák
- Lalikiraly: Astra kalandok @ Negyedik rész
- Óra topik
- Építő/felújító topik
- Futás, futópályák
- Projektor topic
- Automata kávégépek
- Milyen TV-t vegyek?
- Milyen egeret válasszak?
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Kertészet, mezőgazdaság topik
- További aktív témák...
- HP Pavilion 15-bc512nh (Core i7-9750H / 24GB DDR4 / 512GB / GTX1650 4GB / Win11) ÁFA, Garancia
- Huawei SUN-2000 6KTL-L1 napalem inverter eladó
- iPhone 16 PRO 256GB 3 hetes!! fehér titán MEDIAMARKT számla! 2028 október 24-ig Apple garancia!
- iPhone 14 PRO 128GB Vadonatúj gyári Apple 100% os akkumlátor! Gyönyörű! Fulldoboz!
- HP OMEN X 24' TN 240Hz
- Dell D6000 univerzális dokkoló USB-C/ USB-A, DisplayLink & Dell WD15 (K17A) USB-C + 130-180W töltő
- Nintendo Switch Oled // Számal // Garancia //
- Új és régi konzolok Okosítása és Szoftveres szintű javítása - RÉSZLETEK A LEÍRÁSBAN
- 3db apró szépséghibás DELL WD19S dokkolók (csak kábel résznél) (ELKELT)
- Bomba ár! Lenovo ThinkPad T460s - i5-6GEN I 8GB I 128GB SSD I 14" FHD I Cam I W10 I Garancia!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest
ekkold

