今日は、Arduinoでロータリーエンコーダを使うスケッチを試しました。
Arduinoでロータリーエンコーダを使うスケッチは、以前にPICでロータリーエンコーダを使う時にwsnakのブログのスケッチを参考にさせていただきました。
今回は、JA2GQPさんのダウンロードサイトからダウンロードしたライブラリを試しました。(Arduino AD9850 DDSの中にあります)
ライブラリは、rotary.hを使いました。原典は、Ben Buxton氏の「Buxtronix」というウェブサイトにあります。
スケッチは、次のとおりです。
Arduinoとロータリーエンコーダを接続して動作をチェック。たいへんよく動作します。
ロータリーエンコーダのA,B端子をArduinoの2,3番ピンに接続しました。
ロータリーエンコーダは、秋月電子で販売しているRE-160F-40E3-20A-24Pです。(200円)
スケッチをArduinoに書き込み、RUNするとエンコーダの回転方向によって、「Right」「Left」をシリアルモニタに表示します。
このスケッチは、Arduinoの割り込み処理を利用しています。
ピンの状態が変化した時に割り込みが生じ、ISR(Interrupt Service Routine)で処理を行った後、再びメインルーチンに戻ります。
ロータリーエンコーダの動きに応じてかなり確実に動作しますが、Right と Leftが逆?
AとBの接続を逆にすると正常。
実際にどのようにエンコーダの信号を処理しているのか、プルアップは必要ないのか、など分からないところも多いです。
とにかく、このライブラリとスケッチでロータリーエンコーダの処理ができます。
ついでに、Arduinoの割り込み処理について、ちょっと勉強しておこうと思います。
10/10追記
プルアップは、ライブラリの中で行われるので、外付けのプルアップ抵抗は必要ありません。
秋月のロータイr-エンコーダーでは、Right と Leftが逆になるようです。
aitendoのエンコーダでは、スケッチのとおりになるようです。