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