サイトロゴ

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

著者画像
Toshihiko Arai

こんなこと、やります。 - Arduinoと可変抵抗でアナログ電圧値を読み取る - 電圧値に応じてLEDの明るさをPWM制御でコントロールする

準備

Arduino、可変抵抗、LEDの配線

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

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の内部を覗いてみて、受光素子のついている大きい台座がカソードになります。

ArduinoでLEDの明るさを制御

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

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

#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制御ができるようになると、さまざまなデバイスを制御できるようになって、やりたいことの幅が広がります。

MOSFETへの発展

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

シリアルLEDの世界

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

シリアルLEDとは

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

サーボモータの制御

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

ArduinoのServoライブラリを使えば簡単にサーボモータを使うことができます。

関連記事