巷ではGoToなんたらとか言って
色々出かけている人も多いようですが
やっぱりコロちゃんが、気になるので
にわか引き篭り天才の私は
こんどは「積みプラ」というものを目指して
HGUC ユニコーンガンダム3号機 フェネクス
デストロイモード(ナラティブVer.)
を作った時に、
これ、LEDで光らせたら
すごい綺麗になるんじゃないかな
ということで、
バラバラにして、どこから光を埋め込むのか見極めます。
元々は光ファイバーで繋げようと思っていたのですが
如何せん、光量がたりなく、また意外に取り回しがきかず
Amazonで2mmのLEDが手に入ったので
直接LEDを埋め込むことにしました。
ももの部分は通すスペースが、見つからず
残念なながら外側に穴開けて、直挿しました。
フェネクスの血管の抜き出しが終わりました。
で、ARDUINO UNO互換のボードに接続します。
で、プログラムを組みます。
出来ました〜
汚いプログラムですが、一応。。。
本当は、LED1と2で交互に点滅するようなのやりたかったけど
光量調整のため、analogWriteにしたところ
digitalWriteと同じ制御では切り替わらないようで
途中で諦めたので、意味のないLED2のソースが残っています。
*************************************** (以下プログラム) ********
int switchstate = 0;
int LED_1 = 3;
int LED_2 = 4;
int CNT_1 = 4;
int ALL_TIME = 50000;
int DELAY_TIME = 100;
int DELAY_TIME2 = 300;
int DELAY_TIME3 = 5000;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
digitalWrite(LED_BUILTIN, LOW);
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
switchstate = digitalRead(2);
if (switchstate == LOW){
led_off(0);
//led_on(2, 255);
}
else{
//while ( millis() < ALL_TIME) {
led_p8(10, 300); //起動
delay(DELAY_TIME2);
led_p1(10, 3000); //起動2
delay(DELAY_TIME2);
led_p3(10, 500); //点滅
delay(DELAY_TIME2);
led_p2(255,3500); //点灯
delay(DELAY_TIME2);
led_p4(20, 3000, 0); //ゆらぎ
delay(DELAY_TIME2);
led_p2(255,3500); //点灯
delay(DELAY_TIME2);
led_p3(10, 500); //点滅
delay(DELAY_TIME2);
led_p5(30, 1000, 0); //ゆらぎ2
delay(DELAY_TIME2);
led_p7(10, 800); //停止2
delay(DELAY_TIME2);
led_p6(10, 3000); //停止
delay(DELAY_TIME2);
//}
}
}
//LEDの消灯
void led_off(int l_p) {
digitalWrite(LED_1, LOW); // turn the LED on (HIGH is the voltage level)
digitalWrite(LED_2, LOW); // turn the LED on (HIGH is the voltage level)
}
//LEDの点灯
void led_on(int l_p, int l_led_level) {
//パターンによってLED1と2をコントロールしようとしましたがうまくできていません
if(l_p=0){
analogWrite(LED_1, l_led_level);
analogWrite(LED_2, l_led_level);
} else {
if(l_p=1){
analogWrite(LED_1, l_led_level);
} else {
if(l_p=2){
analogWrite(LED_2, l_led_level);
}
}
}
}
//起動2
void led_p1(int l_cnt, int l_delay_time){
int l_led_level=0;
int delay_t = 100;
int delay_t1 = 100;
int delay_t2 = 100;
delay_t = l_delay_time;
for(int s=1;s<l_cnt;s++){
delay_t1 = delay_t / 25 * s;
delay_t2 = delay_t - delay_t1;
l_led_level = 255 / l_cnt * s;
led_off(0);
delay(delay_t2);
led_on(0,l_led_level);
delay(delay_t1);
}
}
//点灯
void led_p2(int l_led_level, int l_delay_t){
led_on(0,l_led_level);
delay(l_delay_t);
}
//点滅
void led_p3(int l_cnt, int l_delay_t){
int l_led_level=255;
for(int s=1;s<l_cnt;s++){
led_off(0);
delay(l_delay_t);
led_on(0,l_led_level);
delay(l_delay_t);
}
}
//ゆらぎ
void led_p4(int l_cnt, int l_delay_time, int l_wait_sw){
int l_led_level=0;
int delay_t = 100;
int delay_t1 = 100;
int delay_t2 = 100;
delay_t = l_delay_time;
for(int s=1;s<l_cnt;s++){
delay_t1 = delay_t / 25 * s;
delay_t2 = delay_t - delay_t1;
l_led_level = 255 / l_cnt * s;
if(l_wait_sw = 1){
led_off(0);
delay(50);
}
led_on(0,l_led_level);
delay(delay_t1);
}
}
//ゆらぎ2
void led_p5(int l_cnt, int l_delay_time, int l_wait_sw){
int l_led_level=0;
for(int s=1;s<l_cnt;s++){
l_led_level = 255 / l_cnt * s;
if(l_wait_sw = 1){
led_off(0);
delay(50);
}
led_on(0,l_led_level);
delay(l_delay_time);
}
}
//停止
void led_p6(int l_cnt, int l_delay_time){
int l_led_level=0;
int delay_t = 100;
int delay_t1 = 100;
int delay_t2 = 100;
delay_t = l_delay_time;
for(int s=1;s<l_cnt;s++){
delay_t1 = delay_t / 25 * s;
delay_t2 = delay_t - delay_t1;
l_led_level = 255- (255 / l_cnt * s);
led_off(0);
delay(delay_t1);
led_on(0,l_led_level);
delay(delay_t2);
}
}
//停止2
void led_p7(int l_cnt, int l_delay_time){
int l_led_level=0;
int delay_t = 100;
int delay_t1 = 100;
int delay_t2 = 100;
delay_t = l_delay_time;
for(int s=1;s<l_cnt;s++){
delay_t1 = delay_t / 25 * s;
delay_t2 = delay_t - delay_t1;
l_led_level = 255- (255 / l_cnt * s);
led_on(0,l_led_level);
delay(delay_t2);
}
}
//起動
void led_p8(int l_cnt, int l_delay_time){
int l_led_level=0;
int delay_t = 100;
int delay_t1 = 100;
int delay_t2 = 100;
delay_t = l_delay_time;
for(int s=1;s<l_cnt;s++){
delay_t1 = delay_t / 25 * s;
delay_t2 = delay_t - delay_t1;
l_led_level = 255 / l_cnt * s;
led_on(0,l_led_level);
delay(delay_t1);
}
}