>実際にロータリーエンコーダーを使う実際にロータリーエンコーダーを使うロータリーエンコーダーの使い方の解説ビットの検知をし、とその変化で回転方向を判別して、実際にロータリーエンコーダーを用いて利用するロータリーエンコーダーの判別と利用方法ロータリーエンコーダ-について秋月のロータリーエンコーダー使用です。(メカ式、原点無し)ロータリーエンコーダーは可変抵抗とは違い回転の範囲がなくどこまでも回転します。このような原点情報を持たず、どこまでもクルクル回るようなものは、スタート地点がわからないので、通常、実使用で機器に用いるときは開始時に原点復帰のような原点を覚えこませる動作が必要です。ここで使用するプログラムでは、プログラム実行したロータリーエンコーダー位置が原点になります。キザミこのロータリーエンコーダーはクボミがあり、その間でも信号は出力するのですが、止めにくいです。ロータリーエンコーダーには種類がいろいろとあるので、目的、必要に応じて選択する必要があります。結果をLCD表示にしました。LCD表示を加えましたが、やはり、マイコン内部の情報が表示できるLCDはいいですね。回路図5kΩでプルアップしロータリーエンコーダーを接続します。左、右回転のとき、それぞれ、LEDを点灯させます。チャタリングの問題も考える必要があります。チャタリング時間が2msとありました。することで対処しました。作成した、判定関数を適用し、回転方向がわかります。記憶値はすべてグローバル変数にしました。ほとんどの処理をタイマ関数Wの中で記述しています。3msごとに定期的にロータリーエンコーダーのビット情報を監視します。そこで読み取ったRエンコーダー状態の現在値を、PDとします。PD){この2つの値が異なっていれば、回転したと判断する。この処理をタイマW関数で3msごとに毎回しています。判別式の結果値pbで回転した方向がわかります。判別式の結果値pb(左回転で2以上になる、右回転では1以下)によって、各回転方向の処理します。//右回転のときIO.PDR1.BIT.B4=0;IO.PDR1.BIT.B5=1;cnt--;}main関数でカウンタ変数(回転度)をLCD液晶に表示します。カウンタ減る内容になっています。実行結果ロータリーエンコーダーを回転させると、LEDが点灯し、回転させた方向で、点灯するLEDが変わります。同時に回転度がLCDに表示されます。このエンコーダはクリックキザミがあり、4飛び値になります。ロータリーエンコーダーを素早く回転させると、タイマで定期的に見に行く読み込み時間が3msなので読みこぼしがでます。すばやい回転にも耐えられるでしょうがチャタリングの問題で、正確な数を累積できない問題がでるでしょう。このような原点情報を持たず、どこまでもクルクル回るようなものは、スタート地点がわからないので、通常、実使用では開始時に原点復帰のような原点を覚えこませる動作が必要です。ここではプログラムを実行したときのロータリーエンコーダー位置が原点になります。最初はカウンタが0です。カウンタをマイナスにする時計回りにすると、-減少、反対回しで+増加になります。