Hirdetés
- Olyan lesz a Térkép, mint a segítőkész haver az anyósülésen
- Alaposan kitolhatod az Steam Deck üzemidejét egy új funkcióval
- Lassú lett a PC? Micsoda meglepetés: egy Windows frissítés lehet a ludas
- PlayStation 5 nélkül kínál PlayStation 5 játékokat a Sony
- Bekrepáltak a régebbi Forzák az NVIDIA új drivereivel
- Szünetmentes tápegységek (UPS)
- Apple asztali gépek
- Sony MILC fényképezőgépcsalád
- Milyen TV-t vegyek?
- Fejhallgató erősítő és DAC topik
- Milyen videókártyát?
- Kormányok / autós szimulátorok topikja
- VR topik (Oculus Rift, stb.)
- Ne várj sokat a vásárlással: drágulás a láthatáron
- Intel Core i7 9xx "Bloomfield" (LGA 1366)
-
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
-
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
- Kerékpárosok, bringások ide!
- Kuponkunyeráló
- Suzuki topik
- Szünetmentes tápegységek (UPS)
- Apple asztali gépek
- Sony MILC fényképezőgépcsalád
- Olyan lesz a Google Térkép, mint a segítőkész haver az anyósülésen
- Bemutatkozott a Poco X7 és X7 Pro
- Milyen TV-t vegyek?
- Okos Otthon / Smart Home
- További aktív témák...
- Apple iPhone 17 Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- iPhone 14 Pro Max 128GB Deep Purple Gyári független
- PC bontás - Thermaltake ház, Fsp 650W, GIGYBYTE AB350M, AMD RYZEN 5 1600x, 16GB DDR4 3000, GTX 1080
- TMR, HALL, Dualsense, Xbox kontrollerek felújítása
- TMR, HALL, Dualsense, Xbox kontrollerek felújítása
- Újabb 20 db Lenovo ThinkPad X1 Yoga G6 (6th Gen) - i7-1185G7, 32GB, 512GB SSD, multitouch + TOLL
- Eladó szép állapotban levő Samsung Galaxy A12 4/64GB kék / 12 hónap jótállás
- Bomba ár! Lenovo X1 Yoga 1st - i5-6G I 8GB I 512SSD I 14" FHD Touch I HDMI I W11 I CAM I Garancia
- HP Z-Book G3 ! Csere-Beszámítás! I7 6820HQ / Nvidia Quadro M1000M 2GB / 16Gb DDR4 ! Új Akksi!
- Dell XPS 13 9310 i7-1185G7 16GB 512GB 13" FHD+ 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
ekkold

