Arduino schacket tar tid (3 / 3 steg)
Steg 3: kod
#define buzz 9
#define redB 2
#define blackB 3
#define redLed 4
#define blackLed 5
#define selectorP A3
int lastbryggan [10] = {6, 7, 8, 10, 11, 12, 13, A0, A1, A2};
långa Speltyp [6] = {300000 1800000, 4500000, 7200000, 60000, 120000};
int gameTypeSelector;
långa rödstjärt = 0, MonoStart = 0;
lång starttid;
booleska redTurn = sant;
void setup() {
pinMode (buzz, OUTPUT);
pinMode (redB, ingång);
pinMode (blackB, ingång);
pinMode (redLed, produktionen);
pinMode (blackLed, produktionen);
för (int jag = 0; jag < = 9; i ++) {
pinMode (lastbryggan [i], produktionen);
}
Serial.BEGIN (9600);
}
void fillLevel (int nivå) {
digitalWrite (lastbryggan [0], låg);
digitalWrite (lastbryggan [1], låg);
digitalWrite (lastbryggan [2], låg);
digitalWrite (lastbryggan [3], låg);
digitalWrite (lastbryggan [4], låg);
digitalWrite (lastbryggan [5], låg);
digitalWrite (lastbryggan [6], låg);
digitalWrite (lastbryggan [7], låg);
digitalWrite (lastbryggan [8], låg);
digitalWrite (lastbryggan [9], låg);
för (int jag = 0; jag < = nivå - 1; i ++) {
digitalWrite (lastbryggan [i], hög);
}
}
void justLevel (int nivå) {
digitalWrite (lastbryggan [0], låg);
digitalWrite (lastbryggan [1], låg);
digitalWrite (lastbryggan [2], låg);
digitalWrite (lastbryggan [3], låg);
digitalWrite (lastbryggan [4], låg);
digitalWrite (lastbryggan [5], låg);
digitalWrite (lastbryggan [6], låg);
digitalWrite (lastbryggan [7], låg);
digitalWrite (lastbryggan [8], låg);
digitalWrite (lastbryggan [9], låg);
digitalWrite (lastbryggan [nivå], hög);
}
int timeBar (boolean timeBaseGame) {
int TB;
om (! timeBaseGame) {/ / om inte en tid baserat spel
gameTypeSelector = karta (analogRead (selectorP), 0, 1023, 0, 5);
långa endTime = Speltyp [gameTypeSelector] + startTime;
Serial.println (Speltyp [gameTypeSelector]);
/*Serial.Print ("starttid:");
Serial.Print (starttid);
Serial.Print ("sluttid:");
Serial.Print (endTime);
Serial.Print ("nu tid:");
Serial.println (millis()); * /
TB = karta (millis (), starttid, sluttid, 0, 10);
om (TB > = 10) {
startTime = millis ();
summern ();
redTurn =! redTurn;
returnera 10.
} annat {
returnera TB;
}
} annat {/ / om tid baserat spel
om (redTurn) {
TB = karta (rödstjärt + (millis() - startTime), 0, Speltyp [gameTypeSelector], 0, 10);
} annat {
TB = karta (MonoStart + (millis() - startTime), 0, Speltyp [gameTypeSelector], 0, 10);
}
om (TB > = 10) {
medan (rödstjärt > = 0 & & MonoStart > = 0) {//Lost av klocka action
om (millis () % 500 == 0) {
summern ();
}
returnera 10.
}
om (digitalRead (blackB)) {//Game RESET
om (digitalRead (redB)) {
redTurn = sant;
Rödstjärt = 0;
MonoStart = 0;
startTime = millis ();
}
} / / Slutet av spelet RESET
} annat {
returnera TB;
}
}
}
void summern () {
tonen (buzz, 400);
fördröjning (300);
noTone (buzz);
}
void loop() { //*****************************************************************************************************
gameTypeSelector = karta (analogRead (selectorP), 0, 1023, 0, 5);
om (Speltyp [gameTypeSelector] < = 120000) {//The 1 minuter och 2 minuter vanlig flytta tid counter
om (redTurn) {
digitalWrite (redLed, hög);
digitalWrite (blackLed, låg);
om (digitalRead (redB)) {
startTime = millis ();
redTurn = false;
summern ();
}
} annat {
digitalWrite (redLed, låg);
digitalWrite (blackLed, hög);
om (digitalRead (blackB)) {
startTime = millis ();
redTurn = sant;
summern ();
}
}
fillLevel (timeBar(false));
} / / slutet av ordinarie flytta tid counter
annat {
om (redTurn) {
digitalWrite (redLed, hög);
digitalWrite (blackLed, låg);
fillLevel (timeBar(true));
om (digitalRead (redB)) {
Rödstjärt = rödstjärt + (millis () - startTime);
Serial.Print ("röda tiden står:");
Serial.Print (rödstjärt);
Serial.Print ("av:");
Serial.println (gameType[gameTypeSelector]);
startTime = millis ();
redTurn = false;
}
} annat {
digitalWrite (redLed, låg);
digitalWrite (blackLed, hög);
fillLevel (timeBar(true));
om (digitalRead (blackB)) {
om (digitalRead (redB)) {/ / spel RESET
digitalWrite (redLed, hög);
digitalWrite (blackLed, hög);
redTurn = sant;
Rödstjärt = 0;
MonoStart = 0;
startTime = millis ();
} / / slutet av spelet återställa
MonoStart = MonoStart + (millis () - startTime);
Serial.Print ("svart tiden står:");
Serial.Print (MonoStart);
Serial.Print ("av:");
Serial.println (gameType[gameTypeSelector]);
startTime = millis ();
redTurn = sant;
}
}
}
} // end void loop ************************************************************************************************************************************