Arduino nanoを使った赤外線リモコンデータの受信器の改訂版スケッチ

概要

以前、ATmega328pとUSBポートを備えたArduino nanoを使って、家電用赤外線リモコンの送信データを解析する仕組みを作ったのだけど、AV機器用のリモコンデータを取り始めてみたら、NECフォーマットのリピート機能にまったく対応できていないことが分かった。

信号のタイミングについては、WROOM-02を使った赤外線リモコンの調査 という投稿内にリピート時の動作図を追加。対応する回路図は、元のページの「追記(ミニブレッドボード版)」を参照。

改訂したスケッチは以下の通り。

おもな変更点は以下のとおり。

  • リピート出力間隔は90msec以上あるので、μsec単位では16ビット長のデータに格納できない。そのため、4μsec単位にタイミングを得ることにした。
  • タイマカウンター1(TC1)ユニットのカウンタを使って赤外線受信機の出力レベルが変わったタイミングを記憶する。システムクロック16MHzなので、TC1のプリスケーラによって1/64として250kHzでカウントアップさせ、TCNT1の値を読み取ることにした。同時にTC1を別の用途(タイマー割込みとか)に使うことはできないことに注意。
  • 取り込み精度を上げるため、余計なことを減らした。

といったところ。