//割り込みライブラリの読み込み #include //7セグ表示部分の命令文 #define num0 digitalWrite(2,HIGH);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,HIGH);digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,HIGH); #define num1 digitalWrite(2,LOW);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,LOW);digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,LOW); #define num2 digitalWrite(2,HIGH);digitalWrite(3,LOW);digitalWrite(4,HIGH);digitalWrite(5,HIGH);digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,HIGH); #define num3 digitalWrite(2,HIGH);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,HIGH);digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,LOW); #define num4 digitalWrite(2,LOW);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,LOW);digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,LOW); #define num5 digitalWrite(2,HIGH);digitalWrite(3,HIGH);digitalWrite(4,LOW);digitalWrite(5,HIGH);digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,LOW); #define num6 digitalWrite(2,HIGH);digitalWrite(3,HIGH);digitalWrite(4,LOW);digitalWrite(5,HIGH);digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH); #define num7 digitalWrite(2,LOW);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,HIGH);digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW); #define num8 digitalWrite(2,HIGH);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,HIGH);digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH); #define num9 digitalWrite(2,LOW);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,HIGH);digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,LOW); #define numoff digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,LOW);digitalWrite(5,LOW);digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,LOW); #define seg10 digitalWrite(0,HIGH);digitalWrite(1,LOW); #define seg01 digitalWrite(1,HIGH);digitalWrite(0,LOW); //変数宣言 byte count = 0; //カウンターの記憶用 int valSW; //タクトスイッチ byte one; //7セグ用_1の位 byte ten; //7セグ用_10の位 int valVR; //可変抵抗 int valCDS; //可視光 int valMIC; //マイク int valLED = 0; //LED3で使用 void setup(){ //ピンの宣言 pinMode(0,OUTPUT); pinMode(1,OUTPUT); pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(A4,INPUT_PULLUP); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); digitalWrite(11, valLED); //割り込みの設定と有効化 MsTimer2::set(3, visi); // 3ms毎にvisi( )割込み関数を呼び出す様に設定 MsTimer2::start(); } void loop(){ valVR = analogRead(A0)/4; //可変抵抗の値を読む valCDS = analogRead(A2)/4-30; //可視光センサの値を読む if(valCDS <= 0){valCDS = 0;} //可視光センサの値を調整 valMIC = digitalRead(A1); //マイクの値を読む if(valMIC == 0){ //マイクの値によって、出力用の値を反転 valLED = ~valLED; //この場合、LEDへの出力をオンオフしている digitalWrite(11,valLED); while(valMIC == 0){ valMIC = digitalRead(A1); } } //各値を出力 analogWrite(9, valVR); analogWrite(10, valCDS); delay(1); /*カウントが100になったら0に戻す 7セグLEDは2桁だがbyte型で宣言しているので 桁が溢れると困るため*/ if(count >=100){ count = 0; } //タクトスイッチ押下で+1 valSW = digitalRead(A4); if(valSW == 0){ delay(100); valSW = digitalRead(A4); if(valSW == 0){ count = count ++; } } } //タイマー割り込みにより、7セグ表示 void visi(){ one = count%10; ten = count/10; seg10; switch(ten){ case 0:num0;break; case 1:num1;break; case 2:num2;break; case 3:num3;break; case 4:num4;break; case 5:num5;break; case 6:num6;break; case 7:num7;break; case 8:num8;break; case 9:num9;break; } delay(1); seg01; switch(one){ case 0:num0;break; case 1:num1;break; case 2:num2;break; case 3:num3;break; case 4:num4;break; case 5:num5;break; case 6:num6;break; case 7:num7;break; case 8:num8;break; case 9:num9;break; } delay(1); }