目次
ロータリエンコーダ( 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″]
今度は、ロータリーエンコーダを入力として、角度を取得して
出力として、サーボを接続して、連動すると面白いですね。
ではまた!