家電@小物 大好き! -4ページ目

家電@小物 大好き!

最近ギター始めました。まだまだですが
今度はカメラまで始めました。こっちもまだまだです。

巷では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);

  }
}