【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;
}
}
//ここまで