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

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の明るさをコントロール

ソースコード

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

cpp
#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への発展

Raspberry PiとMOSFETでLEDライトのPWM制御
Raspberry Piと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ライブラリを使えば簡単にサーボモータを使うことができます。詳しくはこちらの記事をご覧ください。

関連記事

 
最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

人気のArduino互換機
Arduinoで人気の周辺パーツ
あると便利な道具
Arduinoのオススメ参考書

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

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

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

関連記事