電子サイコロ

プログラム例)

//電子サイコロ
//7セグメント表示器にランダムに1~6を表示する
//SW1(右側)で停止,SW2(左側)で再スタート
//配列を使用→{a,b,c,d,e,f,g}

int i,kazu ;                     //整数型の宣言
int j = 10 ;
int k = 10 ;

int num0[]={1,1,1,1,1,1,0};      //配列の宣言
int num1[]={0,1,1,0,0,0,0};
int num2[]={1,1,0,1,1,0,1};
int num3[]={1,1,1,1,0,0,1};
int num4[]={0,1,1,0,0,1,1};
int num5[]={1,0,1,1,0,1,1};
int num6[]={1,0,1,1,1,1,1};
int num7[]={1,1,1,0,0,0,0};
int num8[]={1,1,1,1,1,1,1};
int num9[]={1,1,1,0,0,1,1};

void setup() {
  pinMode(8,INPUT);
  pinMode(9,INPUT);
  for (i=0;i<=7;i++){
    pinMode(i,OUTPUT);           //D0からD7までを出力に設定
  }
  for (i=10;i<=13;i++){
    pinMode(i,OUTPUT);           //D10からD13までを出力に設定
  }
}

void loop() {
  tone(0,280,10) ;
  kazu=random(1,7);
  switch (kazu) {
  case 0:
    for (int i=1;i<=7;i++){      //「0」を表示。aからgまで7回繰り返し処理
      if(num0[i-1]==1){          //「1」の時はそのセグメントを点灯させる
        digitalWrite(i,HIGH);
      }
    }
    break;

  case 1:
    for (int i=1;i<=7;i++){      //「1」を表示
      if(num1[i-1]==1){
      digitalWrite(i,HIGH);
      }
    }
    break;

  case 2:
    for (int i=1;i<=7;i++){       //「2」を表示
      if(num2[i-1]==1){
        digitalWrite(i,HIGH);
     }
    }
    break;

  case 3:
    for (int i=1;i<=7;i++){        //「3」を表示
      if(num3[i-1]==1){
      digitalWrite(i,HIGH);
      }
    }
    break;

  case 4:
    for (int i=1;i<=7;i++){        //「4」を表示
      if(num4[i-1]==1){
      digitalWrite(i,HIGH);
      }
    }
    break;

  case 5:
    for (int i=1;i<=7;i++){        //「5」を表示
      if(num5[i-1]==1){
      digitalWrite(i,HIGH);
      }
    }
    break;

  case 6:
    for (int i=1;i<=7;i++){         //「6」を表示
       if(num6[i-1]==1){
      digitalWrite(i,HIGH);
      }
    }
    break;

  case 7:
    for (int i=1;i<=7;i++){          //「7」を表示
      if(num7[i-1]==1){
      digitalWrite(i,HIGH);
      }
    }
    break;

  case 8:
    for (int i=1;i<=7;i++){           //「8」を表示
      if(num8[i-1]==1){
      digitalWrite(i,HIGH);
      }
    }
    break;

  case 9:
    for (int i=1;i<=7;i++){           //「9」を表示
      if(num9[i-1]==1){
      digitalWrite(i,HIGH);
      }
    }
    break;
  }

  digitalWrite(j, HIGH);              // LED点灯(右から左へ)
  j++ ;
  if(j==14) j=10;
  delay (100);                        //待機
  if(digitalRead(8)==LOW){            //ストップボタンが押された場合
    tone(0,280,1000) ;                //停止時のビープ音(1秒間)
    while(digitalRead(9)==HIGH){      //待ちうけループ
      if(digitalRead(9)==LOW) break;  //スタートボタンでbreakして先に進む
    }
  }
  for (k=10;k<=13;k++){
    digitalWrite(k,LOW);              //全LED消灯
  }

  for (i=1;i<=7;i++){                 //全セグメントを一旦消灯する
    digitalWrite(i,LOW);
  }
}
//ここまで

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*