今回はPWM制御に関するチャレンジ課題です。PWM制御プログラム2通りPWMの最後はチャレンジ課題で締めくくりたいと思います。前回までに、LEDを2通りの方法でPWM制御しました。PWMの原理自体はとても簡単だったと思いますが、周期やデューティーサイクルの算出が難しかったと思います。そこで、ちょっと地味ですが、PWMのチャレンジ課題は周期とデューティーサイクルの計算に慣れていただく内容にしました。(つまりゆっくり点滅すると)「光過敏性発作」を誘発する可能性があります。点滅は1秒間に30回以下にしないよう注意してください。プログラム制御のPWMPWMをプログラムで制御する場合、LEDを点灯、デューティーサイクルの時間分__delay_us()関数などで時間待ち、LEDを消灯、時間待ち、という処理の繰り返しでした。説明の時に作成したプログラムは、この点滅が認識できないように1秒間に200回点灯させました。目視した場合、どの程度の周期で点滅しているように見えてしまうのか、確認するプログラムを作成してみましょう。動作内容としては、PWMのデューティー比は50%として、以下の動作をするようにします。最初に1秒間に200回の点滅を5秒間続けるLEDを1秒間消灯する次に1秒間に180回の点滅を5秒間続ける(2)と(3)の動作を繰り返す。点滅回数は、20回ずつ減らし、1秒間に40回の点滅まで続けるPWMモジュール制御のPWM上の動作をPWM機能を利用してプログラムを作成してみてください。周期の設定はPR2レジスタ、デューティーサイクルの設定はCCPR1LレジスタとCCP1CON/DC1Bレジスタです。PWMの次のステップ今回はLEDをPWM制御を行いました。今回は明るさの調整のみでしたが、フルカラーLEDという部品を使用すると様々な色の表示が可能になります。フルカラーLEDは以下のようなものです。5mmフルカラーLED(秋月電子通商)フルカラーLEDは、単に赤色、緑色、青色の3つのLEDが1つのパッケーシに収められている部品です。赤、緑、青は光の三原色ですから、赤、緑、青のそれぞれをPWM制御して明るさを変えれば様々な色の表示が可能になります。サーボモーターというモーターがあります。サーボモーター(秋月電子通商)通常のモーターは電圧を加えるとモーターの軸がぐるぐる回転しますが、このサーボモーターは0度〜180度の角度の範囲内で回転します。用途としてはロボットアームなど、稼働角度が限られている場合などです。サーボモーターを制御するにはPWM信号を与えます。2.4msと書かれています。PWMの周期は20ms、デューティーサイクルを0.5msから2.4msまで変化させることにより、0度〜180度まで回転制御ができる、というわけです。サーボモーターの制御信号は、PICマイコンの出力ピンを直接接続できますので、比較的簡単な回路で制御回路が実現できます。いずれも、結局はPWMの周期とデューティーサイクルの制御を行うものです。今までの知識とアイデアがあれば、色々なものが作れるようになりますので、ぜひPWMをマスターしてみてください。