/************************************************************* Arduino 7セグLED ルーレット スイッチを押して数字が回転、スイッチをもう一度押してストップ 7が出たら当たりの動作をする 可変抵抗で数字が回る速さを変えられる 著作権は主張しませんので改造転載ご自由にどうぞ:) by ishidourou 2016 *************************************************************/ #define INP 2 //スイッチ入力は2番 #define SSEG 3 //7セグLED先頭は3番 #define BLUE 11 //青いLEDは11番 #define RED 12 //赤いLEDは12番 #define YELLOW 13 //黄色LEDは13番 #define ANAIN 0 //アナログ入力はA0 void setup() { pinMode(INP,INPUT_PULLUP); //スイッチ読み取りのプルアップにarduinoの内蔵抵抗を使用 for (int ii=SSEG; ii<=YELLOW; ii++) //3〜13番までをアウトプット用に初期化 pinMode(ii, OUTPUT); //3〜10番までが7セグLED用 printnum(0,0); //最初は7セグLEDに0を表示しておく } void loop() { int ii=0; while (digitalRead(INP)); //スイッチが押されるのを待つ delay(300); //ウエイトを入れてスイッチが離される間を作る while (digitalRead(INP)){ //スイッチが離されている間数字が回る printnum(ii,map(analogRead(ANAIN),0,1023,1,1000)); //可変抵抗によるディレイをかけて7セグLEDに数値を表示 if (ii==30) ii=0; //30回で3つのLEDが一周、表示する数値をリセット switch (ii){ //10回に一回ごとにLEDを変えて点灯 case 0: led(1,0,0,0);break; case 10: led(0,1,0,0);break; case 20: led(0,0,1,0);break; default: break; } ii++; } if (ii%10 ==7+1){ //7の時大当たり(内部カウンタiiはすでに8になっている) for (int i=0; i<8; i++){ //大当たりの動作・7と3つのLEDが交互に8回点滅 led(0,0,0,300); blackout(); led(1,1,1,300); printnum(7,0); } led(0,0,0,0);//3つのLED消灯 } delay(300); //次のスイッチ入力に備えてタイミング調整 } //指定した数字numを7セグLEDにdlyの間表示 void printnum(int num,int dly){ int led[10][8]={ //数字として点灯するセグメントを配列で指定 {1,1,1,1,1,1,0,0}, //0 [A,B,C,D,E,F,G,DP] {0,1,1,0,0,0,0,0}, //1 {1,1,0,1,1,0,1,0}, //2 {1,1,1,1,0,0,1,0}, //3 {0,1,1,0,0,1,1,0}, //4 {1,0,1,1,0,1,1,0}, //5 {1,0,1,1,1,1,1,0}, //6 {1,1,1,0,0,0,0,0}, //7 {1,1,1,1,1,1,1,0}, //8 {1,1,1,1,0,1,1,0}, //9 }; num%=10; //10の剰余でnumを下一桁だけにしておく for(int pt=SSEG;pt