興味ある方は少ないかもしれませんが今回もまたマイコンの話です。
私のお勉強の記録、備忘録代わりなので悪しからず。
前回はスイッチのチョン押しと長押しでモードが切り替わるところまでやっていましたがこの長押しモードの時に3色LEDの表示色が6色(赤→黄→緑→青緑→青→紅紫→)を繰り返し表示しかもこの間の色変わりはじんわりと行うという自己課設定。
前回はスイッチのチョン押しと長押しでモードが切り替わるところまでやっていましたがこの長押しモードの時に3色LEDの表示色が6色(赤→黄→緑→青緑→青→紅紫→)を繰り返し表示しかもこの間の色変わりはじんわりと行うという自己課設定。
この「じんわり」と言うのがマイコンでの処理としては大きな変化で今までの単純なON/OFFでは無く時間とともに徐々に明るくしたりその逆で徐々に暗くしたりと光る強さを変える調光が必要になってきます。
この輝度変化を書いた図がこれ、いつもながら汚い手書きでごめんなさい。
この図で斜めになっている部分が徐々に明るさが変わる部分です。
で、どうやって調光するかと言うとPWM(Pulse Width Modulation:パルス幅変調)という方法を使います。 ごく短い周期でLEDのON/OFFを行いこのON時間とOFF時間の幅を変えて人の目に感じる明るさを変えるというもので概略は下記の図を参考ください。
この技術はテレビ、スマホはたまた野球場などの超大型ビジョン等にも使われています。
今どきのマイコンは便利なもので出力にこのPWM機能を備えていて”analogWrite”の命令で0~255の数字を与えれば0~100%の範囲でON時間を変えて調光が出来てしまいます。
私が買ったお勉強用マイコンではこのPWM機能を持った出力は3,5,6,9,10,11,の6個のピンが対応しています。 今回は前回の流れで9,10,11を使用したんですがーー。
色の切り替えのタイミングは以前紹介したメトローノーム方式でMStimer2と呼ばれるタイマー割り込みのライブラリーを使用。
プログラムを書いて動かしてみますが 緑→青緑、紅紫→赤 の変化がスムーズではありません。 赤緑青どの原色に対しても同じ処理をしてるんですが何故???
頭を抱えながらいろいろとネットをほじくってMStimer2を使うと11番ピンのPWM機能が使えなくなるということが判明、11番ピンから6番ピンに配線を変更したらうまく動いてくれるようになりました。
退屈でしょうが動画がこれ。
まだ続きがありますが長くなりそうなので今日の所はこれまで、続編も読んでくださいね。
七十の手習い、脱帽です。JT
返信削除JTさん久しぶりですね。
削除70の手習いですが初めて見るとなかなか面白いです。
ソフトウェアーは目に見える電子回路のワイヤードロジックと異なりすべてを頭の中で組み立てなきゃいけないのでボケ封じには良さそうです。