あとは(5)でこの状態をずっと保持するので、while(1){}とすることにします。動作処理部分は上のように変更すればよさそうですが、他の部分についても検討します。何度もしつこくてすみませんが、プログラムの構成を再度確認しましょう。今回もコメント部分は変更履歴をメモしておくことにします。次のヘッダファイルインクルード部分ですが、ブザーの制御はピンの制御だけで済みますので、今までどおりのヘッダファイルで問題ありません。PICマイコンコンフィグレーション設定部分とその他設定部分も、特に変更はありません。それではメイン関数内を確認します。内部クロック設定は特に変更ありません。ピンの設定ですが、現在はすべてのピンがデジタル設定ですのでANSELAについては変更なしです。入出力設定(TRISA)については、RA3ピンが入力の設定で、他のピンは出力の設定です。今回は新規にRA4ピンを出力ピンとしてブザーを制御しますが、すでに出力ピンになっていますので、この部分も変更なしです。あとはピンの初期設定でブザー制御の追加となります。いうことで、ほぼピンの初期設定部分と動作処理部分の追加・変更で済みそうですね。難しいところはないと思いますので、これ以上の解説はせずに、プログラムを載せておきます。タイマーの時間は10秒にしています。コメントを入れましたので、プログラム上での処理内容を確認してみてください。わからないことがありましたらお問い合わせページからご連絡いただくかコメントいただければと思います。return;}動作確認プログラムが理解できたら、ビルドしてPICマイコンに書き込み、動作確認してみてください。10秒間点滅を繰り返したら、ブザーが鳴ってLEDが点灯した状態になるはずです。これでついに入門回路の完成です!ただ、残念ながら時間が経つとブザーは鳴りっぱなしですので、ブザーを止めるには電池ボックスのスイッチをOFFにするしかありません。この改善については、チャレンジ課題にしたいと思います。動作確認についても、うまく動かなかったり、わからないところがありましたらご連絡いただければサポートできる範囲でお手伝いします。タイマー時間の変更さて、これでようやく完成したわけですが、上のプログラムではあとあと問題が出てしまうような、よくありがちな実装をしています。したら、プログラムを読んでいる時に気づかれた方もいらっしゃるかもしれませんね。動作確認するときの時間を短くするために、タイマーとしては短い10秒、という時間で動作確認しました。実用的なタイマーでしたらもうちょっと時間をのばしてみたいですよね。いうことで早速プログラムを変更して5分タイマーを作ってみたいと思います。今の10秒タイマーを5分タイマーにするには、for文のところが現在は10回ループするようになっているので、ここを5分=300秒、つまり300回ループするように変更すれば、簡単じゃん、っていう感じですよね。{と変更して動作させてみてください。点滅を300回数えるのはしんどいので、時計で時間を計測してみましょう。鳴らない、、、、、なかなかブザーが鳴りませんよね。このプログラムではいつまで待ってもブザーは鳴りません。結論を言ってしまうと、変数の「timer」に問題があります。timer;で型宣言しています。符号なし8ビット、ということで10進数でいうと、0〜255までしか数字を保持できません。いつまで待っても300(正確には299)までカウントできないわけです。timerを型宣言するときは実用的な時間が計測できるようにします。(32ビット)があります。8ビットは255までのカウント、つまり4分強のタイマーしか作れません。16ビットあれば65535までのカウント、時間に直すと18時間強までのタイマーとなります。shortで十分でしょう。いうことで、このあたりにも注意してプログラムの最終版とします。タイマー時間は5分にしています。return;}プログラムの仕様を決めるときは、最小値や最大値に注意するようにしたほうがよいですね。今回はタイマーでしたのでどのくらいの時間まで計れればよいかを先に検討して、それに応じてプログラム内の変数を定義するように注意します。他の例では、例えば温度計を作る場合、何度〜何度まで計れるようにするか、その値が扱える内部の変数をどう定義するか検討する必要があります。余裕を見て変数を用意するのはよくありません。long型を使えばかなりの値を扱うことができますが、必要バイト数が多い分、メモリを余計に消費しますし、処理時間もかかることになります。WindowsやMacのアプリでしたら贅沢にメモリやCPUパワーを使ってもよいかもしれませんが、マイコンの場合はメモリやCPUパワーはかなり貧弱ですので、プログラムを作る際はこのような観点でも注意するようにしてください。これで一通り終わりました。長い間いろいろと寄り道もしてしまいましたが、ようやく入門の回路とプログラムが完成しました。