ロータリーエンコーダ 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

コメント

コメントの投稿


管理者にだけ表示を許可する

«  | ホーム |  »

最新記事

再挑戦! 2輪2脚ロボット Oct 01, 2020
自作の回路とソフトで一輪車を倒立させることはできるのか? Jun 16, 2020
2輪ロボット May 03, 2020
自作3Dプリンタ メモ Apr 07, 2020
ロータリーエンコーダ HW-040 Jan 20, 2020

スポンサーリンク

counter