Stap 2: De Code (Arduino schets)
Hier is de code. Download deze naar je Arduino. U kunt de regels afdrukken negeren omdat dat werd gebruikt voor foutopsporing.Const int rollButton = 14;
Const int secretButton = 15;
Const int diceOne = 0;
Const int diceTwo = 6; 6 toevoegen aan adress pinnen van de tweede dobbelsteen
int rollButtonState = hoog; de huidige lezing van de ROLL pin. HOOG = niet geperst
int lastRollButtonState = hoog; de vorige lezing van de ROLL-pin
int secretButtonState = hoog; de huidige lezing van de geheime pin
int lastSecretButtonState = hoog; de vorige lezing van de geheime pin
de volgende variabelen zijn lange van omdat de tijd, in miliseconden, gemeten
snel zal uitgegroeid tot een groter aantal dan kan worden opgeslagen in een int.
lange lastSecretDebounceTime = 0; de laatste keer dat de uitgang-pins was van een knevel gevoorzid
lange lastRollDebounceTime = 0; de laatste keer dat de uitgang-pins was van een knevel gevoorzid
lange debounceDelay = 55; de ontdendering tijd; verhoging als de uitvoer flikkert
VOID Setup {}
pinMode (0, OUTPUT); eerst sterven LED's
pinMode (1, OUTPUT);
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT); tweede sterven LED's
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);
pinMode (rollButton, INPUT); A0 pin ingesteld als digitale ingang; Dit is ROLL knop
digitalWrite (rollButton, hoge); inschakelen van pullup weerstand
pinMode (secretButton, INPUT); A1 ingesteld als digitale ingang; Dit is de geheime knop
digitalWrite (secretButton, hoge); inschakelen van pullup weerstand
Serial.begin(9600);
randomSeed(analogRead(3)); Als de analoge ingang pin 3 is los, willekeurige analoog
lawaai zal leiden tot de aanroep van randomSeed() te genereren
verschillende zaad nummers elke keer de schets wordt uitgevoerd.
randomSeed() zal dan de random-functie shuffle.
clearAll();
lightOne(0); beide dobbelstenen te lichten die tijdens het wachten voor ROLL schakelaar ingedrukt worden ingesteld
lightOne(7);
}
void loop {}
Serial.Print(rollButtonState);
Serial.println ("= Roll knoptoestand");
Serial.println ("MAIN LOOP");
checkRollButton();
checkSecretButton();
Als (rollButtonState == LOW) / / knop ingedrukt = laag
{
blinkAll (300, 3); knipperen van & all leidde's 3 keer, 300 ms uit elkaar, en dan rollen
}
}
ongeldig checkSecretButton() {}
Lees de stand van de schakelaar in een lokale variabele:
int lezing = digitalRead(secretButton);
Controleer als u gewoon op de knop gedrukt
(dat wil zeggen de input ging van hoog naar laag), en u hebt gewacht
lang genoeg om te negeren geen geluid:
Als de schakeloptie ging laag, als gevolg van lawaai of persen:
Als (lezen == LOW) {}
de debouncing wachttijd
delay(debounceDelay);
lezen = digitalRead(secretButton);
Als (lezen van lage ==) //reading is nog steeds laag na ontdendering vertraging
{
secretButtonState = laag;
Serial.println ("secretRoll-routine laag ingesteld");
lastSecretButtonState = laag; Dit onthoudt de knop werd geduwd en kan alleen opnieuw worden ingesteld na een geheime worp
}
anders
{secretButtonState = hoog;
}
}
anders
{secretButtonState = hoog;
}
}
ongeldig checkRollButton() {}
Lees de stand van de schakelaar in een lokale variabele:
int lezing = digitalRead(rollButton);
Controleer als u gewoon op de knop gedrukt
(dat wil zeggen de input ging van hoog naar laag), en u hebt gewacht
lang genoeg om te negeren geen geluid:
Als de schakeloptie ging laag, als gevolg van lawaai of persen:
Als (lezen == LOW) {}
de debouncing wachttijd
delay(debounceDelay);
lezen = digitalRead(rollButton);
Als (lezen van lage ==) //reading is nog steeds laag na ontdendering vertraging
{rollButtonState = laag;
Serial.println ("CheckRoll-routine laag ingesteld");
}
anders
{rollButtonState = hoog;
}
}
anders
{rollButtonState = hoog;
}
}
VOID lightOne (int diceNumber) {}
Serial.println ("gerold een");
digitalWrite (diceNumber, hoge);
}
VOID lightTwo (int diceNumber) {}
Serial.println ("gerold twee");
digitalWrite (1 + diceNumber, hoge);
digitalWrite (4 + diceNumber, hoge);
}
VOID lightThree (int diceNumber) {}
Serial.println ("gerold drie");
digitalWrite (1 + diceNumber, hoge);
digitalWrite (4 + diceNumber, hoge);
digitalWrite (0 + diceNumber, hoge);
}
VOID lightFour (int diceNumber) {}
Serial.println ("gerold vier");
digitalWrite (3 + diceNumber, hoge);
digitalWrite (1 + diceNumber, hoge);
digitalWrite (4 + diceNumber, hoge);
digitalWrite (6 + diceNumber, hoge);
}
VOID lightFive (int diceNumber) {}
Serial.println ("gerold vijf");
digitalWrite (1 + diceNumber, hoge);
digitalWrite (3 + diceNumber, hoge);
digitalWrite (4 + diceNumber, hoge);
digitalWrite (6 + diceNumber, hoge);
digitalWrite (0 + diceNumber, hoge);
}
VOID lightSix (int diceNumber) {}
Serial.println ("rolde zes");
digitalWrite (1 + diceNumber, hoge);
digitalWrite (2 + diceNumber, hoge);
digitalWrite (3 + diceNumber, hoge);
digitalWrite (4 + diceNumber, hoge);
digitalWrite (5 + diceNumber, hoge);
digitalWrite (6 + diceNumber, hoge);
}
ongeldig clearAll() {}
digitalWrite (0, laag);
digitalWrite (1, laag);
digitalWrite (2, laag);
digitalWrite (3, laag);
digitalWrite (4, laag);
digitalWrite (5, laag);
digitalWrite (6, laag);
digitalWrite (7, laag);
digitalWrite (8, laag);
digitalWrite (9, laag);
digitalWrite (10, laag);
digitalWrite (11, laag);
digitalWrite (12, laag);
digitalWrite (13, laag);
}
VOID blinkAll (int t, int n) {}
clearAll();
voor (int x = 0; x < n; x ++) {/ / Loop n keer
digitalWrite (0, laag);
digitalWrite (1, laag);
digitalWrite (2, laag);
digitalWrite (3, laag);
digitalWrite (4, laag);
digitalWrite (5, laag);
digitalWrite (6, laag);
digitalWrite (7, hoge);
digitalWrite (8, hoge);
digitalWrite (9, hoge);
digitalWrite (10, hoge);
digitalWrite (11, hoge);
digitalWrite (12, hoge);
digitalWrite (13, hoge);
delay(t);
digitalWrite (0, hoge);
digitalWrite (1, hoog);
digitalWrite (2, HIGH);
digitalWrite (3, hoge);
digitalWrite (4, HIGH);
digitalWrite (5, hoge);
digitalWrite (6, hoge);
digitalWrite (7, laag);
digitalWrite (8, laag);
digitalWrite (9, laag);
digitalWrite (10, laag);
digitalWrite (11, laag);
digitalWrite (12, laag);
digitalWrite (13, laag);
delay(t);
}
clearAll();
Controleer eerst als geheime knop eerder werd geduwd
Als (lastSecretButtonState == LOW) / / als geheime knop is ingedrukt, lastSecretButtonState zullen nog steeds laag
{
secretDiceRoll();
}
anders
{
randomDiceRoll();
}
}
ongeldig randomDiceRoll() {}
int randNumber = 6;
/*
testvoorschriften
clearAll();
lightOne(diceOne); beide dobbelstenen te lichten die tijdens het wachten voor ROLL schakelaar ingedrukt worden ingesteld
lightOne(diceTwo);
*/
Serial.println ("ingevoerde Random nummer code");
Serial.Print(rollButtonState);
Serial.println ("= Roll knoptoestand");
voor (int d = 0; d < 8; d = d + 7) {/ / Do eenmaal voor ea sterven
een willekeurig getal van 1 tot en met 6 krijgen
randNumber = willekeurige (6) + 1;
schakelaar (randNumber) {}
Case 1:
lightOne(d);
breken;
Case 2:
lightTwo(d);
breken;
Case 3:
lightThree(d);
breken;
Case 4:
lightFour(d);
breken;
Case 5:
lightFive(d);
breken;
Case 6:
lightSix(d);
breken;
standaard:
clearAll();
breken;
}
}
rollButtonState = hoog;
Serial.println ("verlaten willekeurige numerieke code");
Serial.Print(rollButtonState);
Serial.println ("= Roll knoptoestand");
Serial.println("");
}
VOID secretDiceRoll() {//secret knop veroorzaakt willekeurige dubbelspel
int secretRandNumber = 6;
secretRandNumber = willekeurige (6) + 1;
schakelaar (secretRandNumber) {}
Case 1:
{lightOne(0); lightOne(7); break;}
Case 2:
{lightTwo(0); lightTwo(7); break;}
Case 3:
{lightThree(0); lightThree(7); break;}
Case 4:
{lightFour(0); lightFour(7); break;}
Case 5:
{lightFive(0); lightFive(7); break;}
Case 6:
{lightSix(0); lightSix(7); break;}
standaard:
{clearAll(); break;}
}
secretButtonState = hoog;
lastSecretButtonState = hoog;
}