目次>5章 第2ステップ(色々な実験)>(4)スイッチでLEDの点滅パターンを変更
スイッチでLEDの点滅パターンを変更
今まで使っていた実験回路にプッシュボタンスイッチを一つ追加します。
このスイッチのオン/オフで、LEDの点滅パターンを変えるプログラムを作成しましょう。
実験回路を作る | ||||
実験回路は以下のようになります。
RA0にプッシュボタンスイッチを追加しました。押すとOFFになるタイプです。
ブレッドボードに組んだ状態です。
| ||||
スイッチを入力として使うには | ||||
今回追加したスイッチは、PORTAのRA0に接続しました。 従って、RA0を入力モードに設定し、RA0が0か1かを判断する事でスイッチの状態を知ることができます。 フローで表すと以下のようになります。
スイッチのON/OFF判定は、このように難しくありませんが、厄介な事にスイッチにはノイズ(チャタリング)があり、 これを取り除かないと正確にON/OFF判定をする事ができません。
| ||||
スイッチのノイズ(チャタリング)を取り除く | ||||
スイッチのON/OFF時に発生するチャタリングとは、どのようなものでしょうか?
通常の機械式スイッチは、接点がくっつくとONになります。 スイッチをON/OFFした時の様子を表したものが下図です。
上の例では、1回のスイッチONで3回ON/OFFを繰り返しています。 このチャタリングを取り除くには、幾つかの方法がありますが、今回はプログラムでチャタリングキャンセルを行う事にします。
その考え方は下図の通りです。
ONを検出した場合、一定時間待って再度状態を確認します。一定時間後の状態もONであればスイッチがONになったと判断します。
先ほどのスイッチON/OFF判断フローに、チャタリングキャンセルを組み込んだフローを示します。
| ||||
プログラムの仕様 | ||||
フローは以下のようにしました。
プログラム作成のポイントは次の通りです。
| ||||
プログラム全体 | ||||
上記の処理を組み込んだプログラムはこちらです。 メモ帳などのテキストエディタに取り込んで、LED5.ASMという名で保存し、MPLABでアセンブル&PICライタでPICに書き込んで動かしてみて下さい。
|