Holiday Dice Roller (2 / 3 steg)

Steg 2: Koden (Arduino skiss)

Här är koden. Ladda ner detta i din Arduino. Du kan ignorera tryckta raderna eftersom som användes för avlusning.

CONST int rollButton = 14.
CONST int secretButton = 15.

CONST int diceOne = 0;
CONST int diceTwo = 6; Lägg till 6 till adress stift av andra dö

int rollButtonState = hög; den nuvarande behandlingen från rulle stift. HÖG = inte pressad
int lastRollButtonState = hög; den föregående behandlingen från rulle stift
int secretButtonState = hög; den nuvarande behandlingen från den hemliga pin
int lastSecretButtonState = hög; den föregående behandlingen från den hemliga pin

följande variabler är lång eftersom tiden, i millisekunder,
kommer snabbt att bli ett större antal än kan lagras i en int.
lång lastSecretDebounceTime = 0; sista gången utgångsstiftet var växlas
lång lastRollDebounceTime = 0; sista gången utgångsstiftet var växlas
lång debounceDelay = 55. debounce tiden; öka om utdata flimrar

void setup() {

pinMode (0, OUTPUT); först dör lysdioder
pinMode (1, OUTPUT);
pinMode (2, utgång);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);

pinMode (7, OUTPUT); för det andra dö lysdioder
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);

pinMode (rollButton, ingång); anger A0 pin som digital ingång; Detta är ROLL knappen
digitalWrite (rollButton, hög); slå på pullup motstånd

pinMode (secretButton, ingång); anger A1 som digital ingång; Detta är hemliga knappen
digitalWrite (secretButton, hög); slå på pullup motstånd

Serial.BEGIN(9600);

randomSeed(analogRead(3)); om analog insignal stift 3 är osammanhängande, slumpmässiga analog
buller gör anropet till randomSeed() att generera
olika utsäde nummer varje gång skissen körs.
randomSeed() kommer sedan shuffle funktionen random.

clearAll();

lightOne(0); ange båda tärningarna till ljus dem fördriva tiden väntan för rulle switch pressas
lightOne(7);
}

void loop() {

Serial.Print(rollButtonState);
Serial.println ("= rulle knappläge");
Serial.println ("MAIN LOOP");

checkRollButton();
checkSecretButton();
om (rollButtonState == låg) / / knappen nedtryckt = låg
{
blinkAll (300, 3); blinka för & alla led's 3 gånger, 300 ms isär, och sedan rulla
}

}

void checkSecretButton() {
Läs statligt av växeln till en lokal variabel:
int läsa = digitalRead(secretButton);

Kontrollera om du bara tryckt på knappen
(dvs. ingående gick från hög till låg), och du har väntat
tillräckligt länge för att ignorera något buller:

Om växeln gick låg, på grund av buller eller trycka:
om (läser == låg) {
vänta debouncing tiden
Delay(debounceDelay);
läsning = digitalRead(secretButton);
om (läser == låg) //reading är fortfarande låg efter debounce fördröjning
{
secretButtonState = låg;
Serial.println ("secretRoll rutinmässigt ställa låg").
lastSecretButtonState = låg; Detta minns knappen pressades och kan bara återställas efter en hemlig rulle
}
annat
{secretButtonState = hög;
}
}
annat
{secretButtonState = hög;
}
}

void checkRollButton() {
Läs statligt av växeln till en lokal variabel:
int läsa = digitalRead(rollButton);

Kontrollera om du bara tryckt på knappen
(dvs. ingående gick från hög till låg), och du har väntat
tillräckligt länge för att ignorera något buller:

Om växeln gick låg, på grund av buller eller trycka:
om (läser == låg) {
vänta debouncing tiden
Delay(debounceDelay);
läsning = digitalRead(rollButton);
om (läser == låg) //reading är fortfarande låg efter debounce fördröjning
{rollButtonState = låg;
Serial.println ("CheckRoll rutinmässigt ställa låg").
}
annat
{rollButtonState = hög;
}
}
annat
{rollButtonState = hög;
}

}

void lightOne (int diceNumber) {
Serial.println ("rullade en");
digitalWrite (diceNumber, hög);
}

void lightTwo (int diceNumber) {
Serial.println ("rullade två");
digitalWrite (1 + diceNumber, hög);
digitalWrite (4 + diceNumber, hög);
}

void lightThree (int diceNumber) {
Serial.println ("rullade tre");
digitalWrite (1 + diceNumber, hög);
digitalWrite (4 + diceNumber, hög);
digitalWrite (0 + diceNumber, hög);
}

void lightFour (int diceNumber) {
Serial.println ("rullade fyra");
digitalWrite (3 + diceNumber, hög);
digitalWrite (1 + diceNumber, hög);
digitalWrite (4 + diceNumber, hög);
digitalWrite (6 + diceNumber, hög);
}

void lightFive (int diceNumber) {
Serial.println ("rullade fem");
digitalWrite (1 + diceNumber, hög);
digitalWrite (3 + diceNumber, hög);
digitalWrite (4 + diceNumber, hög);
digitalWrite (6 + diceNumber, hög);
digitalWrite (0 + diceNumber, hög);
}

void lightSix (int diceNumber) {
Serial.println ("rullade sex");
digitalWrite (1 + diceNumber, hög);
digitalWrite (2 + diceNumber, hög);
digitalWrite (3 + diceNumber, hög);
digitalWrite (4 + diceNumber, hög);
digitalWrite (5 + diceNumber, hög);
digitalWrite (6 + diceNumber, hög);
}

void clearAll() {
digitalWrite (0, låg);
digitalWrite (1, låg);
digitalWrite (2, låg).
digitalWrite (3, låg).
digitalWrite (4, låg).
digitalWrite (5, låg).
digitalWrite (6, låg).
digitalWrite (7, låg).
digitalWrite 8, låg.
digitalWrite (9, låg).
digitalWrite (10, låg).
digitalWrite (11, låg).
digitalWrite 12, låg.
digitalWrite 13, låg.
}

void blinkAll (int t, int n) {
clearAll();
för (int x = 0; x < n; x ++) {/ / slinga n gånger
digitalWrite (0, låg);
digitalWrite (1, låg);
digitalWrite (2, låg).
digitalWrite (3, låg).
digitalWrite (4, låg).
digitalWrite (5, låg).
digitalWrite (6, låg).
digitalWrite (7, hög).
digitalWrite 8, hög.
digitalWrite (9, hög).
digitalWrite 10, hög.
digitalWrite (11, hög).
digitalWrite 12, hög.
digitalWrite 13, hög.

Delay(t);

digitalWrite (0, hög);
digitalWrite (1, hög);
digitalWrite (2, hög).
digitalWrite (3, hög).
digitalWrite (4, hög).
digitalWrite 5, hög,
digitalWrite (6, hög).
digitalWrite (7, låg).
digitalWrite 8, låg.
digitalWrite (9, låg).
digitalWrite (10, låg).
digitalWrite (11, låg).
digitalWrite 12, låg.
digitalWrite 13, låg.

Delay(t);
}

clearAll();

Kontrollera först om hemliga knappen tidigare sköts
om (lastSecretButtonState == låg) / / om hemliga knappen har tryckts, lastSecretButtonState fortfarande kommer att vara låg
{
secretDiceRoll();
}
annat
{
randomDiceRoll();
}

}

void randomDiceRoll() {

int randNumber = 6;

/*
Provningsmetod
clearAll();

lightOne(diceOne); ange båda tärningarna till ljus dem fördriva tiden väntan för rulle switch pressas
lightOne(diceTwo);
*/

Serial.println ("Random nummer koden");
Serial.Print(rollButtonState);
Serial.println ("= rulle knappläge");

för (int d = 0; d < 8; d = d + 7) {/ / gör en gång för ea dö

få ett slumpmässigt nummer från 1 till 6
randNumber = random (6) + 1;

växel (randNumber) {

fall 1:
lightOne(d);
bryta;

fall 2:
lightTwo(d);
bryta;

fall 3:
lightThree(d);
bryta;

fall 4:
lightFour(d);
bryta;

fall 5:
lightFive(d);
bryta;

fall 6:
lightSix(d);
bryta;

standard:
clearAll();
bryta;
}
}

rollButtonState = hög;

Serial.println ("lämnat slumpmässiga nummer kod").
Serial.Print(rollButtonState);
Serial.println ("= rulle knappläge");
Serial.println("");

}

void secretDiceRoll() {//secret knappen gör slumpmässiga dubbel

int secretRandNumber = 6;

secretRandNumber = random (6) + 1;

växel (secretRandNumber) {

fall 1:
{lightOne(0); lightOne(7); break;}

fall 2:
{lightTwo(0); lightTwo(7); break;}

fall 3:
{lightThree(0); lightThree(7); break;}

fall 4:
{lightFour(0); lightFour(7); break;}

fall 5:
{lightFive(0); lightFive(7); break;}

fall 6:
{lightSix(0); lightSix(7); break;}

standard:
{clearAll(), break;}
}
secretButtonState = hög;
lastSecretButtonState = hög;
}

Se Steg
Relaterade Ämnen

3D tryckt Microcontroller Dice Roller

Detta är ett bara-på-skoj projekt jag gjorde i Digilent MakerSpace. Oftast när jag spelar brädspel använder jag en tärning-rullande smartphone app eftersom tärningarna är så lätt att förlora. Jag tänkte jag skulle prova att göra min egen Hårdvaruvers...

Hur man gör en elektronisk tärning Roller

Det här inlägget Detaljer ett projekt jag avslutade förra sommaren, en elektronisk tärning roller. I detta inlägg, jag ska gå över hur och varför jag skapade det, och hur kan du göra en alltför!Steg 1: Varför bygga en elektronisk tärning Roller?Mitt...

Hur man spela Liar Dice

för Piraten i Karibien fläktar, du kommer förmodligen känna igen detta spel. Jag fick lära mig detta spel medan jag stoppades för natten på min senaste cross country roadtrip av olika slag. Liar Dice, eller Liar's Dice eller Perudo eller Dudo eller r...

AVR Assembler handledning 11

Välkommen till handledning 11!I den här korta guiden kommer vi slutligen att bygga den första delen av vårt sista projekt.Det första du bör göra är att gå till det allra sista steget i denna tutorial och titta på videon. Sedan komma tillbaka hit. [pa...

AVR Assembler handledning 6

Välkommen till Tutorial 6!Dagens handledning kommer att vara kort där vi kommer att utveckla en enkel metod att kommunicera data mellan en atmega328p och en med två portar ansluta dem. Vi kommer ta sedan tärningarna rullen från läraren 4 och registre...

AVR Assembler Övningsexempel 9

Välkommen till Övningsexempel 9.Idag kommer vi att visa hur du kan styra både 7-segment display och en 4-siffrig display med våra ATmega328P och AVR assembler kod. I samband med detta får vi ta omvägar till hur du använder stacken för att minska anta...

AVR Assembler handledning 10

Välkommen till handledning 10!Ledsen att det tog så lång tid för att få denna nästa avbetalning ut men detta är en ganska hektisk tid på året. I alla fall, är här det!Vi har kommit långt och du förmodligen redan är kompetenta nog att skriva många int...

Hur man gör ett brädspel med Arduino

i detta Instructable, ska vi lära dig hur du skapar din egen "skulle du hellre... "brädspel med hjälp av Konduktiv färg, en Arduino mikrokontroller och vissa elektronikkomponenter. Spelarna turas om att flytta på spelet vägen som regisserades av...

2 x 2 magnetiska Dice kub

strax efter avslutad mitt magnetisk Rubiks Dice kub, jag började tänka över möjligheten att skapa ett 2 x 2 version av dice kuben.Först av alla, vissa terminologi av kuben som du behöver veta. En "cubie" hänvisar till någon av de små sub tärning...

Magnetiska Rubiks kub Dice

detta projekt är en modifierad version av gfixler's magnetiska akryl Rubiks kub och använder röd genomskinlig tärning istället för klar akryl kuber. Jag ger kredit för tärningarna idé att ella och andyholloway, som skulle bygga en tärning kub, men ja...

Snabb och enkel Dice Tower

Min familj älskar att spela spel. Många spel innebär tärningarna. Många tärningar rullar resultatet i tvister över om det var en riktig "rulle" eller inte. Det tumla ett godtagbart antal gånger? Det underligt mark utan tumlande alls? Alla tviste...

Vinyl Record Holiday Tree

För alla er semester musik älskarna * ute, härs en icke-traditionell julgran som hjälper dig att få dina riktiga träd-fri vinter wonderland spår på.Detta är en vägg monterade 'träd' från vintage holiday LP-skivor och en vintage inspirerade skivspelar...

Upcycled Dice fack

Alla får lite nitisk med att sista utbyggnaden i vad spelet varje gång på ett tag. Skicka dice sväva i den avgrund som är utanför kanten av bordet och tydligen under något, men himlen vet vad eftersom du inte kommer se det dö igen tills du flyttar.Ja...

Uppfinning Dice

även den mest kreativa människor fastnar för idéer då och då - här är ett sätt att generera nya idéer - uppfinning Dice - en metod för att göra musa mindre ombytlig.Det är en uppsättning sex tärningar - var och en har ett tema; teman är:MaterialDrivk...

Rollie Raksha älvor

detta är det bästa DIY litet fickformat semestern närvarande någonsin! Både barn och vuxna kan inte låta bli att Le när de ser dessa små killarna rulla huvudet-över-feet ner en ramp!Inspiration: Jag gjorde dessa alver som stocking stuffers för mina p...

Holiday DIY: Ombre ornament

jul filmer och specialare har spelat en stor roll i hur vi vårdar denna tid på året. Det finns inget bättre än att titta på A Charlie Brown Christmas eller hur the Grinchen stal julen. De ger oss något ganska kul att relatera till vid denna tid på år...

Ruggig Holiday Bag

I denna tutorial kommer jag visa dig hur man gör en ruggig holiday väska som är bara om tillräckligt stor för att Linda en boll av garn eller en liten kvav leksak.Steg 1: Klipp ut tyget Ett alternativ är att skriva ut detta tyg, en av de många fantas...

Arduino Double Dice smyckeskrin med Secret Switch

detta var ett roligt projekt. Tryck på röda knappen, titta på tärningarna "ROLL" sedan sluta på slumpmässiga rulle mest varje gång.Hart med detta spel är den ATMEL ATmega328P på en fristående styrelse. Drivs med 4 AA NiMD batterier.Kan du hitta...

MicroView Dice

På grund av sin popularitet och användarvänlighet, Arduino är vår favorit controller och vi var super glada över att hitta något som gör det ännu mer mångsidig: denna MicroView styrelse! Det är första chip-storlek Arduino kompatibel vi har hittat som...