単一のRGBLEDを使用してさまざまな色を生成し、部屋の隅をより魅力的にすることができたらどうでしょうか。だから、これは部屋の光が変化したときに色を変えることができるシンプルなArduinoベースの混色ランプです。そのため、このランプは部屋の光の状態に応じて自動的に色が変わります。
すべての色は、赤、緑、青の色の組み合わせです。したがって、赤、緑、青の色を使用して任意の色を生成できます。そこで、ここではPWM、つまりLDRの光の強度を変化させます。これにより、RGB LEDの赤、緑、青の色の強度がさらに変化し、さまざまな色が生成されます。
以下の表は、デューティサイクルのそれぞれの変化による色の組み合わせを示しています。
必要な材料:
- 1 x Arduino UNO
- 1xブレッドボード
- 3 x220オーム抵抗器
- 3 x1キロオームの抵抗器
- ジャンパー線
- 3 x LDR
- 3 xカラーストリップ(赤、緑、青)
- 1 x RGB LED
LDR:
私たちは、使用する フォトレジスタ (または 光依存抵抗、 LDR、または 光導電セルを、この回路ではここに)。 LDRは半導体材料でできており、感光性を備えています。これらのLDRまたはフォトレジスタは、「光伝導性」の原理に基づいて動作します。この原理が言うことは、光がLDRの表面に当たると(この場合)、要素のコンダクタンスが増加する、つまり、光がLDRの表面に当たるとLDRの抵抗が低下するということです。 LDRの抵抗が減少するこの特性は、表面に使用される半導体材料の特性であるために達成されます。
ここでは、3つのLDRセンサーを使用して、RGB Led内の個々の赤、緑、青のLEDの明るさを制御しています。ArduinoでLDRを制御する方法について詳しくは、こちらをご覧ください。
RGB LED:
ある 二種類の RGB LEDは、一方がカソードコモンタイプ(共通負)であり、他方は、共通の陽極型(共通肯定)タイプです。CC(CommonCathodeまたはCommonNegative)には、各端子が色を表す3つの正の端子と、3色すべてを表す1つの負の端子があります。
この回路では、CA (共通アノードまたは共通正)タイプを使用します。コモンアノードタイプでは、RED LEDをオンにする場合は、RED LEDピンを接地し、コモンプラスに電力を供給する必要があります。同じことがすべてのLEDにも当てはまります。RGBLEDとArduinoのインターフェースについてはこちらをご覧ください。
回路図:
このプロジェクトの完全な回路図は上に示されています。回路図に示されている+ 5Vとアース接続は、Arduinoの5Vとアースピンから取得できます。Arduino自体は、ラップトップから、または12Vアダプターまたは9Vバッテリーを使用してDCジャックを介して電力を供給できます。
PWMを使用してRGBLEDの輝度を変更します。PWMについて詳しくは、こちらをご覧ください。Arduinoを使用したPWMの例を次に示します。
- ArduinoUnoによる可変電源
- Arduinoを使用したDCモーター制御
- Arduinoベースのトーンジェネレータ
プログラミングの説明:
まず、以下に示すように、すべての入力ピンと出力ピンを宣言します。
constバイトred_sensor_pin = A0; constバイトgreen_sensor_pin = A1; constバイトblue_sensor_pin = A2; constバイトgreen_led_pin = 9; constバイトblue_led_pin = 10; constバイトred_led_pin = 11;
センサーとLEDの初期値を0として宣言します。
unsigned int red_led_value = 0; unsigned int blue_led_value = 0; unsigned int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned int blue_sensor_value = 0; unsigned int green_sensor_value = 0; void setup(){ pinMode(red_led_pin、OUTPUT); pinMode(blue_led_pin、OUTPUT); pinMode(green_led_pin、OUTPUT); Serial.begin(9600); }
ループセクションでは、 analogRead()を 使用して3つのセンサーの出力を取得します 。 関数を作成し、3つの異なる変数に格納します。
void loop(){ red_sensor_value = analogRead(red_sensor_pin); delay(50); blue_sensor_value = analogRead(blue_sensor_pin); delay(50); green_sensor_value = analogRead(green_sensor_pin);
デバッグ目的でこれらの値をシリアルモニターに出力します
Serial.println( "生のセンサー値:"); Serial.print( "\ t赤:"); Serial.print(red_sensor_value); Serial.print( "\ t青:"); Serial.print(blue_sensor_value); Serial.print( "\ t緑:"); Serial.println(green_sensor_value);
センサーから0-1023の値を取得しますが、Arduino PWMピンの出力には0-255の値があります。したがって、生の値を0〜255に変換する必要があります。私たちは4で生の値を分割する必要があることについてはOR単に私たちは、これらの値を変換するためのArduinoのマッピング機能を使用することができます。
red_led_value = red_sensor_value / 4; //赤色LEDを定義します blue_led_value = blue_sensor_value / 4; //青色LEDを定義します green_led_value = green_sensor_value / 4; // GreenLedを定義します
マップされた値をシリアルモニターに出力します
Serial.println( "マップされたセンサー値:"); Serial.print( "\ t赤:"); Serial.print(red_led_value); Serial.print( "\ t青:"); Serial.print(blue_led_value); Serial.print( "\ t緑:"); Serial.println(green_led_value);
AnalogWrite() を使用して RGBLEDの 出力を設定します
AnalogWrite(red_led_pin、red_led_value); //赤色LEDを示します analogWrite(blue_led_pin、blue_led_value); //青色LEDを示します analogWrite(green_led_pin、green_led_value); //緑を示します
Arduinoカラーミキシングランプの動作:
3つのLDRを使用しているため、これらのセンサーに光が入射すると、抵抗が変化し、その結果、センサーの入力ピンとして機能するArduinoのアナログピンの電圧も変化します。
これらのセンサーで光の強度が変化すると、RGBのLEDがそれぞれ抵抗量の変化に伴って発光し、PWMを使用したRGBLEDの混色が異なります。