スイッチで発光ダイオードを点灯・消灯させる

このエントリーをはてなブックマークに追加

 

 スイッチを使って発光ダイオードを制御しましょう。今回の動作は、スイッチをオンにすると点灯、オフにすると消灯するようにします。当然、スイッチと発光ダイオードは直接つなげません。また今回の制御では、厳密な制御を行うわけではないので、チャタリング(ウィキペディア)は考慮しません。

 

1.今回使用するPICについて

 今回使用するPICは「PIC12F1822」です。

 

2.回路

 スイッチの接続ピンRA4では、PICの中にあるプルアップ機能を使用しています。なのでRA4の状態は、スイッチがオフの状態だと1、スイッチがオンの状態だと0になります。参考:プルアップ(ウィキペディア)
 簡単にプルアップの回路の動きを説明すると、スイッチが押されていない状態だと、RA4に電気が流れているので1になります。スイッチが押されるとRA4へ流れていた電気がグランドへ流れるため、RA4の入力は0になります。

 ピンへの接続は以下の通りです。
RA2:発光ダイオード
RA4:スイッチ

 

 

 

     

タクトスイッチ

 

3.プログラム

 スイッチの状態を認識し、発光ダイオードを点灯・消灯させるプログラムを作成します。基本的な初期設定は「発光ダイオードを光らせる」と同様です。しかし、今回はPICのプルアップ機能を使用するので、その設定を有効にする必要があります。

OPTION_REG = 0b00000000 ;// 7bit目が0でプルアップ抵抗が有効
ANSELA = 0b00000000 ;    // すべてデジタルI/Oに割当てる
TRISA  = 0b00011000 ;    // RA3,4を入力とする
WPUA   = 0b00010000 ;    // RA4のみプルアップ抵抗設定
PORTA  = 0b00000000 ;    // ピン状態初期化

37行目

プルアップを有効にするため「OPTION_REG」の7ビット目をゼロにします。
OPTION_REG = 0b00000000;

38行目

全てのポートをデジタルI/Oに設定します。

39行目

今回、スイッチとつながっているRA4を入力に設定します。
(RA3は入力のみのピンなので、一緒に入力に設定します)

40行目

RA4のプルアップを有効にします。

41行目

ピンの状態を初期化します。

 

 メインの処理では、動作し続けるようにするため永久ループにします。プルアップを利用しているため、RA4が0の時、スイッチが押されている状態になるので、点灯するようにRA2を1にします。逆にRA4が1の時はスイッチはオンしていないので、消灯するようにRA2を0にします。

for(;;)
{
    if( RA4 == 0 )
    {
        RA2 = 1;
    }
    else
    {
        RA2 = 0;
    }
}

注意:プルアップを使用しているので、RA4の0と1の判定を間違えないようにしてください。

 

ソースコード

 プログラムの全文を掲載します。

  プログラム

<注意>
本サイトの注意事項を確認してください。
ソースコードや回路図などを使用する場合、上記注意とともに、自己責任でお願いします。

   

 

3.動作確認

 PICへ書き込んで動かしてみてください。問題がなければ約1秒で点灯・消灯を繰り返します。

 

<更新履歴>

新規作成:2015年4月4日
第2版:2016年9月30日:フォーマット変更(内容の変更はなし)

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)