//数字表示用ピン const int pin7segA = 5; const int pin7segB = 7; const int pin7segC = 12; const int pin7segD = 10; const int pin7segE = 9; const int pin7segF = 6; const int pin7segG = 13; const int pin7segDP = 11; //桁制御用ピン const int pin7segDig1 = A5; const int pin7segDig2 = A4; const int pin7segDig3 = A3; const int pin7segDig4 = A2; //シリアル通信 char str[5]="0000"; //数字4桁+終端 char buf; int i; //7セグメントLED int num; int numDisp[4]={0, 1, 2, 3}; //LEDに表示する数字 int numDigit; //表示桁 void setup() { Serial.begin(9600); //入出力の初期化 // pinMode( pinSwCnt, INPUT ); // pinMode( pinSwSet, INPUT ); pinMode( pin7segA, OUTPUT ); pinMode( pin7segB, OUTPUT ); pinMode( pin7segC, OUTPUT ); pinMode( pin7segD, OUTPUT ); pinMode( pin7segE, OUTPUT ); pinMode( pin7segF, OUTPUT ); pinMode( pin7segG, OUTPUT ); pinMode( pin7segDP, OUTPUT ); pinMode( pin7segDig1, OUTPUT ); pinMode( pin7segDig2, OUTPUT ); pinMode( pin7segDig3, OUTPUT ); pinMode( pin7segDig4, OUTPUT ); digitalWrite(pin7segDP , LOW ); } void loop() { if (Serial.available() == 4) { //数字4桁 for( i=0; i<4; i++ ) str[i] = Serial.read(); num = atoi(str); } numDisp[0] = (num % 10); //1秒単位 numDisp[1] = (num/10) %10; //10秒単位 numDisp[2] = (num/100) % 10; //1分単位 numDisp[3] = (num/1000); //10分単位 //7セグメントLED制御 disp_7seg( -1 ); //残像対策として消灯 if( numDigit == 3 ) numDigit = 0; else numDigit++; //桁移動 dynamic_7seg( numDigit ); //桁移動 disp_7seg( numDisp[numDigit] ); //数字表示 delay(5); } //7セグメントLEDダイナミック点灯 void dynamic_7seg( int numDigit ) { switch(numDigit){ case 1: digitalWrite(pin7segDig4 , LOW ); digitalWrite(pin7segDig3 , HIGH ); digitalWrite(pin7segDig2 , LOW ); digitalWrite(pin7segDig1 , LOW ); break; case 2: digitalWrite(pin7segDig4 , LOW ); digitalWrite(pin7segDig3 , LOW ); digitalWrite(pin7segDig2 , HIGH ); digitalWrite(pin7segDig1 , LOW ); break; case 3: digitalWrite(pin7segDig4 , LOW ); digitalWrite(pin7segDig3 , LOW ); digitalWrite(pin7segDig2 , LOW ); digitalWrite(pin7segDig1 , HIGH ); break; default : digitalWrite(pin7segDig4 , HIGH ); digitalWrite(pin7segDig3 , LOW ); digitalWrite(pin7segDig2 , LOW ); digitalWrite(pin7segDig1 , LOW ); break; } } //7セグメントLED数字表示 void disp_7seg( int numDisp ) { switch(numDisp){ case 1: digitalWrite(pin7segA , LOW ); digitalWrite(pin7segB , HIGH ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , LOW ); digitalWrite(pin7segE , LOW ); digitalWrite(pin7segF , LOW ); digitalWrite(pin7segG , LOW ); break; case 2: digitalWrite(pin7segA , HIGH ); digitalWrite(pin7segB , HIGH ); digitalWrite(pin7segC , LOW ); digitalWrite(pin7segD , HIGH ); digitalWrite(pin7segE , HIGH ); digitalWrite(pin7segF , LOW ); digitalWrite(pin7segG , HIGH ); break; case 3: digitalWrite(pin7segA , HIGH ); digitalWrite(pin7segB , HIGH ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , HIGH ); digitalWrite(pin7segE , LOW ); digitalWrite(pin7segF , LOW ); digitalWrite(pin7segG , HIGH ); break; case 4: digitalWrite(pin7segA , LOW ); digitalWrite(pin7segB , HIGH ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , LOW ); digitalWrite(pin7segE , LOW ); digitalWrite(pin7segF , HIGH ); digitalWrite(pin7segG , HIGH ); break; case 5: digitalWrite(pin7segA , HIGH ); digitalWrite(pin7segB , LOW ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , HIGH ); digitalWrite(pin7segE , LOW ); digitalWrite(pin7segF , HIGH ); digitalWrite(pin7segG , HIGH ); break; case 6: digitalWrite(pin7segA , HIGH ); digitalWrite(pin7segB , LOW ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , HIGH ); digitalWrite(pin7segE , HIGH ); digitalWrite(pin7segF , HIGH ); digitalWrite(pin7segG , HIGH ); break; case 7: digitalWrite(pin7segA , HIGH ); digitalWrite(pin7segB , HIGH ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , LOW ); digitalWrite(pin7segE , LOW ); digitalWrite(pin7segF , HIGH ); digitalWrite(pin7segG , LOW ); break; case 8: digitalWrite(pin7segA , HIGH ); digitalWrite(pin7segB , HIGH ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , HIGH ); digitalWrite(pin7segE , HIGH ); digitalWrite(pin7segF , HIGH ); digitalWrite(pin7segG , HIGH ); break; case 9: digitalWrite(pin7segA , HIGH ); digitalWrite(pin7segB , HIGH ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , HIGH ); digitalWrite(pin7segE , LOW ); digitalWrite(pin7segF , HIGH ); digitalWrite(pin7segG , HIGH ); break; case -1: //消灯 digitalWrite(pin7segA , LOW ); digitalWrite(pin7segB , LOW ); digitalWrite(pin7segC , LOW ); digitalWrite(pin7segD , LOW ); digitalWrite(pin7segE , LOW ); digitalWrite(pin7segF , LOW ); digitalWrite(pin7segG , LOW ); break; default : //0 digitalWrite(pin7segA , HIGH ); digitalWrite(pin7segB , HIGH ); digitalWrite(pin7segC , HIGH ); digitalWrite(pin7segD , HIGH ); digitalWrite(pin7segE , HIGH ); digitalWrite(pin7segF , HIGH ); digitalWrite(pin7segG , LOW ); break; } }