×

らずらいと姫の挑戦日記(第48回)~ネオピクでキラキラしよう~

2018-11-30

こんにちは、らずらいと姫です。
先日のET展では、たくさんの方にお越しいただきました。
足を運んでくださった皆様、ありがとうございました!

さて、今回はつながったLEDを一つ一つ制御することができるNeoPixelを使ってLEDをピカピカ光らせることに挑戦したいと思います。
クリスマスも近づき、キラキラしたものが一層綺麗に感じられますね(^-^)!

タイトル2

準備するもの

 

・Lazurite Sub-GHz

NeoPixel
(今回は長さ1m・LEDライトが60個ついてるものです)

 

サンプルプログラムを選択

 

Lazurite IDEを起動後、
ファイル -> プロジェクトのサンプル -> 06.LEDs -> LED_tape からサンプルプログラムを選択します。

IDE手順

サンプルプログラムは10連のものなので、ここから60連のLEDに変更して、私好みのキラキラにしていきたいと思います!!

 

光の色を決める

 

次に光らせたい色を決めます。

光の3原色をベースに考えるので、
赤・青・緑をベースに考えていきます。

光の3原色

 

このプログラム内では
左から緑・赤・青となっており、
濃くしたい色の「0x00」の”00” の値を変えます。

緑に光らせたい場合は
0xff, 0x00, 0x00 ,

赤に光らせたい場合は
0x00, 0xff,0x00 ,

青に光らせたい場合は
0x00, 0x00 ,0xff

※0xのあとの00 の値は「1~f」まであり、
fに近いほど色味は濃くなっていきます。

 

例えば濃い青色がよければ
0x00, 0x00, 0xff

LED青

 

水色にしたければ光の3原色の観点から
少し淡めのみどり色を足して、
0xf1, 0x00, 0xff

LED水色

色味を見ながらお好みに調整してみてください!

 

色を切り替える

 

この部分のプログラムで色を切り替えています。

Lazurite IDE中身

プログラムの細かいところはわかりませんが、光るLEDはこのような順番で動いていきます。

LED光る順番☄

LEDライト60個

 

つまり上記のような場合は、

1回目は
1~4個目のLEDが0x00,0x00,0x00(白)に、
5個目のLEDライトが0x00,0xff,0xdf(ピンク)に光ります!

これを2回目、3回目~と、繰り返していきます。

今回は5行ごとに色の入った値を入れていますが、
もっと細かく光らせたい場合は3行ごと、2行ごとに
色の値を入れていっても綺麗だと思います!

 

色を切り替えるタイミングを調整する

 

delayの()の中の時間たったら次の色に移っていきます。
下に貼ったプログラムの場合、80ms(ミリ秒)毎に色を切り替えていきます。

 

実際に入力しよう!

 

以上の点をふまえて、実際に入力します。

今回は濃いめのピンク色(0x00, 0xff, 0xdf)と
淡いピンク色(0x60, 0xff, 0x60)を交互に入れて、

delay(80)のスピードで動かしてみます!

実際に動かすとこれくらいの速さでピカピカひかります!⋆✶゜✶゜

キラキラしていて綺麗ですね(^-^)

とっても簡単に好きな色に光らせることができるので、
みなさんもぜひ試してみてください!

最後にソースコードです☄

[c]
#include "kirakira_ide.h" // Additional Header

#define LED_LENGTH 60

const unsigned char led0[] = {
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x60, 0xff, 0x60 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0xff, 0xdf ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00 ,
0x00, 0x00, 0x00
};

unsigned char led_ram[30];

void setup(void)
{
led.init(8, LED_LENGTH);
}

void loop(void)
{
int i;
int j;
for (i = 0; i < LED_LENGTH * 3; i += 3)
{
led.write(&led0[i]);
delay(80);
}

}

[/c]