Natuurkunde, NLT

Dobbelsteen met 10 mogelijkheden

Dit is een aansluitschema voor een alternatieve dobbelsteen. Als je op het knopje drukt kan je op de lampjes zien welk getal, tussen de 1 en de 10, er uitgekomen is.

FullSizeRender.jpg

Bouw het bovenstaande schema na.

Je hebt nodig:

  • 1 ardiuno
  • 10 lampjes
  • 1 knopje
  • 1 10k ohm weerstandje
  • 10 330 ohm weerstandjes
  • 15 snoertjes

De 10k ohm weerstand is een pull-down weerstand.

Alle andere weerstanden zorgen ervoor dat het stroom gewoon kan doorlopen.

De knop zorgt ervoor dat de dobbelsteen gaat werken.

De code om de dobbelsteen goed te laten werken is als volgt:

int ledPins[11] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};   (je sluit de lampjes en de knop aan deze pins.)
int dicePatterns[11][11] = {
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 1
{1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, // 2
{1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, // 3
{1, 1, 1, 1, 0, 0, 0, 0, 0, 0}, // 4
{1, 1, 1, 1, 1, 0, 0, 0, 0, 0}, // 5
{1, 1, 1, 1, 1, 1, 0, 0, 0, 0}, // 6
{1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, // 8
{1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, // 9
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 10
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0} // BLANK      (de 1’tjes beteken dat de lampjes aan staan en de 0’tjes uit.)
};
int switchPin = 12;
int blank =10;
void setup()
{
for (int i = 0; i < 10; i++)
{
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
randomSeed(analogRead(0));   (dit zorgt ervoor dat de lampjes een random getal aangeeft.)
}
void loop()
{
if (digitalRead(switchPin))
{
rollTheDice();    (als je de knop indrukt gaat de dobbelsteen rollen.)
}
delay(100);
}
void rollTheDice()   (na een korte periode kan je opnieuw de dobbelsteen laten rollen).
{
int result = 0;
int lengthOfRoll = random(15, 25);
for (int i = 0; i < lengthOfRoll; i++)
{
result = random(0, 10); // result will be 0 to 5 not 1 to 6
show(result);
delay(50 + i * 10);
}
for (int j = 0; j < 3; j++)
{
show(blank);
delay(500);
show(result);
delay(500);
}
}
void show(int result)
{
for (int i = 0; i < 10; i++)
{
digitalWrite(ledPins[i], dicePatterns[result][i]);
}
}

 

Gemaakt door Nand Frankena, Mart Alblas, Jelmer Brouwer.

Leave a Reply