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

はてなブックマーク - ロータリーエンコーダをArduinoで動かしてみました。
LINEで送る
Pocket

目次

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

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

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

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

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

ロータリーエンコーダ萌え

賢 川島さん(@kawashimaken)がシェアした投稿 –

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

もちろん、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のところにレーザーモジュールを入れ替えても動作します!

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

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

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

ではまた!

はてなブックマーク - ロータリーエンコーダをArduinoで動かしてみました。
LINEで送る
Pocket

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close