sidetech

(元)インフラエンジニアの寄り道メモ。

LEDで自力パルス幅変調をする

週末はなるだけArduinoを触ろうと思った2週目です。

前回、最後にカーボン抵抗の抵抗値を調べなくてはと思って調べたのですが。。。老眼?がはじまったのか、色がよく分からない[E:coldsweats02]
あかんですね。。。色化けしてしまう。ルーペも買わないと駄目かも[E:coldsweats01]
そして、本当にその抵抗値は正しいのかはテスターがないと駄目なので、テスターを買っときました。

安い奴なんでテスターが大丈夫かな?!とか思っちゃいますが。安いおかげでボタン電池は同梱されてませんでした(^^;安い割には色々と機能がついていて優秀なんじゃないかと。

んで一応カーボン抵抗も色分けでていこうが分かるものの製品誤差や不良がある場合もあるので電子の世界ではテスターをする事は基本になっています。

さて、今回のお勉強もまだLEDのオンオフをやっています。


【明るい】

【暗い】
Arduinoの教科書にもですね、単純な所でも色々な変化を楽しむのが大事と書かれています。つまり、今まで「オン」と「オフ」という単純なプログラムでの制御を作ってLEDを点滅させたのですが、今回2点の写真の画像をアップしましたが、1つはLEDが暗いと思うんですね。でも、まだオンオフするプログラムしか書いていません。
実はdelayの時間を調整してLEDの照度を変えています。
電気で普通に調光を考えた場合は、アナログ的にいうと可変抵抗という考えで抵抗値を可変させてLEDの明暗を表現したりします。抵抗値が大きくなればそれだけ電流が絞られるので暗くなるのは当たり前っすね。
それをデジタル制御で明暗を出す場合は周期を利用して目の錯覚。。。というか光っている時間幅を調整して明暗を表現して目を騙します。そしてこの理解が7セグメントLEDなどの表示系とか割込み制御のコントロールするのに後々役立ちます。

サンプルプログラムではオンしたあDelayが100でオフした後もDelayを100にしてLEDの点滅をさせる事が出来ました。今回はこのDelayを絞って点滅していると認識出来ないDelay値を探ってみます。
私の使っているボードではDelay値を14にした所でチラつきが感じなくなりました。処理的にはオンオフ繰り返してます。でも目で見た場合は点滅ではなく点灯です。

そして、2つのDelay操作で14を基準にオン側のDelayとオフ側のDelayをどちからの値を1にすると明るくなったり暗くなったりします。
これを専門用語にするとパルス幅変調というのですが、実はArduinoはこのパルス幅変調をする機能は備わっているので、Delayなんて使わなくてもできます。更にDelayを使うというのは、Waitと同じなのでDelay中は他の事が出来なくなってしまいます。そして他の処理や割込み要素を増やすと先程のDelayを与える値も変えなければ、点滅している様に見えてしまうでしょう。

この単純でつまらない実験過程の理解が大昔の自分には足りなかったなと。[E:shock]
今回の事は頭ではわかっていたつもりなのですが、実験する前までは可変抵抗で明暗すればええしって思ってた部分もあったんで、一つ勉強になったぞ。
やっぱり卓上計算だけじゃなくて実験・実践が大事っすね[E:delicious]
デジタル要素とアナログ要素を組合わせるとどうなるのかな。センサーとか入ってきた時に大事になってきそうです。
てことで次はスイッチ使います。