2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

« 親指フォトテルミン(Japanino & arduino) | トップページ | トレインドリンク第2弾! »

2010年7月13日 (火)

フルカラーLEDイルミネーションランプ (Japanino & arduino)

フルカラーLEDを手に入れたので、早速ランダムに色が変化していく照明をつくってみました。

Img_4778

シェードは100円ショップで手に入れた、中に蛍光スティックを入れて光らせるボールを使っています。

フルカラーといっても、3色が明らかに識別できる程度のLEDですので、色むらが出来てしまいますが、暗いところで見るとそれも奇麗なので良しとします。

スケッチは下の通りです。

きっと、もっときれいに色を変化させるアルゴリズムがあるだろうと思うのですけれど、今のところ、私にはこの安直な方法が精一杯です =^・^=

なかなか奇麗で眺めていてあきないけれど、動画に撮るとカメラが安物のせいか色の変化があまり奇麗に見えないのが残念です。 

音声入力と組み合わせて、色彩の変化で音量を表示するようなオーディオメーターにしたら面白いかもしれません。

追記:

ランダムに色を変えながらフェードインフェードアウトするスケッチもつくってみました。

ゆったりした感じがなかなかいいのですが、LEDというの は、一定以上の電圧になると明るさの変化を感じにくくなるので、フェードインフェードアウトがスムーズにみえないのが難点です。

スケッチは下のとおりです。

-----------------------------------------------------------

スケッチその1:ランダム

// No.11b Full colour LED turning colour, created 12 June 2010

#define ledPinRed 11
#define ledPinGreen 10
#define ledPinBlue  9
float rad = 3.141592653589793238462643383279;
//産医師異国に向こう、産後役無く産婦み社に、虫散々闇に鳴く
int Red = 0;
int Green = 0;
int Blue = 0;

void setup() {
  pinMode(ledPinRed, OUTPUT);
  pinMode(ledPinGreen, OUTPUT);
  pinMode(ledPinBlue, OUTPUT);
}

void loop(){
  rad = rad + 0.05;
  int Red = abs(sin(rad) * 255);
  int Green = abs(sin(rad * 0.85) * 255);
  int Blue = abs(sin(rad * 0.7) * 255);
  analogWrite(ledPinRed, Red);
  analogWrite(ledPinGreen, Green);
  analogWrite(ledPinBlue, Blue);
  delay(200);
}

スケッチその2:フェードインフェードアウト

// No.11a. Full colour LED blinking, created 11 June 2010

#define ledPinRed 11
#define ledPinGreen 10
#define ledPinBlue  9
int sRed = 0;
int sGreen = 0;
int sBlue = 0;
int Red = 0;
int Green = 0;
int Blue = 0;

void setup() {
  pinMode(ledPinRed, OUTPUT);
  pinMode(ledPinGreen, OUTPUT);
  pinMode(ledPinBlue, OUTPUT);
}

void loop(){
  int sRed = (random(128) *2 - 1) * 0.7;
  int sGreen = (random(128) *2 - 1) * 0.7;
  int sBlue = (random(128) *2 - 1) * 0.7;
  fadeBlink();
}

void fadeBlink(){
  for (int i = 0; i < 128; i++){
    Red = sRed * i / 128;
    Green = sGreen * i / 128;
    Blue = sBlue * i / 128;
    LEDanalogWrite();
    delay(100);
  }
  for (int i = 128; i > 1; i--) {
    Red = sRed * i / 128;
    Green = sGreen * i / 128;
    Blue = sBlue * i / 128;
    LEDanalogWrite();
    delay(100);
  }
  Red = 0;
  Green = 0;
  Blue = 0;
  LEDanalogWrite();
  delay(1000);
}

void LEDanalogWrite() {
  analogWrite(ledPinRed, Red);
  analogWrite(ledPinGreen, Green);
  analogWrite(ledPinBlue, Blue);
}
 

« 親指フォトテルミン(Japanino & arduino) | トップページ | トレインドリンク第2弾! »

コメント

はじめまして。arduinoでチカチカ以外のすごいっぽいことやってみたい!wと思い検索していきつきましたw
プログラムをお借りして早速やってみたのですがランダムいいですね~!LEDますます好きになりましたw一日中眺めてても飽きないですね・・
ありがとうございました!今度は可変抵抗を使って自分で制御できるのをつくってみようと思います!

ななしんさま
フルカラーLED、きれいですよね。
いまは、100円ショップなどでも色が変化するランプが売られていますが、自分でプログラミングして表情の変化をつけるのは楽しいものですね。
面白い作品ができたら、ぜひ教えてください。

コメントを書く

(ウェブ上には掲載しません)

« 親指フォトテルミン(Japanino & arduino) | トップページ | トレインドリンク第2弾! »