【Ver.1非対応】
Ver.2とArduino基礎学習シールドで利用可能です
スイッチ(S3,S4,S5,S6)の状態に合わせて、7セグメントLEDに対応する16進数を表示するプログラムです。スイッチはHIGHになっているところを「1」とします。7セグメントLEDの表示には配列を使用しています。7セグ→{a,b,c,d,e,f,g} 例えば、「0」は{1,1,1,1,1,1,0} として点灯するセグメントを「1」にしています。
// スイッチ(S3,S4,S5,S6)の状態に合わせて // 7セグメントLEDに対応する16進数を表示する。 // スイッチはHIGHになっているところを「1」とします。 // 配列を使用7セグ→{a,b,c,d,e,f,g} #define L1 10 #define L2 11 #define L3 12 #define L4 13 #define S3 19 #define S4 18 #define S5 17 #define S6 16 int i,kazu,keta1,keta2,keta4,keta8 ; // 変数を整数型で宣言 int num0[]={1,1,1,1,1,1,0}; //配列の宣言 7セグメントLED「0」 int num1[]={0,1,1,0,0,0,0}; // 1 int num2[]={1,1,0,1,1,0,1}; // 2 int num3[]={1,1,1,1,0,0,1}; // 3 int num4[]={0,1,1,0,0,1,1}; // 4 int num5[]={1,0,1,1,0,1,1}; // 5 int num6[]={1,0,1,1,1,1,1}; // 6 int num7[]={1,1,1,0,0,0,0}; // 7 int num8[]={1,1,1,1,1,1,1}; // 8 int num9[]={1,1,1,0,0,1,1}; // 9 int numa[]={1,1,1,0,1,1,1}; // A int numb[]={0,0,1,1,1,1,1}; // b int numc[]={1,0,0,1,1,1,0}; // C int numd[]={0,1,1,1,1,0,1}; // d int nume[]={1,0,0,1,1,1,1}; // E int numf[]={1,0,0,0,1,1,1}; // F void setup() { for(i=1;i<=7;i++){ // iを変えて4回繰り返し pinMode(i, OUTPUT); //ポートの設定(入力か出力か?) } //D1~D7を出力に設定 for(i=10;i<=13;i++){ // iを変えて4回繰り返し pinMode(i, OUTPUT); //ポートの設定(入力か出力か?) } //D10,D11,D12,D13を出力に設定 for(i=16;i<=19;i++){ // iを変えて4回繰り返し pinMode(i, INPUT); //ポートの設定(入力か出力か?) } //D16,D17,D18,D19を入力に設定 } void loop() { if(digitalRead(S3)==HIGH){ digitalWrite(L1, HIGH); // L1を点灯 keta1 = 1; } else{digitalWrite(L1, LOW); keta1 = 0; } if(digitalRead(S4)==HIGH){ digitalWrite(L2, HIGH); // L2を点灯 keta2 = 2 ; } else{digitalWrite(L2, LOW); keta2 = 0; } if(digitalRead(S5)==HIGH){ digitalWrite(L3, HIGH); // L3を点灯 keta4 = 4 ; } else{digitalWrite(L3, LOW); keta4 = 0 ; } if(digitalRead(S6)==HIGH){ digitalWrite(L4, HIGH); // L4を点灯 keta8 = 8; } else{digitalWrite(L4, LOW); keta8 = 0; } kazu = keta1 + keta2 + keta4 + keta8 ; //16進数の計算 for (int i=1;i<=7;i++){digitalWrite(i,LOW);} //一旦、7セグ消灯 switch (kazu) { //ここから16進数の表示 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; case 10: for (int i=1;i<=7;i++){ //「A」を表示 if(numa[i-1]==1){ digitalWrite(i,HIGH); } } break; case 11: for (int i=1;i<=7;i++){ //「b」を表示 if(numb[i-1]==1){ digitalWrite(i,HIGH); } } break; case 12: for (int i=1;i<=7;i++){ //「C」を表示 if(numc[i-1]==1){ digitalWrite(i,HIGH); } } break; case 13: for (int i=1;i<=7;i++){ //「d」を表示 if(numd[i-1]==1){ digitalWrite(i,HIGH); } } break; case 14: for (int i=1;i<=7;i++){ //「E」を表示 if(nume[i-1]==1){ digitalWrite(i,HIGH); } } break; case 15: for (int i=1;i<=7;i++){ //「F」を表示 if(numf[i-1]==1){ digitalWrite(i,HIGH); } } break; } } //ここまで