Hirdetés
- Luck Dragon: Asszociációs játék. :)
- GoodSpeed: A megfelelő matrac kiválasztása egy hosszú folyamat végén!
- MasterDeeJay: Harc a DDR5 árak ellen, avagy mivel lehet ezt átvészelni ha mégis kell
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Magga: PLEX: multimédia az egész lakásban
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- hcl: Poco F2 Pro facepalm
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Sapphi: StremHU | Source – Self-hostolható Stremio addon magyar trackerekhez
-
LOGOUT
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
-
Imy
veterán
Köszi, kipróbáltam. A fordító hibaüzenetet dob, és a bekötés honnan derül ki?
Ez a jelenlegi program, de lehet valamit rosszul csináltam:
#define ROTE_CLK GPIO_NUM_xx#define ROTE_DT GPIO_NUM_xx#define ROTE_SPCTM 50000 // speed control time limit, not defined no speedctrlvolatile 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_SPCTMvolatile static uint32_t tc = 0, tm = 0;uint32_t ctm, td;#endifpinsta = (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_SPCTMctm = 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;#endifrotval += rvchg;}} // isrrotint16_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);} // getrotvvoid 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);} // iniroteinvoid setup() {inirotein(ROTE_CLK, ROTE_DT);}void loop() {Serial.print("Encoder_positionp = "); Serial.println(rotval);}
Új hozzászólás Aktív témák
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi
ekkold
