Arduinoと可変抵抗でLEDの明るさ制御

 

Arduinoと可変抵抗でLEDの明るさ制御

こんなこと、やります。

  • Arduinoと可変抵抗でアナログ電圧値を読み取る
  • 電圧値に応じてLEDの明るさをPWM制御でコントロールする

つかうもの

この記事でつかう主なものは、Arduinoと可変抵抗、LEDです。

Arduino

Arduino Uno Rev3を使用しました。

ほかのArduinoでも構いませんが、PWMに対応しているデジタルピンの番号が異なると思うのでご注意ください。

Arduinoをお持ちでないようでしたらオススメArduinoどれを選べばいい?Arduinoで電子工作をはじめる方へをご参考になさってみてください。

可変抵抗

可変抵抗はBカーブを使用したが、LEDの明るさのコントロールにはAカーブの方が向いているかもしれない。とはいえ、Bカーブでもプログラム次第ではAカーブのような特性を持たせることも可能だ。10kΩ〜100kΩ程度の範囲で選びましょう。

LED

LEDは色の種類によって順方向電圧(VF)が異なります。一般的に、赤、橙、黄、緑では1.8~2.2V程度、白、青のLEDは3.2V前後になります。動作テストのときは、定番の赤色ダイオードが使いやすいです。

その他の電子部品

LEDには220Ω〜1kΩ程度の抵抗をつなぎますので、あわせて用意しておいてください。

ブレッドボードやジャンプワイヤをお持ちでない方は揃えておいてください。

開発環境

項目 バージョン
統合開発環境 VS Code x Platform IO
パソコン macOS Big Sur 11.0.1

Macを使用しましたが、WindowsやLinuxでも構いません。また統合開発環境も、Arduino IDEで大丈夫です。

準備

Arduino、可変抵抗、LEDの配線

図のようにArduino、可変抵抗、LEDを配線してください。

Arduinoと可変抵抗の配線
Arduinoと可変抵抗の配線

LEDはPWMに対応しているピンのどれかへつなぎましょう。Arduino Unoの場合は、基板に「〜」のマークが付いています。3番・5番・6番・9番・10番・11番がPWM信号に対応しています。

また、LEDは1kΩ程度の抵抗を直列にはさんで過電流を防止します。

可変抵抗の端子番号

可変抵抗の端子番号は図のようになってます。

可変抵抗の端子番号
可変抵抗の端子番号

可変抵抗の1番をGNDへ、2番をArduinoのAnalogピンの0番へ、3番を5Vへつなぎます。

LEDの極性 アノードとカソードの見分け方

LEDには極性があり、アノードをプラス極、カソードをマイナス極にしてつなぎます。通常、LED端子の長いほうがアノードになってます。もしも、端子の長さが同じで区別のつかない場合は、LEDの内部を覗いてみて、受光素子のついている大きい台座がカソードになります。

LEDの極性 アノードとカソードの見分け方
LEDの極性 アノードとカソードの見分け方

ArduinoでLEDの明るさを制御

可変抵抗でLEDの明るさ制御
可変抵抗でLEDの明るさ制御

こちらの映像のように、可変抵抗の回転によってLEDの明るさが変化するArduinoプログラムをつくっていきます。

Arduinoと可変抵抗でLEDの明るさをコントロール
Arduinoと可変抵抗でLEDの明るさをコントロール

ソースコード

こちらが全体のソースコードになります。

#include <Arduino.h>

int POT = 0;
int LED = 3;

void setup() {
  pinMode(POT, INPUT);
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  float v = analogRead(POT);
  analogWrite(LED, v / 1023.0 * 255.0);
}

プログラムの解説

可変抵抗の分圧されたアナログ電圧値を、analogRead関数で読み取ります。

analogWriteを使って、引数に渡された値を元に、PWM信号をデジタルピンから出力します。ただし、PWMに対応しているデジタルピンを使ってください。

引数に渡すことのできる値は、0〜255までの範囲です。出力されるPWM信号は、デューティ比が0〜100%まで変化します。

こちらの写真は、Arduinoのデジタルピンから出力されたPWM信号を、オシロスコープで観察したものです。デューティ比が50%の時の波形になります。

デジタルピンからPWM信号の観察
デジタルピンからPWM信号の観察

発展

PWM制御ができるようになると、さまざまなデバイスを制御できるようになって、やりたいことの幅が広がります。

MOSFETへの発展

ラズパイとMOSFETでLEDライトのPWM制御
ラズパイとMOSFETでLEDライトのPWM制御

さらに大きな負荷のもの、たとえばモータや複数のLEDがついた電球などを制御したい場合は、MOSFETのようなドライバが必要になります。

Raspberry Piを使った記事になりますが、MOSFETの使い方の参考になると思いますので、興味のある方はご参考になさってみてください。

また、Raspberry PiやArduinoを使わなくてもPWMコントローラを作ることができます。詳しくはこちらの記事をご覧ください。

シリアルLEDの世界

通常のLEDの他に、シリアルLEDという素子があります。シリアルLEDを使うと、LEDの明るさや色をカンタンに制御することができます。

ArduinoとシリアルLEDテープライトで虹をつくってみた
ArduinoとシリアルLEDテープライトで虹をつくってみた

シリアルLEDとは

シリアルLEDとは、ひとつひとつのLEDはRGBフルカラーに対応しており、シリアルLEDを数珠つなぎにして増やすことができる素子です。たったの1本のデータ線で、いくつものLEDを制御できます。ネオピクセルと呼ばれるWS2812BのシリアルLEDが有名です。

詳しくはこちらの記事をご参考になさってみてください。

サーボモータの制御

実は、サーボモータの角度制御もPWM制御で行なっています。

Arduinoでサーボモータの制御
Arduinoでサーボモータの制御

ArduinoのServoライブラリを使えばカンタンにサーボモータを使うことができます。詳しくはこちらの記事をご覧ください。

記事に関するご質問などがあれば、
Twitter または お問い合わせ までご連絡ください。
人気のArduino互換機
Arduinoで人気の周辺パーツ
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容となっています。ほかのArduino書籍と比べて図や説明がとてもていねいで、読みやすかったです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事