16進数と2進数を表示する(ボタンで上下させる)

プログラム例)

//16進数を7セグメント表示器1個で表示する
//2進数をLED4個で表示する
//SW1(D8)で上昇,SW2(D9)で下降
//配列を使用LED→{8,4,2,1}
//配列を使用7セグ→{a,b,c,d,e,f,g}
 
int i,j;                         //整数型の宣言
int kazu = 1 ;
int outpin ;
 
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};
int numa[]={1,1,1,0,1,1,1};
int numb[]={0,0,1,1,1,1,1};
int numc[]={1,0,0,1,1,1,0};
int numd[]={0,1,1,1,1,0,1};
int nume[]={1,0,0,1,1,1,1};
int numf[]={1,0,0,0,1,1,1};
 
int lamp0[]={0,0,0,0};          //配列の宣言
int lamp1[]={0,0,0,1};
int lamp2[]={0,0,1,0};
int lamp3[]={0,0,1,1};
int lamp4[]={0,1,0,0};
int lamp5[]={0,1,0,1};
int lamp6[]={0,1,1,0};
int lamp7[]={0,1,1,1};
int lamp8[]={1,0,0,0};
int lamp9[]={1,0,0,1};
int lampa[]={1,0,1,0};
int lampb[]={1,0,1,1};
int lampc[]={1,1,0,0};
int lampd[]={1,1,0,1};
int lampe[]={1,1,1,0};
int lampf[]={1,1,1,1};
 
void setup() { 
  for (i=1;i<=7;i++){
    pinMode(i,OUTPUT);          //D1からD7までを出力に設定
  }
  for (i=10;i<=13;i++){         //D10からD13までを出力に設定
    pinMode(i,OUTPUT);
  }
  for (i=8;i<=9;i++){           //D8からD9までを入力に設定
    pinMode(i,INPUT); 
  }
}
 
void loop() {
  switch (kazu) {

  case 0:
    for (int i=1;i<=7;i++){      //「0」を表示。aからgまで7回繰り返し処理
      if(num0[i-1]==1){          //「1」の時はそのセグメントを点灯させる
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){      //「0000」を表示
      if(lamp0[j]==1){
        digitalWrite(outpin,HIGH);
      }
      j--;
      outpin++;
    }      
    break;
 
  case 1:
    for (int i=1;i<=7;i++){       //「1」を表示
      if(num1[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;     
    for (int i=1;i<=4;i++){
      if(lamp1[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;
    }   
    break;
 
  case 2:
    for (int i=1;i<=7;i++){        //「2」を表示
      if(num2[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lamp2[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }     
    break;
 
  case 3:
    for (int i=1;i<=7;i++){         //「3」を表示
      if(num3[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lamp3[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 4:
    for (int i=1;i<=7;i++){          //「4」を表示
      if(num4[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lamp4[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 5:
    for (int i=1;i<=7;i++){           //「5」を表示
      if(num5[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lamp5[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 6:
    for (int i=1;i<=7;i++){           //「6」を表示
      if(num6[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lamp6[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 7:
    for (int i=1;i<=7;i++){            //「7」を表示
      if(num7[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lamp7[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 8:
    for (int i=1;i<=7;i++){             //「8」を表示
      if(num8[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lamp8[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 9:
    for (int i=1;i<=7;i++){               //「9」を表示
      if(num9[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lamp9[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 10:
    for (int i=1;i<=7;i++){               //「A」を表示
      if(numa[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lampa[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 11:
    for (int i=1;i<=7;i++){                //「b」を表示
      if(numb[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lampb[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 12:
    for (int i=1;i<=7;i++){                 //「C」を表示
      if(numc[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lampc[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 13:
    for (int i=1;i<=7;i++){                  //「d」を表示
      if(numd[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lampd[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 14:
    for (int i=1;i<=7;i++){                   //「E」を表示
      if(nume[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lampe[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
 
  case 15:
    for (int i=1;i<=7;i++){                    //「F」を表示
      if(numf[i-1]==1){
        digitalWrite(i,HIGH);
      }
    }
    j=3;
    outpin=10;
    for (int i=1;i<=4;i++){
      if(lampf[j]==1){
        digitalWrite(outpin,HIGH);
      }
    j--;
    outpin++;       
    }
    break;
  }

  while(1){
    if(digitalRead(8)==LOW){                  //SW1が押されたら1増やす
      kazu++;
        if(kazu==16) kazu=0;
      break;     
    }
    if(digitalRead(9)==LOW){                  //SW2が押されたら1減らす
      kazu--;
      if(kazu==-1) kazu=15;
      break;
    }
  }
  for (int i=1;i<=7;i++){digitalWrite(i,LOW);}     //7セグ消灯
  for (int i=10;i<=13;i++){digitalWrite(i,LOW);}   //LED消灯 
  delay(200);
}
//ここまで

コメントを残す

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

*

*