桜のはなびらどっとねっとロゴ

桜のはなびらどっとねっと

Arduino UnoでLEDのPWM制御

この記事は1年以上前に投稿された記事です。 この警告表示について

IMG_7044_20151213

前回はデジタルIOでLEDのオン・オフを行いましたが、今回はPWM制御でLEDの光量を調整してみたいと思います。

はじめに

Raspberry Piはメイン用途としてはPCなのでハードウェアのPWM制御は1つのみ(実際には3つあるらしいがWiringPiでは使えなかった)しかありませんでしたが、Arduinoは制御がメインなのでPWM信号が6つもあります。

PWMの分解能こそPiには及びません(Piが1024段階 Arduinoが256段階(0-1023と0-255))が、使用できるポートが6個もあるので使いみちはいろいろあると思います。

色々と使える機器はたくさんありますが。今回は簡単にLEDの制御をしてみたいと思います。

必要なもの

LEDと適当な抵抗(前回のものでOK)

接続

抵抗を介してArduinoの~が書かれてあるピン(3・5・6・9・10・11)のいずれかに接続します。
(前回のママ放置してある人ならあのままでOK)

制御

PWM制御をする場合は特に何もする必要がなく制御用のコマンドを記述すれば制御できます。
前述のとおり、PWMの分解能は256段階、制御周波数は490Hz程度となっています。

  • analogWrite(ポート番号,値);

これでPWM出力ができます。

なお、数値は0がdigitalWriteの0と同じで出力なし。
255がdigitalWriteの1と同じとなっています。

実行例

一眼レフのISO感度・シャッタースピード・絞りを一定にし、PWMの数値のみを変更して撮影した結果。

PWM制御の実行例
255 128 64 32
IMG_7036_20151213 IMG_7037_20151213 IMG_7038_20151213 IMG_7039_20151213
16 8 4
IMG_7040_20151213 IMG_7041_20151213 IMG_7042_20151213 IMG_7043_20151213

コーディング

前回の構成で発光色の切替時にフェードイン・アウトを行うプログラムを載せておきます。

なお、前回と同様にアノードコモンのフルカラーLEDを使用する場合やPNPトランジスタでスイッチングする場合に合わせてプログラムが記述されています。カソードコモンやNPNトランジスタを使用する場合は先頭のLedTypeの数値を変えてください。

コメントを残す

メールアドレスが公開されることはありません。