サイトアイコン KOKENSHAの技術ブログ

ロータリーエンコーダをArduinoで動かしてみました。

目次

ロータリエンコーダ( rotary encoder)とは

入力軸の回転の変位を内蔵した格子円盤を基準として

デジタル信号として出力する角位置センサです。

回転を測定するセンサではもっとも一般的なものです。

何か入力装置を回転させて、出力としての他のサーボや装置を動かしたりすることがその応用になります。

今回はロータリーエンコーダの動作を直感的に理解するために、ちょっと実験してみました。

もちろん、1回目なので、少し簡単な課題設定ですが、これからはいろんなアイディアで回路を作ってみたいと思います。

接続

こんな感じとなります。

今回の配線図

下記となります。

 

実物配線

プログラム

/*
  ロータリーエンコーダ実験01
*/

int val;
int encoder0PinA = 3;
int encoder0PinB = 4;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int n = LOW;
int outPin13 = 13;
int outPin12 = 12;

void setup() {
  pinMode (encoder0PinA, INPUT);
  pinMode (encoder0PinB, INPUT);
  Serial.begin (9600);
  pinMode(outPin13, OUTPUT);
  pinMode(outPin12, OUTPUT);
}

void loop() {
  n = digitalRead(encoder0PinA);
  if ((encoder0PinALast == LOW) && (n == HIGH)) {
    if (digitalRead(encoder0PinB) == LOW) {
      encoder0Pos--;
      digitalWrite(outPin13, LOW);
      digitalWrite(outPin12, HIGH);
      delay(abs(encoder0Pos));
    } else {
      encoder0Pos++;
      digitalWrite(outPin12, LOW);
      digitalWrite(outPin13, HIGH);
      delay(abs(encoder0Pos));
    }
    Serial.print (encoder0Pos);
    Serial.print ("/");
  }
  encoder0PinALast = n;
}

今回はまず動作確認だけをしたいですので

とても簡単なプログラムになっています。

ロータリーエンコーダを左に回すと赤いLEDが点灯します。

ロータリーエンコーダを右に回すと緑のLEDが点灯します。

シリアルモニタで、ロータリーエンコードが回転させる時のログが確認できます。

うまく動作しました!

おまけ

LEDのところにレーザーモジュールを入れ替えても動作します!

(レーザーモジュールは直視厳禁・人や動物への照射も厳禁)

[amazonjs asin=”B01FYQ6EWC” locale=”JP” title=”Kuman 44個キット Raspberry Pi用センサー センサーモジュール 38センサーモジュール+ADC0832チップセット+GPIO拡張ボード+ジャンパーワイヤー 電子部品 電作キット 実験用 Raspberry Pi 3 2 Model B B+ A A+に適用 K47″]

今度は、ロータリーエンコーダを入力として、角度を取得して

出力として、サーボを接続して、連動すると面白いですね。

ではまた!

モバイルバージョンを終了