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.
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]);
}
}
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
You must be logged in to post a comment.