それでは電子工作の基本、発光ダイオードを光らせましょう。
1.今回使用するPICについて
今回使用するPICは「PIC12F1822」です。
2.回路図
回路図は以下の通りです。右下のLED部分が今回のターゲットです。RA2へHigh(1)を出力すると点灯Low(0)を出力すると消灯する構造になります。
3.ブレッドボードと電子回路パーツ
電子工作をする際、簡単に配線するために使用するのが「ブレッドボード(ウィキペディア)」です。ブレッドボードを使用すると、はんだ付けをしないで回路を組むことができます。ブレッドボードを利用して、発光ダイオードを光らせるための回路を組みます。
電子回路のパーツを一つ一つ集めると大変なので、以下のような商品を利用すると便利だと思います。
3.プログラム
回路が完成したので、発光ダイオードを光らせるプログラムを作成します。初めにコンフィグレーションビットの設定を行います。(詳しくはこちらを参照してください)
コンフィグレーションビットの設定を以下のようにしてください。
FOSC = INTOSC
PLLEN = ON
続いてプログラムです。
PICのクロック周波数を32[MHz]にする
PICのクロック周波数を32[MHz]に設定します。コンフィグレーションビットで4逓倍設定を行ったので、OSCCONレジスタを8[MHz]にします。
OSCCON = 0b01110000 ; // 内部クロック8MHz
3bit~6bit目が内臓クロックの設定になります。
ポートの設定
ANSELA = 0b00000000 ; // すべてデジタルI/Oに割当てる TRISA = 0b00001000 ; // ピンは全て出力に割当てる(RA3は入力のみとな PORTA = 0b00000000 ; // 出力ピンの初期化(全てLOWにする)
とします。詳しくはこちらを参照してください。
発光ダイオードへの信号
発光ダイオードはRA2に接続しています。この回路の場合、RA2に対して1を設定すると点灯し、0を設定すると消灯します。プログラムが動いていることを確認するために、1と0を繰り返すようにしています。
メインの処理では、動作し続けるようにするため永久ループにします。RA2をすぐに切り替えると動いているか確認できないため、forループによって待ち時間を作成しています。
for(;;) { for(i=0; i<1000000; i++) { // 処理無し(一定時間待ち) } RA2 = 1; for(i=0; i<1000000; i++) { // 処理無し(一定時間待ち) } RA2 = 0; }
ソースコード
プログラムの全文を掲載します。
<注意>
本サイトの注意事項を確認してください。
ソースコードや回路図などを使用する場合、上記注意とともに、自己責任でお願いします。
4.動作確認
プログラムをPICに書き込んで動作させてみましょう。プログラムをPICに書き込むと自動で再起動します。プログラムが正しく動作していれば、約1秒点灯、約1秒消灯を繰り返します。
<更新履歴>
新規作成:2015年4月4日
第2版:2016年9月30日:フォーマット変更(内容の変更はなし)