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

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

この記事では、Arduinoで可変抵抗(ボリューム抵抗)を使ってLEDライトの明るさをコントロールする方法を解説する。

開発環境

項目バージョン
ArduinoデバイスArduino Uno Rev3
可変抵抗100kΩ(Bカーブ)
統合開発環境VS Code x Platform IO
パソコンmacOS Big Sur 11.0.1

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

ArduinoはArduino Uno Rev3を使用したが、皆さんはお好きなArduinoでどうぞ。

Arduinoと可変抵抗の配線

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

可変抵抗の配線
可変抵抗の配線

可変抵抗の1番をGND、2番をArduinoのAnalogピンの0番、3番を5Vへ繋ぐ。また、LEDは1kΩ程度の抵抗を介してDIGIALピンの3番へ繋いでいる。

LEDの明るさはPWMでコントロールするため、PWMに対応しているピン(〜のマークが付いている3・5・6・9・10・11)のどれかへ繋ぐこと。

LEDの明るさをコントロールするプログラム

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

可変抵抗を使って、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);
}

プログラムの解説

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

可変抵抗の分圧された電圧をanalogRead関数で読み取って、それに応じてLEDの明るさを変化させている。

PWMに対応しているデジタルピンでは、アナログ出力の関数analogWriteを使って簡単にPWM信号を出力することができる。数値は0〜255までの範囲で指定でき、デューティ比が0〜100%まで変化する。写真は、実際にデジタルピンからの出力をオシロスコープで観察したものだ。デューティ比50%の時の波形である。

記事に関するご質問などがあればTwitterへお返事ください。
この記事で紹介した商品
人気のArduino互換機
Arduinoで人気の周辺パーツ
Arduinoのオススメ参考書

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

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

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

関連記事