×

らずらいと姫の挑戦日記(第49回)~ネオピクセルの光を変えました~

2018-12-11

こんにちは。らずらいと姫です。
12月に入り、すっかり寒くなってきましたね。
みなさんも風邪をひかないよう、体調管理にお気を付けください!

さて今回は、前回のLEDライトの光らせ方を活かして、
別の光らせ方に挑戦してみます!

 

タイトル

 

 

今回の記事はこちらのgithubにアップロードしましたので
ソースコードはこちらもご利用ください!

https://github.com/LAPIS-Lazurite/kirakira

 

準備するものや、色味の考え方は
前回と同じです。

前回の記事をご覧になってみてください(^-^)

 

前回は2色の色がぐるぐるぐるぐる
同じ動きをする光り方でした。

今回はLEDの光り方に、もっと自由度を出します!

1つ1つLEDの色を変えて、
光らせ方や消え方も好きなようにすることができます☄

 

ライトの色を決める

 

まずは前回同様、何色に光らせるかを決めましょう。

今回は「LEDの色を1つ1つ好きな色にできる」というのがポイントなので、
思い切って7色を使った、カラフルな色にしてみます!

 

色は下記のように入力しました☄

light色の決め方

色味を調整しながら、
お好きな色の値を入れてみてくださいね。

 

色を切り替える

 

光らせたい色を決めたら、
次は光り方を調整していきます。

light光らせ方

このように入力すると、
7色のカラフルな色が順番に、0番から先端の59番まで光っていきます!

delayで光のスピードも決めれるので、
早くしたり遅くしたり、お好きなスピードを入れください。

今回はdelay(40)にしました。

 

次は点いたLEDを消灯させていきます!

 

light消灯2✶

 

また、今回は違う消灯の仕方も組み込んでみます。

もう1つの消え方は、
0番から59番のほうへ消えていく方法です。

 

light消灯パート2

 

ライトの消え方にもこだわることができます(^-^)

 

実際に動かしてみましょう✿

 

それでは実際に動かしてみましょう!

七色にライトを光らせて、
しっかりと2パターンの消灯ができているでしょうか…!

 

 

できました~!

前回よりもカラフルで、より豪華になりましたね(^-^)

こちらがソースコードになります☄

[c]

#include "kirakira_ide.h" // Additional Header

#define LED_LENGTH 60

unsigned char led_ram[LED_LENGTH * 3];

void setup(void)
{
memset(led_ram, 0, sizeof(led_ram));
led.init(8, LED_LENGTH);
}

void loop(void)
{
int i;
int j;
for (i = 0; i < LED_LENGTH * 3; i += 3) {
led_ram[i + 0] = map(64, 0, 0xff, 0, 0x60);
led_ram[i + 1] = map(64, 0, 0xff, 0, 0xff);
led_ram[i + 2] = map(64, 0, 0xff, 0, 0x60);
led.write(led_ram); delay(40);
}
for (i = (LED_LENGTH – 1) * 3; i < 0; i -= 3)
{
led_ram[i + 0] = 0;
led_ram[i + 1] = 0;
led_ram[i + 2] = 0;
led.write(led_ram);
delay(40);
}
for (i = 0; i < LED_LENGTH * 3; i += 3)
{
led_ram[i + 0] = map(64, 0, 0xff, 0, 0x00);
led_ram[i + 1] = map(64, 0, 0xff, 0, 0xff);
led_ram[i + 2] = map(64, 0, 0xff, 0, 0xdf);
led.write(led_ram);
delay(40);
}
for (i = 0; i < LED_LENGTH * 3; i += 3)
{
led_ram[i + 0] = 0;
led_ram[i + 1] = 0;
led_ram[i + 2] = 0;
led.write(led_ram);
delay(40);
}}

[/c]

 

おまけ

 

もっとキラキラした方がいいなーと思ったので、
こんな風に仕上げてみました✧✧

 

ライトがじわっと光り、
1つ1つのライトがいろんな色に切り替わっていきます☄

こちらのソースコードは下記になります。

[c]

#include "kirakira_ide.h" // Additional Header

#define LED_LENGTH 60
#define RESOLUTION 16
#define RED_R 255/8
#define RED_G 0
#define RED_B 0
#define ORANGE_R 255/8
#define ORANGE_G 64/8
#define ORANGE_B 0
#define YELLOW_R 255/8
#define YELLOW_G 255/8
#define YELLOW_B 0
#define GREEN_R 0
#define GREEN_G 128/8
#define GREEN_B 0
#define CYAN_R 0
#define CYAN_G 255/8
#define CYAN_B 255/8
#define BLUE_R 0
#define BLUE_G 0
#define BLUE_B 255/8
#define VIOLET_R 255/8
#define VIOLET_G 0
#define VIOLET_B 255/8

unsigned char led_ram[LED_LENGTH * 3];

void setup(void)
{
memset(led_ram, 0, sizeof(led_ram));
led.init(8, LED_LENGTH);
}

void loop(void)
{
int i;
int j, k;
unsigned char r, g, b;
for (i = 0; i < LED_LENGTH; i += 1)
{
switch (i % 7) {
case 0:
r = RED_R, g = RED_G, b = RED_B;
break;
case 1:
r = ORANGE_R, g = ORANGE_G, b = ORANGE_B;
break;
case 2:
r = YELLOW_R, g = YELLOW_G, b = YELLOW_B;
break;
case 3:
r = GREEN_R, g = GREEN_G, b = GREEN_B;
break;
case 4:
r = CYAN_R, g = CYAN_G, b = CYAN_B;
break;
case 5:
r = BLUE_R, g = BLUE_G, b = BLUE_B;
break;
case 6:
r = VIOLET_R, g = VIOLET_G, b = VIOLET_B;
break;
}

led_ram[i * 3 + 0] =g;
led_ram[i * 3 + 1] =r;
led_ram[i * 3 + 2] = b;
led.write(led_ram);
delay(40);
}
for (k = 0; k < 28; k++) {
for (j = 0; j < RESOLUTION ; j ++) {
for (i = 0; i < LED_LENGTH; i += 1) { switch ((i + k) % 7) { case 0: //r = 255, g = 64, b = 0; led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, RED_R, ORANGE_R); led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, RED_G, ORANGE_G); led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, RED_B, ORANGE_B); break; case 1: //r = 255, g = 64, b = 0; led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, ORANGE_R, YELLOW_R); led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, ORANGE_G, YELLOW_G); led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, ORANGE_B, YELLOW_B); break; case 2: //r = 255, g = 255, b = 0; led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, YELLOW_R, GREEN_R); led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, YELLOW_G, GREEN_G); led_ram[i * 3 + 2] = map(j, 0, RESOLUTION,YELLOW_B, GREEN_B); break; case 3: //r = 0, g = 128, b = 0; led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, GREEN_R, CYAN_R); led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, GREEN_G, CYAN_G); led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, GREEN_B, CYAN_B); break; case 4: //r = 0, g = 255, b = 255; led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, CYAN_R, BLUE_R); led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, CYAN_G, BLUE_G); led_ram[i * 3 + 2] = map(j, 0, RESOLUTION,CYAN_B, BLUE_B); break; case 5: //r = 0, g = 0, b = 255; led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, BLUE_R, VIOLET_R); led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, BLUE_G, VIOLET_G); led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, BLUE_B, VIOLET_B); break; case 6: //r = 128, g = 0, b = 128; led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, VIOLET_R, RED_R); led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, VIOLET_G, RED_G); led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, VIOLET_B, RED_B); break; } } led.write(led_ram); delay(10); } } for (i = (LED_LENGTH – 1); i &amp;gt;= 0; i -= 1)
{
led_ram[i * 3 + 0] = 0;
led_ram[i * 3 + 1] = 0;
led_ram[i * 3 + 2] = 0;
led.write(led_ram);
delay(40);
}
for (i = 0; i < LED_LENGTH; i += 1)
{
switch (i % 7) {
case 0:
r = RED_R, g = RED_G, b = RED_B;
break;
case 1:
r = ORANGE_R, g = ORANGE_G, b = ORANGE_B;
break;
case 2:
r = YELLOW_R, g = YELLOW_G, b = YELLOW_B;
break;
case 3:
r = GREEN_R, g = GREEN_G, b = GREEN_B;
break;
case 4:
r = CYAN_R, g = CYAN_G, b = CYAN_B;
break;
case 5:
r = BLUE_R, g = BLUE_G, b = BLUE_B;
break;
case 6:
r = VIOLET_R, g = VIOLET_G, b = VIOLET_B;
break;
}

led_ram[i * 3 + 0] = g;
led_ram[i * 3 + 1] = r;
led_ram[i * 3 + 2] = b;
led.write(led_ram);
delay(40);
}
for (k = 0; k < 28; k++) {
for (j = 0; j < RESOLUTION ; j ++) {
for (i = 0; i < LED_LENGTH; i += 1)
{
switch ((i + k) % 7) {
case 0:
//r = 255, g = 64, b = 0;
led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, RED_R, ORANGE_R);
led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, RED_G, ORANGE_G);
led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, RED_B, ORANGE_B);
break;
case 1:
//r = 255, g = 64, b = 0;
led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, ORANGE_R, YELLOW_R);
led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, ORANGE_G, YELLOW_G);
led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, ORANGE_B, YELLOW_B);
break;
case 2:
//r = 255, g = 255, b = 0;
led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, YELLOW_R, GREEN_R);
led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, YELLOW_G, GREEN_G);
led_ram[i * 3 + 2] = map(j, 0, RESOLUTION,YELLOW_B, GREEN_B);
break;
case 3:
//r = 0, g = 128, b = 0;
led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, GREEN_R, CYAN_R);
led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, GREEN_G, CYAN_G);
led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, GREEN_B, CYAN_B);
break;
case 4:
//r = 0, g = 255, b = 255;
led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, CYAN_R, BLUE_R);
led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, CYAN_G, BLUE_G);
led_ram[i * 3 + 2] = map(j, 0, RESOLUTION,CYAN_B, BLUE_B);
break;
case 5:
//r = 0, g = 0, b = 255;
led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, BLUE_R, VIOLET_R);
led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, BLUE_G, VIOLET_G);
led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, BLUE_B, VIOLET_B);
break;
case 6:
//r = 128, g = 0, b = 128;
led_ram[i * 3 + 1] = map(j, 0, RESOLUTION, VIOLET_R, RED_R);
led_ram[i * 3 + 0] = map(j, 0, RESOLUTION, VIOLET_G, RED_G);
led_ram[i * 3 + 2] = map(j, 0, RESOLUTION, VIOLET_B, RED_B);
break;
}
}
led.write(led_ram);
delay(10);
}
}
for (i = 0; i < LED_LENGTH; i += 1)
{
led_ram[i * 3 + 0] = 0;
led_ram[i * 3 + 1] = 0;
led_ram[i * 3 + 2] = 0;
led.write(led_ram);
delay(40);
}

}
[/c]

 

次回は、48回目と49回目でやった色を
無線で切り替えることに挑戦しようと思います(^o^)/

 

Seeyou