アルディーノで引き籠り。久しぶりのLEDチカチカ。 | ルデコのブログ

アルディーノで引き籠り。久しぶりのLEDチカチカ。

久しぶりのLEDチカチカ。昔に工作してた2色LEDが出て来たのでトグルスイッチで点灯してみた。

カソードコモンの2色LED赤・緑あるいは赤・青を単純に切り替え切り替え点灯するだけ。

 

 

昔ながらのアナログ回路は簡単に工作できて簡単に点灯出来るけどアルディーノでスケッチを書くのは

大変難儀。丸一日掛けてやっと出来ました。

アルディーノUNOのプログラム/スケッチ概要

1・1~5回目切り替えまでは、2個のカソードコモンの2色LED緑あるいは青を単純に点灯するだけ。

2・6~9回目切り替えまでは、2個のカソードコモンの2色LED緑と青をチカチカ点灯で注意喚起。

3・10回目切り替えで2個のカソードコモンの2色LED赤をチカチカ点灯で怒り爆発。全点灯で引き籠り。

4・元に戻る。

アルディーノUNOのプログラム/スケッチ

//LEDECO.com
//2020.07.09
#define OFF 0
#define ON 1
 int n = 0 ;
void setup() {
  pinMode(2, OUTPUT); 
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT); 
  pinMode(5, OUTPUT);
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
}
int toggle = OFF;
void loop(){  
   if (digitalRead(8)== HIGH){
      digitalWrite(3, HIGH);
      while(digitalRead(8)== HIGH)
      toggle = OFF;
       }
       
      digitalWrite(3, LOW);
      delay(50);
   
   if (digitalRead(9) == HIGH){
      digitalWrite(5, HIGH); 
      while(digitalRead(9)== HIGH)
      toggle = ON;
         }      
      digitalWrite(5, LOW);
      delay(50);     
 
 if ( toggle = ON){
  n=n+1;      
 }
 if ( n>5){
  led1_flash();      
 }
 if ( n>=10){
  led2_flash(); 
    
 }delay(100);
 }
//LEDを点滅させる
void led1_flash() {
  digitalWrite(3, HIGH);
  delay(100);
  digitalWrite(3, LOW);
  delay(100);
  digitalWrite(5, HIGH);
  delay(100);
  digitalWrite(5, LOW);
  delay(100); 
  digitalWrite(3, HIGH);
  delay(50);
  digitalWrite(3, LOW);
  delay(50);
  digitalWrite(5, HIGH);
  delay(50);
  digitalWrite(5, LOW);
  delay(50);
}
void led2_flash() {
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(4, HIGH);
  delay(100);
  digitalWrite(4, LOW);
  delay(100);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(4, HIGH);
  delay(100);
  digitalWrite(4, LOW);
  delay(100);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(4, HIGH);
  delay(100);
  digitalWrite(4, LOW);
  delay(100);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(4, HIGH);
  delay(100);
  digitalWrite(4, LOW);
  delay(100);
  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
   digitalWrite(4,HIGH);
   digitalWrite(5,HIGH);
  delay(1000);
  n=0 ;  
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  }