#include #define ENCA 2 #define ENCB 3 volatile int counter; volatile uint8_t pre; int preCount; void setup() { pinMode(ENCA, INPUT_PULLUP); pinMode(ENCB, INPUT_PULLUP); //マウス初期化 Mouse.begin(); counter = 0; preCount = 0; pre = 0; attachInterrupt(digitalPinToInterrupt(ENCA), pulse, CHANGE); } void pulse() { uint8_t a, b; a = digitalRead(ENCA); b = digitalRead(ENCB); if(pre == a) // チャタリング除去 return; if(a == 1) { if(b == 1) ++counter; else --counter; } else { if(b == 1) --counter; else ++counter; } pre = a; } void loop() { int diff; diff = counter - preCount; if(diff != 0) { Mouse.move(diff << 4, 0, 0); preCount = counter; } }