自作早押し機 山栗式初号機 材料などのメモ
費用
【秋月電子通商】
● Arduino Uno 互換マイコンボード (M-15574) 2240円
● USBケーブル Aオス-Bオス 1.5m (C-07605) 130円
● 3.5mm小型ステレオミニジャック 基板取付用 (C-02460) x5 = 250円
● 3.5mm小型ステレオミニジャック パネル取付用 (C-06257) x6 = 450円
● Arduino用ピンソケット (C-17102 + C-17103) x各1 = 110円
● Arduino用ユニバーサル基板 ガラスコンポジット (P-06877) 180円
● 圧電スピーカー (圧電サウンダ)(17mm) (P-04119) 40円
● タクトスイッチ 各色 (P-03646 + P-03647 + P-03649) x各1 30円
● 基板用スライドスイッチ (P-08790) 20円
● プラスチックケース SW-40B (P-17121) x5 = 425円
● スズメッキ線 (0.6mm 10m) (P-02220) x1/10 = 23円
● 5mm赤色LED (100個入) (I-13237) x5/100 = 10円
(小計 3,908円)
【Amazon.co.jp】
● (略)プッシュボタンスイッチ x6/24 = 247円
● Amazonベーシック ステレオミニプラグ オーディオケーブル
3.5mm 2.4m 10点セット x5/10 = 1857円
(小計 2,104円)
【第2大須アメ横ビルの某店】
● 51Ωカーボン抵抗(10個入) x5/10 = 50円
【ダイソー】
● USBミニスピーカー 3W×2 USBケーブル付 330円
総計 6,392円
写真など
ソースコード
const int ButtonI = 3;
const int ButtonII = 2;
const int ButtonIII = A5;
const int ButtonIV = A4;
const int ButtonCor = 12;
const int ButtonWro = 11;
const int ButtonMode = 7;
//ボタンポート番号
const int LEDI = 5;
const int LEDII = 4;
const int LEDIII = A3;
const int LEDIV = A2;
const int LEDStats = 8;
//LEDポート番号
const int Buzzer = A0;
//ブザーポート番号
const int BPIw = 1525;
const int BPIIw = 1200;
//ボタン押し音周波数
const int BPtime = 100;
const int BPtimeII = 400;
//ボタン押し音長さ
const int BCIw = 1525;
const int BCIIw = 1200;
//正解音周波数
const int BCwhile = 5;
//正解音繰り返し数
const int BCtime = 50;
//正解音長さ
const int BWIw = 220;
//誤答音周波数
int stats = 1;
//stats = 1(ボタン1着待ち)
//stats = 2(ボタン押し音再生)
//stats = 3(正誤判定待ち)
//stats = 4(終了処理)
int LMode = 0;
//LMode = 0(1着点滅)
//LMode = 1(2着点灯)
//LMode = 3(全点灯2着記録)
//LMode = 4(エンドレスチャンス2着点灯)
int res = 0;
//res = 1(全関数リセット)
int BCs = 0;
//反復処理用
int pshPl = 0;
int pshPl2 = 0;
int pshPl3 = 0;
int pshPl4 = 0;
//着順毎記録
int pshed = 0;
//記録着数
int ledSec = 0;
int BuzSec = 0;
int CorSec = 0;
//各種ループ数処理
int JdgBtn = 0;
//正誤判定保持用
void setup() {
pinMode(ButtonI, INPUT_PULLUP);
pinMode(ButtonII, INPUT_PULLUP);
pinMode(ButtonIII, INPUT_PULLUP);
pinMode(ButtonIV, INPUT_PULLUP);
pinMode(ButtonCor, INPUT_PULLUP);
pinMode(ButtonWro, INPUT_PULLUP);
pinMode(ButtonMode, INPUT_PULLUP);
pinMode(LEDI, OUTPUT);
pinMode(LEDII, OUTPUT);
pinMode(LEDIII, OUTPUT);
pinMode(LEDIV, OUTPUT);
pinMode(LEDStats, OUTPUT);
pinMode(Buzzer, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
Serial.println("+---+");
while (digitalRead(ButtonI) == 0 || digitalRead(ButtonII) == 0 || digitalRead(ButtonIII) == 0 || digitalRead(ButtonIV) == 0) {
delay(1);
} //長押し対策
digitalWrite(LEDStats, HIGH);
}
void loop() {
while (1) {
if (digitalRead(ButtonI) == 0) {
//stats = 1(ボタン1着待ち)
if (stats == 1) {
pshPl = 1;
pshed = 1;
stats = 2;
digitalWrite (LEDI, HIGH);
Serial.print(" 1");
}
}
if (digitalRead(ButtonII) == 0) {
if (stats == 1) {
pshPl = 2;
pshed = 1;
stats = 2;
digitalWrite (LEDII, HIGH);
Serial.print(" 2");
}
}
if (digitalRead(ButtonIII) == 0) {
if (stats == 1) {
pshPl = 3;
pshed = 1;
stats = 2;
digitalWrite (LEDIII, HIGH);
Serial.print(" 3");
}
}
if (digitalRead(ButtonIV) == 0) {
if (stats == 1) {
pshPl = 4;
pshed = 1;
stats = 2;
digitalWrite (LEDIV, HIGH);
Serial.print(" 4");
}
}
if (stats == 1) {
if ( digitalRead(ButtonCor) == 0) {
BCs = 1;
while ( digitalRead(ButtonCor) == 0 || BCs > 0) {
BCs = BCs - 1;
noTone(Buzzer);
tone(Buzzer, BCIw);
delay(BCtime);
noTone(Buzzer);
tone(Buzzer, BCIIw);
delay(BCtime);
}
tone(Buzzer, BCIIw);
delay(200);
noTone(Buzzer);
BCs = 0;
}
if ( digitalRead(ButtonWro) == 0) {
tone(Buzzer, BWIw);
BCs = 5;
while ( digitalRead(ButtonWro) == 0 || BCs > 0) {
BCs = BCs - 1;
delay(10);
}
noTone(Buzzer);
BCs = 0;
}
if (digitalRead(ButtonMode) == 0) {
if (LMode == 0) {
//LMode = 1(2着点灯)への移行表示
LMode = 1;
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(100);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
} else if (LMode == 1) {
//LMode = 3(全点灯2着記録)への移行表示
LMode = 3;
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
} else if (LMode == 3) {
//LMode = 4(エンドレスチャンス2着点灯)への移行表示
LMode = 4;
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
} else if (LMode == 4) {
//LMode = 0(1着点滅)への移行表示
LMode = 0;
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(200);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
}
while (digitalRead(ButtonMode) == 0) {
}
//長押し対策
}
}
if (stats != 1) {
if (stats == 2) {
digitalWrite(LEDStats, LOW);
BuzSec++;
if (BuzSec == 1) {
tone(Buzzer, BPIw);
}
if (BuzSec == BPtime*10) {
noTone(Buzzer);
tone(Buzzer, BPIIw);
}
if (BuzSec == BPtime*10 + BPtimeII*10) {
noTone(Buzzer);
stats = 3;
BuzSec = 0;
}
if ( digitalRead(ButtonWro) == 0) {
JdgBtn = 1;
}
if ( digitalRead(ButtonCor) == 0) {
JdgBtn = 2;
}
}
if ( stats == 2 || stats == 3 ) {
delay(0.1);
ledSec++;
if (ledSec == 2000) {
if (pshPl == 1) {
digitalWrite (LEDI, HIGH);
}
if (pshPl == 2) {
digitalWrite (LEDII, HIGH);
}
if (pshPl == 3) {
digitalWrite (LEDIII, HIGH);
}
if (pshPl == 4) {
digitalWrite (LEDIV, HIGH);
}
}
if (ledSec == 8000) {
if (pshPl == 1) {
digitalWrite (LEDI, LOW);
}
if (pshPl == 2) {
digitalWrite (LEDII, LOW);
}
if (pshPl == 3) {
digitalWrite (LEDIII, LOW);
}
if (pshPl == 4) {
digitalWrite (LEDIV, LOW);
}
ledSec = 0;
}
if (pshed == 1 && LMode != 0) {
if (digitalRead(ButtonI) == 0 && pshPl != 1) {
digitalWrite (LEDI, HIGH);
pshPl2 = 1;
pshed = 2;
}
if (digitalRead(ButtonII) == 0 && pshPl != 2) {
digitalWrite (LEDII, HIGH);
pshed = 2;
pshPl2 = 2;
}
if (digitalRead(ButtonIII) == 0 && pshPl != 3) {
digitalWrite (LEDIII, HIGH);
pshed = 2;
pshPl2 = 3;
}
if (digitalRead(ButtonIV) == 0 && pshPl != 4) {
digitalWrite (LEDIV, HIGH);
pshed = 2;
pshPl2 = 4;
}
}
if (pshed == 2 && LMode == 3) {
if (digitalRead(ButtonI) == 0 && pshPl != 1) {
digitalWrite (LEDI, HIGH);
}
if (digitalRead(ButtonII) == 0 && pshPl != 2) {
digitalWrite (LEDII, HIGH);
}
if (digitalRead(ButtonIII) == 0 && pshPl != 3) {
digitalWrite (LEDIII, HIGH);
}
if (digitalRead(ButtonIV) == 0 && pshPl != 4) {
digitalWrite (LEDIV, HIGH);
}
}
if (pshed == 2 && LMode == 4) {
if (digitalRead(ButtonI) == 0 && pshPl != 1 && pshPl2 != 1) {
pshPl3 = 1;
pshed = 3;
}
if (digitalRead(ButtonII) == 0 && pshPl != 2 && pshPl2 != 2) {
pshPl3 = 2;
pshed = 3;
}
if (digitalRead(ButtonIII) == 0 && pshPl != 3 && pshPl2 != 3) {
pshPl3 = 3;
pshed = 3;
}
if (digitalRead(ButtonIV) == 0 && pshPl != 4 && pshPl2 != 4) {
pshPl3 = 4;
pshed = 3;
}
}
if (pshed == 3 && LMode == 4) {
if (digitalRead(ButtonI) == 0 && pshPl != 1 && pshPl2 != 1 && pshPl3 != 1) {
pshPl4 = 1;
pshed = 4;
}
if (digitalRead(ButtonII) == 0 && pshPl != 2 && pshPl2 != 2 && pshPl3 != 2) {
pshPl4 = 2;
pshed = 4;
}
if (digitalRead(ButtonIII) == 0 && pshPl != 3 && pshPl2 != 3 && pshPl3 != 3) {
pshPl4 = 3;
pshed = 4;
}
if (digitalRead(ButtonIV) == 0 && pshPl != 4 && pshPl2 != 4 && pshPl3 != 4) {
pshPl4 = 4;
pshed = 4;
}
}
}
if (stats == 3) {
if (LMode == 0) {
if ( digitalRead(ButtonWro) == 0 || JdgBtn == 1 ) {
JdgBtn = 0;
digitalWrite (LEDI, LOW);
digitalWrite (LEDII, LOW);
digitalWrite (LEDIII, LOW);
digitalWrite (LEDIV, LOW);
Serial.println(" X ");
stats = 4;
tone(Buzzer, BWIw);
delay(100);
noTone(Buzzer);
delay(75);
tone(Buzzer, BWIw);
delay(600);
noTone(Buzzer);
}
} else if (LMode != 0 ) {
if ( digitalRead(ButtonWro) == 0 || JdgBtn == 1 ) {
JdgBtn = 0;
digitalWrite (LEDI, LOW);
digitalWrite (LEDII, LOW);
digitalWrite (LEDIII, LOW);
digitalWrite (LEDIV, LOW);
Serial.println(" X ");
tone(Buzzer, BWIw);
delay(100);
noTone(Buzzer);
delay(75);
tone(Buzzer, BWIw);
delay(600);
noTone(Buzzer);
if (pshPl2 != 0) {
pshPl = pshPl2;
pshPl2 = 0;
if (pshPl == 1) {
digitalWrite (LEDI, HIGH);
Serial.print(" 1");
}
if (pshPl == 2) {
digitalWrite (LEDII, HIGH);
Serial.print(" 2");
}
if (pshPl == 3) {
digitalWrite (LEDIII, HIGH);
Serial.print(" 3");
}
if (pshPl == 4) {
digitalWrite (LEDIV, HIGH);
Serial.print(" 4");
}
pshed = 1;
if (pshPl3 != 0) {
pshPl2 = pshPl3;
pshPl3 = 0;
if (pshPl2 == 1) {
digitalWrite (LEDI, HIGH);
}
if (pshPl2 == 2) {
digitalWrite (LEDII, HIGH);
}
if (pshPl2 == 3) {
digitalWrite (LEDIII, HIGH);
}
if (pshPl2 == 4) {
digitalWrite (LEDIV, HIGH);
}
pshed = 2;
if (pshPl4 != 0) {
pshPl3 = pshPl4;
pshPl4 = 0;
pshed = 3;
}
}
stats = 2;
} else if (pshPl2 == 0) {
stats = 4;
}
}
}
if ( digitalRead(ButtonCor) == 0 || JdgBtn == 2 ) {
JdgBtn = 0;
digitalWrite (LEDI, LOW);
digitalWrite (LEDII, LOW);
digitalWrite (LEDIII, LOW);
digitalWrite (LEDIV, LOW);
if (pshPl == 1) {
digitalWrite (LEDI, HIGH);
}
if (pshPl == 2) {
digitalWrite (LEDII, HIGH);
}
if (pshPl == 3) {
digitalWrite (LEDIII, HIGH);
}
if (pshPl == 4) {
digitalWrite (LEDIV, HIGH);
}
Serial.println(" O ");
stats = 4;
BCs = BCwhile;
while ( digitalRead(ButtonCor) == 0 || BCs > 0) {
BCs = BCs - 1;
noTone(Buzzer);
tone(Buzzer, BCIw);
delay(BCtime);
noTone(Buzzer);
tone(Buzzer, BCIIw);
delay(BCtime);
const int ButtonII = 2;
const int ButtonIII = A5;
const int ButtonIV = A4;
const int ButtonCor = 12;
const int ButtonWro = 11;
const int ButtonMode = 7;
//ボタンポート番号
const int LEDI = 5;
const int LEDII = 4;
const int LEDIII = A3;
const int LEDIV = A2;
const int LEDStats = 8;
//LEDポート番号
const int Buzzer = A0;
//ブザーポート番号
const int BPIw = 1525;
const int BPIIw = 1200;
//ボタン押し音周波数
const int BPtime = 100;
const int BPtimeII = 400;
//ボタン押し音長さ
const int BCIw = 1525;
const int BCIIw = 1200;
//正解音周波数
const int BCwhile = 5;
//正解音繰り返し数
const int BCtime = 50;
//正解音長さ
const int BWIw = 220;
//誤答音周波数
int stats = 1;
//stats = 1(ボタン1着待ち)
//stats = 2(ボタン押し音再生)
//stats = 3(正誤判定待ち)
//stats = 4(終了処理)
int LMode = 0;
//LMode = 0(1着点滅)
//LMode = 1(2着点灯)
//LMode = 3(全点灯2着記録)
//LMode = 4(エンドレスチャンス2着点灯)
int res = 0;
//res = 1(全関数リセット)
int BCs = 0;
//反復処理用
int pshPl = 0;
int pshPl2 = 0;
int pshPl3 = 0;
int pshPl4 = 0;
//着順毎記録
int pshed = 0;
//記録着数
int ledSec = 0;
int BuzSec = 0;
int CorSec = 0;
//各種ループ数処理
int JdgBtn = 0;
//正誤判定保持用
void setup() {
pinMode(ButtonI, INPUT_PULLUP);
pinMode(ButtonII, INPUT_PULLUP);
pinMode(ButtonIII, INPUT_PULLUP);
pinMode(ButtonIV, INPUT_PULLUP);
pinMode(ButtonCor, INPUT_PULLUP);
pinMode(ButtonWro, INPUT_PULLUP);
pinMode(ButtonMode, INPUT_PULLUP);
pinMode(LEDI, OUTPUT);
pinMode(LEDII, OUTPUT);
pinMode(LEDIII, OUTPUT);
pinMode(LEDIV, OUTPUT);
pinMode(LEDStats, OUTPUT);
pinMode(Buzzer, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
Serial.println("+---+");
while (digitalRead(ButtonI) == 0 || digitalRead(ButtonII) == 0 || digitalRead(ButtonIII) == 0 || digitalRead(ButtonIV) == 0) {
delay(1);
} //長押し対策
digitalWrite(LEDStats, HIGH);
}
void loop() {
while (1) {
if (digitalRead(ButtonI) == 0) {
//stats = 1(ボタン1着待ち)
if (stats == 1) {
pshPl = 1;
pshed = 1;
stats = 2;
digitalWrite (LEDI, HIGH);
Serial.print(" 1");
}
}
if (digitalRead(ButtonII) == 0) {
if (stats == 1) {
pshPl = 2;
pshed = 1;
stats = 2;
digitalWrite (LEDII, HIGH);
Serial.print(" 2");
}
}
if (digitalRead(ButtonIII) == 0) {
if (stats == 1) {
pshPl = 3;
pshed = 1;
stats = 2;
digitalWrite (LEDIII, HIGH);
Serial.print(" 3");
}
}
if (digitalRead(ButtonIV) == 0) {
if (stats == 1) {
pshPl = 4;
pshed = 1;
stats = 2;
digitalWrite (LEDIV, HIGH);
Serial.print(" 4");
}
}
if (stats == 1) {
if ( digitalRead(ButtonCor) == 0) {
BCs = 1;
while ( digitalRead(ButtonCor) == 0 || BCs > 0) {
BCs = BCs - 1;
noTone(Buzzer);
tone(Buzzer, BCIw);
delay(BCtime);
noTone(Buzzer);
tone(Buzzer, BCIIw);
delay(BCtime);
}
tone(Buzzer, BCIIw);
delay(200);
noTone(Buzzer);
BCs = 0;
}
if ( digitalRead(ButtonWro) == 0) {
tone(Buzzer, BWIw);
BCs = 5;
while ( digitalRead(ButtonWro) == 0 || BCs > 0) {
BCs = BCs - 1;
delay(10);
}
noTone(Buzzer);
BCs = 0;
}
if (digitalRead(ButtonMode) == 0) {
if (LMode == 0) {
//LMode = 1(2着点灯)への移行表示
LMode = 1;
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(100);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
} else if (LMode == 1) {
//LMode = 3(全点灯2着記録)への移行表示
LMode = 3;
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
} else if (LMode == 3) {
//LMode = 4(エンドレスチャンス2着点灯)への移行表示
LMode = 4;
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
delay(50);
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(100);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
} else if (LMode == 4) {
//LMode = 0(1着点滅)への移行表示
LMode = 0;
tone(Buzzer, 660);
digitalWrite(LEDStats, LOW);
delay(200);
digitalWrite(LEDStats, HIGH);
noTone(Buzzer);
}
while (digitalRead(ButtonMode) == 0) {
}
//長押し対策
}
}
if (stats != 1) {
if (stats == 2) {
digitalWrite(LEDStats, LOW);
BuzSec++;
if (BuzSec == 1) {
tone(Buzzer, BPIw);
}
if (BuzSec == BPtime*10) {
noTone(Buzzer);
tone(Buzzer, BPIIw);
}
if (BuzSec == BPtime*10 + BPtimeII*10) {
noTone(Buzzer);
stats = 3;
BuzSec = 0;
}
if ( digitalRead(ButtonWro) == 0) {
JdgBtn = 1;
}
if ( digitalRead(ButtonCor) == 0) {
JdgBtn = 2;
}
}
if ( stats == 2 || stats == 3 ) {
delay(0.1);
ledSec++;
if (ledSec == 2000) {
if (pshPl == 1) {
digitalWrite (LEDI, HIGH);
}
if (pshPl == 2) {
digitalWrite (LEDII, HIGH);
}
if (pshPl == 3) {
digitalWrite (LEDIII, HIGH);
}
if (pshPl == 4) {
digitalWrite (LEDIV, HIGH);
}
}
if (ledSec == 8000) {
if (pshPl == 1) {
digitalWrite (LEDI, LOW);
}
if (pshPl == 2) {
digitalWrite (LEDII, LOW);
}
if (pshPl == 3) {
digitalWrite (LEDIII, LOW);
}
if (pshPl == 4) {
digitalWrite (LEDIV, LOW);
}
ledSec = 0;
}
if (pshed == 1 && LMode != 0) {
if (digitalRead(ButtonI) == 0 && pshPl != 1) {
digitalWrite (LEDI, HIGH);
pshPl2 = 1;
pshed = 2;
}
if (digitalRead(ButtonII) == 0 && pshPl != 2) {
digitalWrite (LEDII, HIGH);
pshed = 2;
pshPl2 = 2;
}
if (digitalRead(ButtonIII) == 0 && pshPl != 3) {
digitalWrite (LEDIII, HIGH);
pshed = 2;
pshPl2 = 3;
}
if (digitalRead(ButtonIV) == 0 && pshPl != 4) {
digitalWrite (LEDIV, HIGH);
pshed = 2;
pshPl2 = 4;
}
}
if (pshed == 2 && LMode == 3) {
if (digitalRead(ButtonI) == 0 && pshPl != 1) {
digitalWrite (LEDI, HIGH);
}
if (digitalRead(ButtonII) == 0 && pshPl != 2) {
digitalWrite (LEDII, HIGH);
}
if (digitalRead(ButtonIII) == 0 && pshPl != 3) {
digitalWrite (LEDIII, HIGH);
}
if (digitalRead(ButtonIV) == 0 && pshPl != 4) {
digitalWrite (LEDIV, HIGH);
}
}
if (pshed == 2 && LMode == 4) {
if (digitalRead(ButtonI) == 0 && pshPl != 1 && pshPl2 != 1) {
pshPl3 = 1;
pshed = 3;
}
if (digitalRead(ButtonII) == 0 && pshPl != 2 && pshPl2 != 2) {
pshPl3 = 2;
pshed = 3;
}
if (digitalRead(ButtonIII) == 0 && pshPl != 3 && pshPl2 != 3) {
pshPl3 = 3;
pshed = 3;
}
if (digitalRead(ButtonIV) == 0 && pshPl != 4 && pshPl2 != 4) {
pshPl3 = 4;
pshed = 3;
}
}
if (pshed == 3 && LMode == 4) {
if (digitalRead(ButtonI) == 0 && pshPl != 1 && pshPl2 != 1 && pshPl3 != 1) {
pshPl4 = 1;
pshed = 4;
}
if (digitalRead(ButtonII) == 0 && pshPl != 2 && pshPl2 != 2 && pshPl3 != 2) {
pshPl4 = 2;
pshed = 4;
}
if (digitalRead(ButtonIII) == 0 && pshPl != 3 && pshPl2 != 3 && pshPl3 != 3) {
pshPl4 = 3;
pshed = 4;
}
if (digitalRead(ButtonIV) == 0 && pshPl != 4 && pshPl2 != 4 && pshPl3 != 4) {
pshPl4 = 4;
pshed = 4;
}
}
}
if (stats == 3) {
if (LMode == 0) {
if ( digitalRead(ButtonWro) == 0 || JdgBtn == 1 ) {
JdgBtn = 0;
digitalWrite (LEDI, LOW);
digitalWrite (LEDII, LOW);
digitalWrite (LEDIII, LOW);
digitalWrite (LEDIV, LOW);
Serial.println(" X ");
stats = 4;
tone(Buzzer, BWIw);
delay(100);
noTone(Buzzer);
delay(75);
tone(Buzzer, BWIw);
delay(600);
noTone(Buzzer);
}
} else if (LMode != 0 ) {
if ( digitalRead(ButtonWro) == 0 || JdgBtn == 1 ) {
JdgBtn = 0;
digitalWrite (LEDI, LOW);
digitalWrite (LEDII, LOW);
digitalWrite (LEDIII, LOW);
digitalWrite (LEDIV, LOW);
Serial.println(" X ");
tone(Buzzer, BWIw);
delay(100);
noTone(Buzzer);
delay(75);
tone(Buzzer, BWIw);
delay(600);
noTone(Buzzer);
if (pshPl2 != 0) {
pshPl = pshPl2;
pshPl2 = 0;
if (pshPl == 1) {
digitalWrite (LEDI, HIGH);
Serial.print(" 1");
}
if (pshPl == 2) {
digitalWrite (LEDII, HIGH);
Serial.print(" 2");
}
if (pshPl == 3) {
digitalWrite (LEDIII, HIGH);
Serial.print(" 3");
}
if (pshPl == 4) {
digitalWrite (LEDIV, HIGH);
Serial.print(" 4");
}
pshed = 1;
if (pshPl3 != 0) {
pshPl2 = pshPl3;
pshPl3 = 0;
if (pshPl2 == 1) {
digitalWrite (LEDI, HIGH);
}
if (pshPl2 == 2) {
digitalWrite (LEDII, HIGH);
}
if (pshPl2 == 3) {
digitalWrite (LEDIII, HIGH);
}
if (pshPl2 == 4) {
digitalWrite (LEDIV, HIGH);
}
pshed = 2;
if (pshPl4 != 0) {
pshPl3 = pshPl4;
pshPl4 = 0;
pshed = 3;
}
}
stats = 2;
} else if (pshPl2 == 0) {
stats = 4;
}
}
}
if ( digitalRead(ButtonCor) == 0 || JdgBtn == 2 ) {
JdgBtn = 0;
digitalWrite (LEDI, LOW);
digitalWrite (LEDII, LOW);
digitalWrite (LEDIII, LOW);
digitalWrite (LEDIV, LOW);
if (pshPl == 1) {
digitalWrite (LEDI, HIGH);
}
if (pshPl == 2) {
digitalWrite (LEDII, HIGH);
}
if (pshPl == 3) {
digitalWrite (LEDIII, HIGH);
}
if (pshPl == 4) {
digitalWrite (LEDIV, HIGH);
}
Serial.println(" O ");
stats = 4;
BCs = BCwhile;
while ( digitalRead(ButtonCor) == 0 || BCs > 0) {
BCs = BCs - 1;
noTone(Buzzer);
tone(Buzzer, BCIw);
delay(BCtime);
noTone(Buzzer);
tone(Buzzer, BCIIw);
delay(BCtime);
コメント
コメントを投稿