「扇風機の首振り機能復活プロジェクト」の続き。
「プロジェクト」に昇格したのだ(プッ!)。
なぜかPICがPIC12F1822からPIC16F1823に変わっている。
扇風機にテープで貼り付けて首を振らせているPIC12F1822を止めたくない。
だが、余分のPIC12F1822が無い。
しかも、なんかピン数が多い方がいいかなと思って見たら、PIC16F1823が目にとまった。
サーボの駆動部分のプログラムはPICの種類に依存する部分は無いのでコピペで数秒で完了した。
扇風機のリモコンの「首振」命令の赤外線信号を赤外線リモコン受信モジュールで受信する部分を追加する。
まずはリモコン信号の解析から。
ちょっと変わってる。
すぐに気づくのはLeader部分が無いことと、赤線より左の部分は共通なこと。
Leader部分が無いのは、命令の始まりを特定できなくてすごく面倒な気がする。
少なくとも数ビット分は読み込んでみないと命令の始まりを特定できない。
何かうまい手があるんだろうか。
結局、こんな感じに、なんだか泥臭いコードになった。
fan_irrc_swing
大まかに説明すると、先頭の1ビットをLeader扱いにして、都合12ビットのうちの11ビットをすべてチェックしていき、異なっていれば即座に0を返すここととする。
連続する11ビットすべてが共通だった場合のみ1を返す。
これで、一応は、別のボタンを誤認識することは無いが、何か、正しいボタンを押したときのレスポンスが悪い気がする。
扇風機に組み込まれている受信部はリモコンの信号だけに集中していればいいが、この場合のPICはサーボの駆動も行っているので、そっちへ労力を割いている分レスポンスに影響しているのかも知れない。
今回はただ、機能的に実現可能かどうかの確認をしただけという状況だ。
もう少しコードを詰める必要がある。