光る剣を作ってみよう

投稿者:

こんにちは、小室です。もうすぐゴールデンウィーク!こどもの日がやってくる!というわけで、息子のために工作してみました。ベタに光る剣です。ベタ中のベタですが、光るものは子供が喜ぶので。

flora_neopixel_sword

出来上がりは画像の通り。ピカピカピカピカ光ります。

材料

このプロジェクトにははんだ付けが必要です。はんだごてやハンダをお持ちでない方は、導電糸で代用することもできます。その場合は縫い付ける布が必要です。また、秋葉原にあるはんだづけカフェでははんだごてやニッパー等の工具を無料で貸し出しています。鉛フリーのはんだも売っています。そちらもご利用くださいね。

作り方

まずはソフトウェアの準備から始めます。

1. PCにAdafruitのArduino互換機向けのArduino IDEをインストールする

Floraをスムーズに使うなら、Adafruitが出しているArduino互換機向けのArduino IDEをインストールするのが簡単です。Adafruitのページから、お手持ちのPCの環境にあったものをダウンロードして下さい。ダウンロードしたら解凍して、IDEを立ち上げておきましょう。

2. Adafruit NeoPixelライブラリをインストールする

GitHubのAdafruit_NeoPixel libraryページからzipファイルをダウンロードして下さい。ダウンロードが終わったら解凍し、できたフォルダの名前を「Adafruit_NeoPixel」に変えて下さい。名前を変えたフォルダを1でダウンロードしたArduino IDEのライブラリーフォルダに移動してインストールして下さい。

※ライブラリーのインストールするのが初めてという方は、多分ここが一番難しいです。以下に大まかな手順をあげておきます。

  1. 1でArduino IDEを立ち上げましたね。そのとき、PCのDocumentsフォルダの中に自動的に「Arduino」という名前のフォルダが作られます。そのフォルダの中に小文字のアルファベットで「library」という名前のフォルダを作って下さい。
  2. 先ほど名前を変えた「Adafruit_NeoPixel」フォルダを今作った「library」フォルダの中に移動してください。
  3. 一度Arduino IDEを終了して、再度立ち上げて下さい。これでライブラリーはインストールできました。

これで準備は完了です。次に工作をしましょう。

3. Neo Pixelをつなげる

IMG_20150420_233703

Neo Pixelは、一方向にたくさん繋げられます。今回は縦一列にまっすぐ6つのNeoPixelをつなぎます。まずは矢印マークのある端子同士をはんだづけしてください。矢印のむきをあわせて、まっすぐなるように気をつけつつ、と言ってもそんなに神経質にならなくても大丈夫です。次にプラス同士を、終わったら次はマイナス同士をはんだづけしてください。一番上のNeoPixelの上側にある端子はどこにも繋がず、そのままにしておいてください。

4. Neo PixelとFloraをつなげる

はんだづけする端子を間違えないように注意してください。

一番下のNeoPixelのプラス、マイナス、下側の端子に5cmくらいに切ったワイヤーをそれぞれはんだづけしてください。NeoPixelのプラス端子をFloraの「UBATT」と書かれた端子に繋いでください。同様に、NeoPixelのマイナス端子をFloraの「GND」と書かれた端子に、NeoPixelの下側の端子をFloraの「D12」と書かれた端子にそれぞれ繋いでください。

これではんだ付けは終わりです。剣の見た目をどうかっこよくするかが一番大変なところなのですが、私はキッチンペーパーの芯を少し加工してNeoPixelを包み、フェルトで装飾しました。

最後にスケッチをの準備とアップロードです。

5. 先ほど再起動したIDEに以下のスケッチをコピペして、保存して下さい。

*****

//Neopixelの剣をピカピカランダムに光らせるスケッチです。
//NeoPixel Tiaraのスケッチを参考にしています。
#include <Adafruit_NeoPixel.h>

// パラメーター 1 = NeoPixelの数
// パラメーター 2 = NeoPixelをつないだ端子の番号
// パラメーター 3 = NeoPixelやFLORAのバージョンを判別するためのパラメーターです。
// 多くの場合、変更しなくてよいですが、一応以下を確認して下さい。
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, 12, NEO_GRB + NEO_KHZ800);

//ここに入れた色がランダムにあらわれます。好きな色を入れてみましょう。
//{nnn, nnn, nnn}, と追加してみましょう。
// R G B
uint8_t myColors[][3] = {{232, 100, 255}, // 紫
{200, 200, 20}, // 黄色
{30, 200, 200}, // 青
};

// この下の行は変更しないでください。
#define FAVCOLORS sizeof(myColors) / 3

void setup() {
strip.begin();
strip.setBrightness(40);
strip.show(); // つないだNeoPixelをすべて初期化し、offにします。

Serial.begin(9600);
Serial.println("setup");
}

void loop() {
flashRandom(5, 1); // 最初の数字は停止する時間です。数字が小さいほどピカピカの速度が早くなります。
flashRandom(5, 3); // 2番目の数字は一度に光らせるNeoPixelの数です。
flashRandom(5, 2);
}

void flashRandom(int wait, uint8_t howmany) {

for(uint16_t i=0; i<howmany; i++) {
// 何色に光らせるか決めています。上で設定した色の中かランダムに決めています。
int c = random(FAVCOLORS);
int red = myColors[0];
int green = myColors[1];
int blue = myColors[2];

// どのNeoPixelを光らせるかランダムに決めています。
int j = random(strip.numPixels());

// 5段階でじんわり光り始めるようなエフェクトを設定しています。
for (int x=0; x < 5; x++) {
int r = red * (x+1); r /= 5;
int g = green * (x+1); g /= 5;
int b = blue * (x+1); b /= 5;

strip.setPixelColor(j, strip.Color(r, g, b));
strip.show();
delay(wait);
}
// 5段階でじんわり消えるようなエフェクトを設定しています。
for (int x=5; x >= 0; x--) {
int r = red * x; r /= 5;
int g = green * x; g /= 5;
int b = blue * x; b /= 5;

strip.setPixelColor(j, strip.Color(r, g, b));
strip.show();
delay(wait);
}
}
// LEDが消えました
}

*****

6. FLORAにスケッチを書き込む

USBケーブルを使ってFLORAをPCに接続し、スケッチを書き込んで下さい。LEDがピカピカし始めるはずです。しない場合はすぐにUSBケーブルを取り外し、配線を確認して下さい。

7. 電池で動かす

USBケーブルを取り外し、USB端子の反対側の白い端子にリチウムポリマー電池の端子を差し込んで下さい。FROLAに搭載されているスライドスイッチを「ON」の方に動かして下さい。LEDがピカピカし始めるはずです。

これで完成です。剣みたいな見た目にして楽しんで下さい。小学生くらいのお子さんであれば、はんだづけしたり、スケッチを書き込んだり、外側の装飾をしたり、GWの工作として家族みんなで楽しめるのではないかなと思います。

この工作の元ネタは、Adafruitのブログで紹介されていた光るティアラです。こちらも参考にどうぞ!