ロータリーエンコーダ HW-040
製作中のリモコンで数値設定に使おうと思い購入しました。
Amazon.com ロータリーエンコーダ HW-040
簡単にプログラム作ってカウントさせてみたところ次のような問題が発生。
・A相の立上り割込みでカウントさせたら、1クリックで3、4カウントしてしまう。
・割り込みを使用せずカウントさせたら、2クリックで1カウントになる。
なんだこれ?思いのほか手こずりました。
最終的にできた、割込みを使わない1クリックで1カウントのプログラムがこれです。
#define ENC_A 2 // CLK pin --- Arduino nano D2
#define ENC_B 3 // DT pin --- Arduino nano D3
void setup(){
Serial.begin(115200);
pinMode(ENC_A,INPUT);
pinMode(ENC_B,INPUT);
}
void loop(){
static int count = 0;
static bool LastENC_A = digitalRead(ENC_A);
bool NowENC_A = digitalRead(ENC_A);
if(NowENC_A != LastENC_A){
if(NowENC_A){
if(digitalRead(ENC_B))
count --;
else
count ++;
}else{
if(digitalRead(ENC_B))
count ++;
else
count --;
}
Serial.println(count);
}
LastENC_A = NowENC_A;
delay(1);
}
A相の立上りと立ち下がりのときに、B相の状態をみてカウントさせています。
では!(^-^)/
スポンサーリンク
2020.01.20 | コメント(0) | トラックバック(0) | Arduino
