らずらいと姫の挑戦日記(第48回)~ネオピクでキラキラしよう~
2018-11-30
こんにちは、らずらいと姫です。
先日のET展では、たくさんの方にお越しいただきました。
足を運んでくださった皆様、ありがとうございました!
さて、今回はつながったLEDを一つ一つ制御することができるNeoPixelを使ってLEDをピカピカ光らせることに挑戦したいと思います。
クリスマスも近づき、キラキラしたものが一層綺麗に感じられますね(^-^)!
準備するもの
・Lazurite Sub-GHz
・NeoPixel
(今回は長さ1m・LEDライトが60個ついてるものです)
サンプルプログラムを選択
Lazurite IDEを起動後、
ファイル -> プロジェクトのサンプル -> 06.LEDs -> LED_tape からサンプルプログラムを選択します。
サンプルプログラムは10連のものなので、ここから60連のLEDに変更して、私好みのキラキラにしていきたいと思います!!
光の色を決める
次に光らせたい色を決めます。
光の3原色をベースに考えるので、
赤・青・緑をベースに考えていきます。
このプログラム内では
左から緑・赤・青となっており、
濃くしたい色の「0x00」の”00” の値を変えます。
緑に光らせたい場合は
0xff, 0x00, 0x00 ,
赤に光らせたい場合は
0x00, 0xff,0x00 ,
青に光らせたい場合は
0x00, 0x00 ,0xff,
※0xのあとの00 の値は「1~f」まであり、
fに近いほど色味は濃くなっていきます。
例えば濃い青色がよければ
0x00, 0x00, 0xff
水色にしたければ光の3原色の観点から
少し淡めのみどり色を足して、
0xf1, 0x00, 0xff
色味を見ながらお好みに調整してみてください!
色を切り替える
この部分のプログラムで色を切り替えています。
プログラムの細かいところはわかりませんが、光るLEDはこのような順番で動いていきます。
つまり上記のような場合は、
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]