フルカラーLEDモジュールをつかう

秋月電子さんで、フルカラーのLEDモジュールを購入しました。表面実装用のLEDチップのDIP化キットになります。

データシートは下のリンクになります。

セイワ3528チップLED PDFカタログ

ピン配は下のとおり。

全部で6端子でています。①~③はGNDで、コモンではなく別々に出てます。

データシート

青色と緑色は順電圧が約3V, 赤色が1.8Vです。電流は30mAが定格。

LEDの抵抗値の計算

点灯テストに使うマイコンはArduinoにします。電流は光ればいいので、10mA程度を目標にします。

 青と緑 抵抗値 R = (電源5V – 順電圧 3.0V ) / (0.01 A ) = 200 ohm

赤   抵抗値 R = (電源5V – 順電圧 1.8V ) / (0.01 A ) = 175 ohm

面倒なので、抵抗は200ohmで共通にすると、赤色LEDには16mAぐらい流れるはずです。

回路

Arduinoのデジタル出力にこんな感じでつないでみます。明るさ調整をするためPWM出力がつかえるデジタル出力#3,#5,#6ピンをそれぞれ赤、青、緑のLEDのアノード側に接続します。

実際のLEDモジュールは下のような感じで、取りつけました。特に意味はないですが、オン・ザ・レゴ。ユニバーサル基板をレゴのサイズに合わせてカットして、その上にモジュールをハンダしています。

PWMで3色をランダムに光らす

サンプルコードは下のとおりです。

int ledPinRed   = 6; // LED REDはピン6に接続
int ledPinBlue  = 5; // LED BLUEはピン5に接続
int ledPinGreen = 3; // LEDはピン3に接続

int R = 0;  // DUTYを指定、0-255の数値
int B = 0;
int G = 0;
int t_inter=100;

void setup() {
  Serial.begin(9600); // 9600bpsでシリアルポートを開く
  randomSeed(analogRead(0)); // 未接続ピンのノイズを利用
}

void loop() {
  R=random(255);
  B=random(255);
  G=random(255);
  t_inter=random(200,2000);
  
  analogWrite(ledPinRed, R);
  analogWrite(ledPinBlue, B);
  analogWrite(ledPinGreen, G);

  Serial.print(String(R)+",");
  Serial.print(String(G)+",");
  Serial.println(String(B));
  
  delay(t_inter);

PWM出力

ledPinRedにPWM出力するピン番号を指定して、Rは0-255の整数値をいれます。0がDuty0%で、255がDuty100%になります。

analogWrite(ledPinRed, R);

乱数の生成

random(255)で0-255の整数をランダムに返します。random(100,255)だと100-255の範囲の整数を返します。

R=random(255);

ただ、この関数で生成される乱数列は同じなので、リセットしても全く同じパターンしか出力されません。乱数列の初期値を変えるために下の関数を実行します。

 randomSeed(analogRead(0))

analogread(0)で0番ピンのアナログ信号を取得する関数ですが、何もつながっていないので、ノイズ信号を拾います。これを利用して、乱数列の参照するポイントをリセット毎に変化するようにしてます。

LEGOハウスを灯しました。

フルカラーLED🙌

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です