Vakantie dobbelstenen Roller (2 / 3 stap)

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;
}

Gerelateerde Artikelen

Hoe maak je een elektronische dobbelstenen Roller

Hoe maak je een elektronische dobbelstenen Roller

Deze post detailleert een project die ik ben klaar met afgelopen zomer, een elektronische dobbelstenen rol. In deze post, ik ga over het hoe en waarom ik heb gemaakt, en hoe kunt u een ook!Stap 1: Waarom bouwen een elektronische dobbelstenen Roller?M
AVR Assembler Tutorial 11

AVR Assembler Tutorial 11

Welkom bij Tutorial 11!In deze korte tutorial, zijn we eindelijk het eerste deel van onze laatste project bouwen.Het eerste wat dat u moet doen is gaat u naar de allerlaatste stap van deze tutorial en Bekijk de video. Dan kom hier terug. [onderbreken
Arduino Double Dice Jewelry Box w / Secret Switch

Arduino Double Dice Jewelry Box w / Secret Switch

dit was een leuk project. Druk op de rode knop, Bekijk de dobbelstenen "ROLL" dan op een willekeurige rol meeste elke keer stoppen.Het hart van dit spel is de ATMEL ATmega328P op een stand-alone bord. Powered by 4 AA NiMD batterijen.Vindt u de S
Ik wil mijn GMTV! (tafelblad op een bigscreen)

Ik wil mijn GMTV! (tafelblad op een bigscreen)

WAARSCHUWING! De volgende instructable combineert een project bord met tabletop gaming, en kan dus de geekiest aller tijden. ***Hallo allemaal. Onlangs, mijn kinderen interesseerde in tabletop gaming, en vroeg me om hen te leren hoe te spelen. Ikzelf
AVR Assembler Tutorial 6

AVR Assembler Tutorial 6

Welkom bij Tutorial 6!Today's tutorial zullen kort waar zullen we het ontwikkelen van een eenvoudige methode om gegevens tussen een atmega328p en een andere met twee poorten verbinden hen te delen. Wij zullen vervolgens nemen de dobbelstenen rol van
AVR Assembler Tutorial 8

AVR Assembler Tutorial 8

Welkom bij Tutorial 8!In deze korte tutorial gaan we een beetje een afleiding van de invoering van nieuwe aspecten van assembly language programmering te laten zien hoe onze prototyping componenten verplaatsen naar een aparte "gedrukt" printplaa
AVR Assembler Tutorial 10

AVR Assembler Tutorial 10

Welkom bij Tutorial 10!Sorry dat het zo lang duurde om deze volgende aflevering eruit maar dit is een behoorlijk hectische tijd van het jaar. In ieder geval, is hier het!We hebben een lange weg afgelegd en u bent waarschijnlijk al bekwaam genoeg is o
Hoe maak je een bordspel Using Arduino

Hoe maak je een bordspel Using Arduino

In dit Instructable, zal we je leren hoe je je eigen te maken "u liever... "bordspel met geleidende verf, een Arduino microcontroller en sommige elektronica-onderdelen. Spelers om de beurt bewegen langs de game pad zoals geregisseerd door een el
Kreeft Rolls

Kreeft Rolls

misschien ik nooit geweest naar de juiste inrichting of misschien ik liever moediger smaken, maar wanneer ik ga naar Maine en bestel een kreeft rollen bij een restaurant of kreeft pond ik ben meestal teleurgesteld in wat ik krijg voor de kosten. Het
Curie-aangedreven dobbelstenen

Curie-aangedreven dobbelstenen

Het doel van dit project is het bouwen van een set van zes-zijdige spel dobbelstenen met Curie-aangedreven Arduino 101 planken binnen. Elke matrijs gebruikt de inertial measurement unit (IMU) die is ingebouwd in Curie™ om te bepalen van de resulteren
Upcycled dobbelstenen Tray

Upcycled dobbelstenen Tray

Iedereen krijgt een beetje meer dan ijverig met die laatste rol in het spel wat elke keer in een tijdje. Verzenden van dobbelstenen stijgende in de afgrond thats buiten de rand van de tabel, en blijkbaar onder iets maar de hemel weet wat omdat u niet
Snelle en gemakkelijke dobbelstenen toren

Snelle en gemakkelijke dobbelstenen toren

Mijn familie houdt om te spelen. Veel games betrekken dobbelstenen. Veel dobbelstenen rolt resultaat in geschillen over of het was een echte "broodje" of niet. Het een acceptabel aantal keren tuimelen? Het vreemd land zonder tumbling helemaal? A
Super eenvoudige vakantie-Helper

Super eenvoudige vakantie-Helper

als u bij allen als me bent, je vaak merkt dat je behoefte aan een kalmerende invloed tijdens de vakantie. Misschien heb je peper gespoten tijdens het winkelen op zwarte vrijdag. Misschien is uw neef zojuist gezegd dat ze je oude vriend mist. Voor uw
Maak indruk op uw familie gemakkelijk Thanksgiving pompoen Roll

Maak indruk op uw familie gemakkelijk Thanksgiving pompoen Roll

Velen zijn geïntimideerd door deze vakantie klassieker. Maar u zult zien dat het maken van een heerlijke pompoen roll eenvoudig is. Uw vrienden en familie zullen onder de indruk op uw vaardigheden in de keuken en iedereen krijgt om te genieten van ee