注意:すべてのOSOYOO ARDUINO用製品はサードパーティー製品であり、ARDUINOと完全に互換性があります

認可されたオンライン小売業者

AMAZON
amzuk

内容

  1. 紹介
  2. 準備
  3. RGB LED について
  4. サンプル

紹介

RGBカラーモデルは、赤、緑、青の光を様々な方法で加えることで、多彩な色を再現する加法混色モデルです。このモデルの名前は、赤、緑、青の3つの加法的な原色の頭文字から来ています。このレッスンでは、Arduinoを使ってRGB(赤・緑・青)LEDを使用する方法を説明します。

準備

ハードウェア

ソフトウェア

RGB LEDについて

RGB LED はどのように機能しますか?

RGB(赤、緑、青)LEDは、一見普通のLEDと同じように見えますが、通常のLEDパッケージの中には実際には赤、緑、青の3つのLEDがあります。個々のLEDの明るさを制御することにより、ほぼどんな色でも混ぜることができます。

2つのタイプのRGB LED

共通陰極RGB LEDと共通陽極RGB LEDがあります。下の図を参照してください。

3つのLEDは陰極または陽極を共有することができます。これにより、4つのピン(各LED用1つと共通陰極または共通陽極用1つ)を持つRGB LEDが得られます。

4つのピンは、長さで区別することができます。最長のものは、共通陰極または共通陽極LEDである場合に応じて、グラウンド(-)または電圧(+)です。

共通陽極RGB LEDは、最も一般的なタイプです。ここでもそれを使用します。

注意:共通カソードではなく共通アノードのLEDを使用する場合は、長いピンをグラウンドではなく+5Vに接続してください。

異なる色を作成するにはどうすればよいですか?

あなたが好きな色を作ることができる理由は、目には3種類の光受容体(赤、緑、青)があるためです。目と脳は、赤、緑、青の量を処理し、スペクトルの色に変換します。

3つのLEDを使用することで、目をだますことができます。このアイデアは、テレビの液晶画面でも使用されています。そこでは、各ピクセルは隣接する赤、緑、青のドットから構成されています。

赤、緑、青のLEDのうち、1つのLEDを活性化するだけで、それらの3つの色の1つ(赤、緑、青)を作成できます。

たとえば、青を生成したい場合は、青色のLEDを活性化し、他の2つをオフにします。

3つのLEDの明るさを同じに設定すると、光の全体的な色は白になります。青いLEDをオフにし、赤と緑のLEDの明るさを同じにすると、光は黄色に見えます。

赤、緑、青の各部分の明るさを個別に制御することで、好きな色を混色することができます。

黒は、光の欠如というよりも、色ではありません。したがって、LEDで最も近い黒に近づくためには、すべての3つの色をオフにする必要があります。

パルス幅変調(PWM)

LEDの明るさは、通過する電流に比例しますが、マイクロコントローラを使用してLEDを正確に制御することはかなり困難です。幸いなことに、人間の視覚には、視覚的余韻という素晴らしい現象があります。視覚的余韻とは、わずかな瞬間しか見えない画像でも、元の画像が消えたり移動した後も脳が「見えている」と感じる現象です。これは、映画やテレビ番組でも同じ原理であり、急激に変化する映像が脳をだますことで連続した動きを見せることができます。LEDを高速でオンとオフにすることで、PWM信号の  デューティサイクルに基づいて脳が「平均的な」明るさを見るようだますことができます。

Pulse-width modulation (PWM)は、信号のデューティサイクルを変調する技術であり、LEDに送られる平均電力を制御するためにこのアプリケーションで使用されています。次の図では、50%のデューティサイクル、10%のデューティサイクル、90%のデューティサイクルの3つの異なるデューティサイクルを示しています。10%のデューティサイクルの間、信号は各サイクルで論理高レベルにしか短時間いませんが、90%のデューティサイクルの場合、信号の周期のほとんどが論理高レベルで過ごされます。信号の周波数が十分に高速であれば、見える点滅はなく、LEDの明るさは信号のデューティサイクルに比例します。

ここでは、RGB LEDの出力色を制御するために3つのポテンショメータを使用するプロジェクトの2つのプログラムがあります。2番目のプログラムはポテンショメータを無視して、単に色を循環させます。

ポテンショメータを使用したRGBの制御

この例では、3つのポテンショメータを使用してRGB LEDの各ピンを制御して、任意の色を生成します。

接続

回路を以下のように構築します。

パッケージ内の各LEDには、自身の200Ωの抵抗器が必要です。これは、LEDに流れる電流が多すぎるのを防ぐためです。 LEDの3つの正極(1つは赤、1つは緑、1つは青)は、これらの抵抗器を使用してメインボードの出力ピンに接続されます。

注意:RGB LEDコモンカソードを使用している場合は、長いリードをGNDに接続する必要があります。

コードプログラム

上記の操作が完了したら、USBケーブルを使用してOSOYOO Basicボードをコンピュータに接続します。緑色の電源LED(ラベル付けされたPWR)が点灯します。Arduino IDEを開いて、プロジェクトに対応するボードタイプとポートタイプを選択して、次のスケッチをOSOYOO Basicボードにロードします。

int redPin = 11; 
int bluePin = 10; 
int greenPin = 9; 
int redIn = 0; 
int greenIn = 1; 
int blueIn = 2; 
int redVal; 
int greenVal; 
int blueVal; 
void setup() { 
// nothing to do here 
} 
void loop() { 
redVal = analogRead(redIn); 
greenVal = analogRead(greenIn); 
blueVal = analogRead(blueIn); 
// analogRead returns a value between 0 and 1023 
// analogWrite wants a value between 0 and 255 
// That means we need to map the input range to 
// the correct output range. 
redVal = map(redVal, 0, 1023, 0, 255); 
greenVal = map(greenVal, 0, 1023, 0, 255); 
blueVal = map(blueVal, 0, 1023, 0, 255); 
analogWrite(redPin, redVal); 
analogWrite(greenPin, greenVal); 
analogWrite(bluePin, blueVal); 
}

実行結果

アップロードが完了すると、数秒後に以下のような実行結果が表示されます。

自動ソフトウェア制御 RGB LED

この機能は、明るくしたり暗くしたりするカラー変数の1つを更新し、出力と遅延を10ミリ秒更新します。

接続

以下のように回路を構築します:

パッケージ内の各LEDには、過剰な電流が流れるのを防止するためにそれぞれ200Ωの抵抗器が必要です。 LEDの3つの陽極リード(1つは赤、1つは緑、1つは青)は、これらの抵抗器を使用してOSOYOO Basicボードの出力ピンに接続されます。

コードプログラム

上記の操作が完了したら、USBケーブルを使用してOSOYOO Basicボードをコンピューターに接続します。緑色の電源LED(PWRとラベル付けされています)が点灯するはずです。Arduino IDEを開き、プロジェクトに対応するボードタイプとポートタイプを選択します。その後、以下のスケッチをOSOYOO Basicボードにロードします。

int redPin = 11; 
int bluePin = 10; 
int greenPin = 9; 
int redIn = 0; 
int greenIn = 1; 
int blueIn = 2; 
int redVal; 
int greenVal; 
int blueVal; 
void setup() { 
redVal = 255; 
greenVal = 255; 
blueVal = 255; 
update(); 
} 
// This function updates the LED outputs. 
void update() { 
analogWrite(redPin, redVal); 
analogWrite(greenPin, greenVal); 
analogWrite(bluePin, blueVal); 
} 
// This function updates one of the color variables 
// either getting brighter or getting dimmer. 
// It also updates the outputs and delays for 10 milliseconds. 
void color_morph(int* value, int get_brighter) { 
for (int i = 0; i < 255; i++) 
{ 
if (get_brighter) (*value)--; 
else (*value)++; 
update(); 
delay(10); 
} 
} 
void loop() { 
// start out at black (all off) 
color_morph(&redVal, 1); 
// transition to red 
color_morph(&greenVal, 1); 
// transition to yellow 
color_morph(&redVal, 0); 
// transition to green 
color_morph(&blueVal, 1); 
// transition to aqua 
color_morph(&redVal, 1); 
// transition to white 
color_morph(&greenVal, 0); 
// transition to violet 
color_morph(&redVal, 0); 
// transition to blue 
color_morph(&blueVal, 0); 
// transition to black (all off) 
}

実行結果

アップロードが完了して数秒後、以下のような実行結果が表示されます:

拡張例 – RGB LED カラーコントロール

RGBは赤、緑、青の色チャンネルを表し、業界標準の色です。RGBは、3つのチャンネルを変更して重ね合わせることで、16,777,216の異なる色を作成することができます。表示される色が完全に自然な色とは異なると言う場合、肉眼で区別することはほとんど不可能です。

赤、緑、青の3つのカラーチャンネルのそれぞれには、255段階の明るさがあります。 3つの原色がすべて0の場合、「LEDライト」は最も暗くなり、つまり消灯します。3つの原色がすべて255の場合、「LEDライト」は最も明るくなります。 3つの原色が放射する光を重ねると、色が混ざり合います。ただし、明るさはすべての明るさの合計に等しく、混合するほどLEDが明るくなります。 このプロセスは加算混合として知られています。

この実験では、これまでに学習してきた方であれば、PWMの基本的な理解を持っていると思います。ここでは、0から255の値をRGB LEDの3つのピンに入力し、LEDに異なる色を表示させます。

接続

回路の接続方法は以下の通りです。

プログラム

上記の操作が完了したら、USBケーブルを使用してOSOYOO Basicボードをコンピュータに接続します。緑色の電源LED(PWRと表記されています)が点灯するはずです。Arduino IDEを開き、プロジェクトに対応するボードタイプとポートタイプを選択してください。次に、以下のスケッチをOSOYOO Basicボードにアップロードしてください。

const int redPin = 11; // R connected to digital pin 11  
const int greenPin = 9; // G to digital pin 10  
const int bluePin = 9; // B connected to digital pin 9  
void setup() { 
pinMode(redPin, OUTPUT); // set the redPin to be an output  
pinMode(greenPin, OUTPUT); // set the greenPin to be an output  
pinMode(bluePin, OUTPUT); // set the bluePin to be an output  
} 
void loop() // run over and over again  
{ 
// Basic colors:  
color(255, 0, 0); // turn the RGB LED red  
delay(1000); 
color(0,255, 0); // turn the RGB LED green  
delay(1000); 
color(0, 0, 255); // turn the RGB LED blue  
delay(1000); 
// Example blended colors:  
color(255,0,252); // turn the RGB LED red  
delay(1000); 
color(237,109,0); // turn the RGB LED orange  
delay(1000); 
color(255,215,0); // turn the RGB LED yellow  
delay(1000); 
color(34,139,34); // turn the RGB LED green  
delay(1000); 
color(0,112,255); // turn the RGB LED blue  
delay(1000); 
color(0,46,90); // turn the RGB LED indigo  
delay(1000); 
color(128,0,128); // turn the RGB LED purple  
delay(1000); 
} 
/******************************************************/ 
void color (unsigned char red, unsigned char green, unsigned char blue) 
// the color generating function  
{
 analogWrite(redPin, red); 
analogWrite(greenPin, green); 
analogWrite(bluePin, blue); 
}

実行結果

アップロードが完了して数秒後、RGB LEDが赤、緑、青の順に循環的に点滅し、その後赤、オレンジ、黄、緑、青、藍、紫と表示されるはずです。