!!! サイト改修中のため表示が乱れる場合があります(1月末頃まで) !!!
Raspberry Pi / Arduino

7-31. ArduinoのPWMでLEDの明るさを制御する

はじめに

ArduinoでLEDの明るさを調整したいのですが、デジタル可変抵抗(デジタルポテンショメータ)を使ってアナログに調整する以外に、PWMを使ってデジタルに調整する方法があるので試してみます。

材料

Arduino Uno

Arduino Uno Rev3: 開発ツール・ボード 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,LED,マイコン,電子工作Arduino Uno Rev3秋月電子通商 電子部品通信販売

トランジスタアレイはNPN型でよく使われる型番(ULN2003AN)を用意しました。7chです。

トランジスターアレイ ULN2003AN: 半導体 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,LED,マイコン,電子工作トランジスターアレイ ULN2003AN秋月電子通商 電子部品通信販売

適当なLED×4個、適当な抵抗(1kΩ)×4個、配線用のジャンパワイヤです。

PWMについてはこちらもご参照ください。

Arduinoチュートリアル 基礎編

シンプルにLEDの調光

まずはシンプルなPWM制御を試してみます。PWM対応のデジタルピンには「~」が付いています。ここでは3番ピン。

Arduinoに書き込みます。

void setup(){
  // シリアルポートを9600 bps[ビット/秒]で初期化
  Serial.begin(9600);
  // PWMピンをoutputに
  pinMode(3, OUTPUT);
}

void loop(){
  // ゆっくり点灯
  for (int i = 0; i <= 255; i++){
    analogWrite(3, i);
    delay(5);
  }

  // ゆっくり消灯
  for (int i = 255; i >= 0; i--){
    analogWrite(3, i);
    delay(5);
  }
}

トランジスタアレイ経由でLEDの調光

次に、トランジスタアレイ経由で明るさを制御してみます。とりあえず4個繋ぎました。PWM出力ピンは3, 5, 6, 9番です。

Arduinoに書き込みます。

void setup(){
  // シリアルポートを9600 bps[ビット/秒]で初期化
  Serial.begin(9600);
  // PWMピンをoutputに
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
}

void loop(){
  // ゆっくり点灯
  for (int i = 0; i < 128; i++){
    analogWrite(3, i);
    analogWrite(5, 128 + i);
    analogWrite(6, 255 - i);
    analogWrite(9, 127 - i);
    delay(5);
  }
   for (int i = 0; i < 128; i++){
    analogWrite(3, 128 + i);
    analogWrite(5, 255 - i);
    analogWrite(6, 127 - i);
    analogWrite(9, i);
    delay(5);
  }
   for (int i = 0; i < 128; i++){
    analogWrite(3, 255 - i);
    analogWrite(5, 127 - i);
    analogWrite(6, i);
    analogWrite(9, 128 + i);
    delay(5);
  }
   for (int i = 0; i < 128; i++){
    analogWrite(3, 127 - i);
    analogWrite(5, i);
    analogWrite(6, 128 + i);
    analogWrite(9, 255 - i);
    delay(5);
  }
}

analogWrite() に与えるデューティ比(0から255の整数)とLEDの明るさは比例しないようです。信号と明るさを比例させるには適当な非線形関数が必要です。

さいごに

結局、非線形関数を設定してPythonからの制御もできました。トランジスタってパキパキON/OFFを切り替えられるものなのでしょうか。対応できるPWMの周波数?デューティ比?の範囲があるのかなとも想像しますが。

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

タイトルとURLをコピーしました