スイッチでLEDの点灯・消灯を制御する
前回はPICを使ってLEDを点滅させました。今回はデジタル入力を用いてスイッチによるLEDの点灯・消灯を行いたいと思います。具体的にはタクトスイッチを押しているときに点灯し、離しているときは消灯するようにします。
- プログラムの作成
- 配線
- 動作確認
❶ プログラムの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
//コンフィグレーションの設定 #pragma config FOSC = INTOSC #pragma config WDTE = OFF #pragma config PWRTE = ON #pragma config MCLRE = OFF #pragma config CP = OFF #pragma config CPD = OFF #pragma config BOREN = OFF #pragma config CLKOUTEN = OFF #pragma config IESO = OFF #pragma config FCMEN = OFF #pragma config WRT = OFF #pragma config PLLEN = OFF #pragma config STVREN = ON #pragma config BORV = LO #pragma config LVP = OFF //ヘッダファイルの読み込みインクルード #include <xc.h> //その他の設定 #define _XTAL_FREQ 31250 //PICのセットアップ int main(void) { OSCCON = 0b00010000;//オシレータ31.25kHzに設定 ANSELA = 0x00;//全ピン デジタルI/Oピンとして設定 TRISA = 0b00001000;//RA3は入力 それ以外は出力に設定 PORTA = 0x00;//全てのピンを初期化(LOW(0)に設定) WPUA = 0b00001000;//RA3をプルアップする OPTION_REGbits.nWPUEN = 0;//プルアップ機能を有効にする //プログラム本体 while(1) { if(RA3 == 1) { RA2 = 0; }else{ RA2 = 1; } } } |
今回はRA3ピンにタクトスイッチを付けたいと思います。(もちろん他のピンでもOKです)「TRISA」レジスタの設定はRA3は入力、それ以外は出力に設定します。
動作を安定させるためRA3ピンをPICにあるプルアップ機能が使ってプルアップします。(プルアップ抵抗については別の記事を参照ください)プルアップを使用するためには「WPUA」レジスタを使用します。「WPUA」レジスタの「RA3」ピンに対応する部分をON(1)とします。
また、「WPUA」レジスタのプルアップ機能は「OPTION_REGbits.nWPUEN」を「0」にしてプルアップ機能を有効にする必要があります。
本プログラムは、RA3ピンがプルアップにより「HIGH」になっているときはRA2ピンは「LOW」なり、RA3ピンを「LOW」にした場合、RA2ピンは「HIGH」になります。よって、タクトスイッチをRA3ピンとGNDに接続し、スイッチを押したときにRA3ピンをGNDに繋がるようにします。
➋ 配線
配線は下図のようになります。バイパスコンデンサ(パスコン)を忘れないようにしましょう。通常ですとスイッチの部分にプルアップ抵抗が必要になりますが、今回はPICの機能の「WPUA」を使ってRA3をプルアップ状態にしているので不要です。
❸ 動作確認とまとめ
プログラムと配線がきちんとなっていればタクトスイッチを押すとLEDが点灯すると思います。