Arduinoスターターキットで最も一般的なモジュールの1つであるRGB LEDは、Arduinoの4本のピンだけで、あらゆる色を作り出すことができます。このチュートリアルでは、このモジュールの2つの使用方法を紹介します。

RGB LEDモジュールとは?

RGB LEDモジュールは、赤、緑、青の3色を発光できる特殊なLEDライトを使用します。しかし、どれを点灯させるか、それぞれの明るさを混ぜ合わせることで、思い通りの色を作ることができるのです。

ArduinoボードでRGB LEDモジュールを点灯させるには、2つの方法があります。通常の方法は、Arduinoのアナログピンを使ってPWM信号をモジュールに送る方法です。これにより、各色を混ぜることができ、RGB LEDを完全に制御することができます。

一方、もうひとつの方法(デジタル)は、Arduinoにシールドを取り付けるようにモジュールを取り付けて、ピン11、12、13、およびGNDを使用することです。この場合、各ピンのジャンパー線が不要になるため省スペースになりますが、LEDの色合いや明るさを細かく制御することができます。さらに、この設定は、モジュールがArduinoボードに適切にフィットするピンを持っている場合にのみ機能します。

RGB LEDの仕組み

この時点で、1つのRGB LEDモジュールがどのようにして3色に発光するのか不思議に思われるかもしれません。RGB LEDは、実際には1つのLEDではなく、3つの小さなLEDが大きなLEDの中に入っていることを知ると、驚かれるかもしれません。これらのミニLEDは、同じ接地ピンを共有しており、RGB LEDの4つのピンの中で最も長くなっているはずです。

このピンは、RGB LEDの4本のピンの中で最も長いはずです。 ブレイクアウトボードにモジュールではなく、素のRGB LEDがある場合は、各色のピンに抵抗を付けることで、モジュールに近いものを作ることができます。抵抗値はメーカーごとに異なりますが、1脚あたり220Ωが無難です。

ヒント:リレーモジュールを使ってArduinoで電球に電力を供給する方法を学びましょう。

必要なもの

このプロジェクトを始めるには、以下のものが必要です。

ハードウェア

  • HW-479 RGB LED モジュール
  • ジャンパー線(アナログ方式の場合)
  • Arduino

ソフトウェア

  • Arduino IDEまたは
  • Visual Studio Code の PlatformIO 拡張機能

デジタル方式でRGB LEDモジュールを使用する方法

この方法は、13ピンの隣にGNDピンがあるArduinoボードでのみ有効です。例えば、Uno、Duemilanove、Mega、Leonardoがそうです。非公式のArduinoベースのマイコンボードをお持ちの場合は、メスのピンヘッダを使用していることを確認してください。RGB LEDモジュールは通常オス型ヘッダです。

コードの準備

  1. まず、ピンを定義します。11は青、12は緑、13は赤のピンです。
const int blueLED = 11;
const int greenLED = 12;
const int redLED = 13; const int greenLED = 12; const int redLED = 13;
  1. setup()` で、これらのピンを出力ピンとして定義します。
void setup() {
  pinMode(blueLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(redLED, OUTPUT);
}
  1. loop()`で、1つのピンに電源を入れ、1000ミリ秒(1秒)の間コードを一時停止し、すべてのピンに電源が入るまで次のピンをオンにします。最後に、1つずつ電源を切ります。
void loop() {
  digitalWrite(blueLED, HIGH);
  delay(1000);
  digitalWrite(greenLED, HIGH);
  delay(1000);
  digitalWrite(redLED,HIGH)。
  delay(1000)。
  digitalWrite(blueLED,LOW)。
  delay(1000)。
  digitalWrite(greenLED,LOW)。
  delay(1000)。
  digitalWrite(redLED,LOW)。
  delay(1000);
}

これはコードの完全版です。

const int blueLED = 11;
const int greenLED = 12;
const int redLED = 13;
 
void setup() {
  pinMode(blueLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(redLED、OUTPUT);

 
void loop() {
  digitalWrite(blueLED, HIGH);
  delay(1000);
  digitalWrite(greenLED,HIGH)。
  delay(1000)。
  digitalWrite(redLED,HIGH)。
  delay(1000)。
  digitalWrite(blueLED,LOW)。
  delay(1000)。
  digitalWrite(greenLED,LOW)。
  delay(1000)。
  digitalWrite(redLED,LOW)。
  delay(1000);
}

回路の構築

回路は簡単です。RGB LEDモジュールの"-“ピンをArduinoのGNDピンに向けます。正しく合わせれば、他の3つのピンは13,12,11ピンに入るはずです。

動作させる

Arduinoにコードをアップロードすると、RGB LEDの色が1秒ごとに変化するのがわかると思います。

このコードを編集して、delay()関数の前にHIGH`にすることで、2色またはすべての色を同時に表示させることができます。

digitalWrite(redLED, HIGH);
digitalWrite(greenLED, HIGH);
delay(1000);

マイコンを始めたばかりですか?Arduino UnoとESP32の比較をご覧になって、どちらを購入するか決めてください。

PWM方式によるRGB LEDモジュールの使用方法

PWM方式は、従来の方式に比べ、より細かい制御が可能です。LEDの色は、ピン9、10、11間のデューティサイクルの比率に依存します。ある色に向かう比率が高いほど、その色が強く混ざります。

また、デューティーサイクルを上げると、LEDの輝度が上がります。同じ比率ですべてのデューティサイクルを上げると、非常に明るいRGB LEDになります。

コードの準備

  1. ピンを定義します。9は青、10は緑、11は赤のピンを定義します。
const int blueLED = 9;
const int greenLED = 10;
const int redLED = 11;
  1. これらを出力ピンにします。
void setup() {
  pinMode(blueLED, OUTPUT);
  pinMode(greenLED、OUTPUT);
  pinMode(redLED、OUTPUT);
}
  1. loop()では、ピンのデューティーサイクルを制御するために、digitalWrite()の代わりにanalogWrite()`関数を使用します。このプロセスは、Pythonの代わりにC++を使っていることを除けば、Raspberry PiでPWMを使ってサーボモーターを制御するのと似ています。
void loop() {
  analogWrite(greenLED, 25);
  analogWrite(blueLED, 50);
  delay(250);
  analogWrite(greenLED,50)。
  delay(250);
  analogWrite(greenLED, 100);
  delay(250)。
  analogWrite(greenLED,150)。
  delay(250);
  analogWrite(greenLED、125)。
  delay(250)。
  analogWrite(greenLED、80)。
  delay(250);
  analogWrite(greenLED、40);
  delay(250);
  analogWrite(greenLED,20)。
  delay(250);
  analogWrite(greenLED、0)。
  delay(250);
}

回路の構築

ジャンパー線を使って、B,G,Rピンを9,10,11ピンと接続します。GNDまたはピンをArduinoのGNDピンのいずれかに接続します。

動作させる

今回は、緑と青の2色しか使っていないことにお気づきでしょうか。これは、比率を変えることでRGB LEDの全体的な色に与える影響をわかりやすくするためです。LEDは深い青に見え、ターコイズブルーに変化した後、緑がかったシアンにクライマックスし、再び深い青にフェードインしていきます。

また、11番ピンをアナログピンとして使い、青ピンの明るさをコントロールすることで、先ほどの方法と組み合わせることができます。

他にも楽しいプロジェクトに挑戦してみませんか?Raspberry Piを使ってArduino Unoを点滅させる方法はこちらです。

よくある質問

RGB LEDモジュールに抵抗を追加するとどうなりますか?

RGB LEDモジュールには、すでに抵抗が内蔵されています。もし別のものを追加したら、同じ量の電圧と電流で動作しているにもかかわらず、本来あるべき状態よりも暗くなるだけでしょう。

LEDはどのように発光するのですか?

LEDは、エレクトロルミネッセンスと呼ばれる、電磁波の影響を受けると発光する性質を持つ物質によって光を発生します。LEDはガリウム系半導体でできており、熱を発する代わりに光を発します。

LEDはなぜ逆向きに配線すると光らないのか?

LEDはダイオードなので、light-emitting diodesと呼ばれています。すべてのダイオードは、片側から電気を通し、反対側からは通しません。カソードとアノードの部分は、通常2つの異なる材料でできており、押し合うと、急な坂道を走る車のように、電子がより多くのエネルギーを使って反対方向に進むよう強制されるのです。

なぜ、テレビには赤色LEDが使われているのですか?

赤色LEDは、同じ大きさの他の色のLEDと比較して、より少ないエネルギーで明るく照らすことができるため、テレビメーカーが製品の省エネ化を図る際に、表示用LEDとして最適なのです。

すべての画像はTerenz Jomar Dela Cruzによる。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。