ラジオ少年の楽しい電子工作、その他

AVRを使った簡単な回路の実験、そして日々のちょっとした出来事を書きます。

2ch電子ボリウム(NJW1159D)(赤外線受光センサ追加)

2016年04月06日 | 日記

リモコンでのコントロールが出来るように赤外線受光センサーを追加しました。場所が無い為、写真の様な位置になっています。

0ボタン:MUTE

↑ ボタン:音量大

↓ ボタン:音量小

上記の制御のみです。↑ ボタン:音量大、↓ ボタン:音量小はボタンを押すたびに1dBずつ上下します。長押しで連続にすればいいのですが、面倒でやっていません。

ロータリーエンコーダはタイマー割り込みで1ms毎にポーリングしていましたが、これだとvoid loop(){  }内のプログラムが実行されません。タイマーの時間を長くするとエンコーダの取りこぼしが出てきます。

割り込みは止めてloop()内に入れて実行しています。それでもエンコーダの取りこぼしが時々出ます。エンコーダを確実に操るのは結構大変です。

Arduinoはそれなりにプログラミングが楽なのですが、割り込みの制約があったりで、より細かい動きをさせるにはやはりCやC++で書くほうが良さそうです。

今回プログラム作りで混乱したのは、

音量ーー>大  LCD表示は-95dBーー>94--> ---- 0dB

音量ーー>小は上記の逆。

音量の大小でデータのインクリメント、デクリメントさせる事にしたのですが、LCDの標示数字は逆、エンコーダのパルス数との絡みで頭の中が混乱していやはや大変でした。

リモコンのボタンを押している間音量を上げ下げ出来れば1dBずつよりは早くていいのですが、これが意外とむずかしい。と云うのはリモコンはボタンを押し続けると同じコードが連続して出てきません。リーピートビットとか云うコードげ出ています。

ボタンを押したときだけボタン対応のコードが出ますが、其のまま押していても同じコードは押しなおさない限りでません。

出るリモコンもあるようですが。

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする