Tags:

お手軽なLEDとArduinoを使った、色が変わる本棚

By 文系なArduino 2014年6月22日日曜日
LEDとArduinoを使った、色が変わる本棚


デスクの上に収納が欲しかったところから始まったのですが、ちょっと特別なことをしたいと思いました。
素敵なテープLEDを使って、個々に取り付けし、彩りを付けられないか。
シェルフ自体の説明については次のステップでお話ししますが、シェルフの飾り付けに必要な物は以下の通りです。



ステップ1:本棚の簡単なご説明
ちなみに、シェルフを組立てるために使ったのは以下の物です。
「Amazon」や「home depot」で買いました。
  • 本棚  
  • 4×2のキューブシェルフ 
  • 3×2のキューブシェルフ (シェルフの底が机の面に接しています)
部品について詳しいことは述べませんが、重さに十分耐える金具で、各本棚を壁に固定しております。
誰かにご機嫌を取って(または彼女にでも)手伝ってもらってください。
金具は目立たない様にするために、箱形本棚の隅っこに隠れるように取り付けると良いかもしれません。

ステップ2:テープLEDを貼る


配置したい場所の数分、テープLEDをはさみでカットします。
筆者の場合、14個の8素子テープLED(= 8インチ)ができました。
ボックスシェルフに、これらを貼付けるのですが、以下の点にご注意ください。
  • テープLEDは、非常に明るく点灯するため目に直接光が入らないようにしたいでしょう。
筆者のボックスシェルフは、目線より上に位置するので、キューブの底面部分にテープLEDを貼っています。
床にシェルフを置くのであれば、キューブの天井部分に貼れば、光が目に入らずに済むでしょう。
  • シェルフの手前の端部分にテープLEDを貼った方が良いでしょう。
なぜなら、ボックスシェルフに一杯物が入ったとき、LEDの光を遮らないようにするためです。
  • テープLEDの色彩が変わる方向に気をつけてください!!
テープLED上の矢印は、Arduino 側から、テープLEDの端へ、色彩が変わってゆく方向を示しています。
LED「WS2812」は、各々チップICが載っていまして、800kHzの速さでビット信号(0, 1の情報)を受け取っています。
電源投入後、1番目のLEDは、3バイト(24ビット)分の信号を受け取った後、その分をビット信号配列(ビットフロー)から取り除きます。
3バイト信号により、1番目のLEDの色を設定してから、残りのビット信号配列を、次のLEDに引き渡します。
2番目以降のLEDも、上記と同様の処理を行なってゆきます。
このように各々のLEDが、入力・出力を持っているため、方向という問題が出てくるのです。
このような問題があるので、どの方向から Arduino よりテープLEDに信号を与えるか、そして、どの方向へテープLEDの光を遷移させるかを、事前に考えなければならないのです。
筆者の場合はとても単純でして、一番遠いキューブにArduino を隠しました。部屋の隅っこにある電源コードがArduino の近くにあるので簡単に電源が取れます。
まずは下段シェルフのキューブの色彩が次々と変わり、上に行って、上段シェルフのキューブの色彩が次々と変わってゆきます。


ステップ3:テープLEDの接続端子に予備ハンダ



テープLEDの各接続端子に、ハンダの玉を付けてください(予備のハンダ付けをします)。 
筆者の場合はテープLEDが14個ありましたので、各々のテープLEDは両側に3つの端子(GND、5V、シグナル)があるため、84か所に予備ハンダが必要になってしまいます。
ただし、次のステップで作業が84倍簡単になること請け合いです!
ステップ4:テープLEDの接続

  1. ワイヤーストリッパーで、ワイヤーの端から2ミリほど被覆を剥きます。
  2. 被覆を剥いた部分に、予備ハンダします(ハンダを少し乗せたハンダこてを、ワイヤー部分に当て、ワイヤーにハンダを乗せます)。
  3. テープLEDの右側のGND端子に、ワイヤーをハンダ付けします。
  4. 予備ハンダをしてありますので、ワイヤーを接続端子に乗せて、その上からハンダこてを押してあげるだけでハンダ付けができます。
  5. ワイヤーを引っ張りながら、接続先のもう片方のテープLED(のGND端子)に位置合わせして、正確にワイヤーをカットします。
  6. 2ミリほど被覆を剥いて、予備ハンダをし、接続端子にハンダ付けをします。
  7. こうして、互いのテープLEDは、ワイヤーがたるむこと無く配線されることになります。
5V端子、シグナル端子についても同様に作業してください。
ステップ5:Arduinoへの接続と、スケッチ(プログラムコード)




adafruit の立派なWebサイトでは、テープLED(「Neo-Pixel」というブランドです)にArduinoを接続する際、とても役に立つ方法が紹介されております。
大変分かりやすいので、ご一読をお勧めします。
  • 1番目のLEDのシグナル端子(DIN)に6番ピン(下記のサンプルスケッチで6番ピンを使用)を接続します。
  • 1番目のLEDのGND端子にArduinoのGNDピンを接続します。
  • テープLEDに5V電源を使って電源を投入し、USB充電器に Arduino を接続します。
  • 【警告】Arduinoを経由してテープLEDに電源供給する場合は、Arduinoの+5Vピンを使用しないでください。
+5Vピンは、Arduino 基板上のデリケートな回路が関係している他、テープLEDに流れる電流でArduino が焼損する恐れがあります。
代わりに、Vinピンを使用することができるかと存じます。

1A以上の電流をかけようとしている場合(LED 1素子あたり20~50mA)は、テープLEDに5V電源を直接接続します。

テープLEDのGNDは、Arduino のGNDと共有する必要があります。

シェルフのボックスごとに、色彩をスローモーションで変化させるためのスケッチ(プログラムコード)を紹介します。
これは「Neo_Pixel」ライブラリーのサンプルスケッチから頂戴し、作り替えております。
--------------------------------------------------------------------------------
#include <Adafruit_NeoPixel.h>

#define PIN 6

// Parameter 1 = テープ上のLED素子数
// Parameter 2 = Arduino ピン番号 (おおかた利用可)
// Parameter 3 = LED素子タイプフラグ(必要に応じて追加)
//   NEO_KHZ800  800 KHz ビット信号 (LED「WS2812」を使用したほとんどの NeoPixel 品)
//   NEO_KHZ400  400 KHz ビット信号 (旧い v1 (v2でない) FLORA, LEDドライバー「WS2811」)
//   NEO_GRB     LED素子はGRBビット信号で接続 (ほとんどの NeoPixel 品)
//   NEO_RGB     LED素子はRGBビット信号で接続 (v1 FLORA,v2 ではありません)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(8*14, PIN, NEO_GRB + NEO_KHZ800);

// 【重要】NeoPixelが焼損しないようにするため、1000μFのコンデンサーをLED電源に並列配線し、
// 300~500Ωの抵抗器を1番目のLED素子のDIN端子とArduinoの間に直列配線します。
// Arduino と1番目のLED素子は出来るだけ近接させます。
// 配線作業は、電源投入済みの回路では行なわないでください。
// もし、どうしてもそれが必要な場合、GNDから先に配線してください。

void setup() {
  strip.begin();
  strip.show(); // 全てのLED素子を"off" 
}

void loop() {
  rainbowCycle(20);
}

void rainbowCycle(uint8_t wait) {

  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((((i) * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// 0 to 255の値を入力すると、RGB値を戻します
// 色は r - g - b - r …と変わってゆきます
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

――――――――――――――――――――――――――――――――――――――――

<こちらの記事はhttp://www.instructables.com/id/Color-changing-box-shelves-with-LED-strips-and-Ard/を日本語に意訳したものです>

Post Tags:

文系なArduino

Aduinoとraspberry PiとWebサービスで食べている「文系」です。マレーシアとシンガポールを拠点としてITコンサルタントとしても活躍し、中国語教師としても活躍中の身でもあります。IT農業をシンガポールで始めようと計画中です。

No Comment to " お手軽なLEDとArduinoを使った、色が変わる本棚 "