Bouw een Digitale Settlers of Catan Dobbelsteen met Arduino UNO & LCD Display
Onderdelen en Benodigdheden
| Arduino UNO | 1 |
| Adafruit Standaard LCD - 16x2 Wit op Blauw | 1 |
| SparkFun Drukknop 12mm | 1 |
Over dit Project
Ik hou van een goed spelletje Settlers of Catan, waarom niet een digitale dobbelsteen bouwen? Ik gebruikte eerst zeven rode LEDs, toen realiseerde ik me dat je twee dobbelstenen nodig hebt voor Catan. Ik besloot een LCD display te gebruiken.
Display Instellen
Stel het LCD display in zoals je normaal zou doen. Als je niet weet hoe, volg dan deze instructies.
Een Knop Toevoegen
Voeg een knop toe die je indrukt elke keer dat je de dobbelstenen wilt gooien. Je kunt ook een kantelsensor gebruiken om de beweging van dobbelen na te bootsen.
De Code en Initiële Tekst
Nu ben je klaar om de code toe te voegen. Vergeet niet de LiquidCrystal bibliotheek te includeren. In de setup zet ik de initiële tekst op het display naar "Gooi de dobbelstenen!" Je kunt elke gewenste tekst gebruiken.
Spanning Opbouwen
Ik schreef een functie genaamd buildUp die elke keer wordt gebruikt als de knop wordt ingedrukt, om de spanning op te bouwen welke getallen de dobbelstenen zullen tonen. Mijn display heeft twee rijen van beide 16 karakters. Ik wilde beide rijen vullen met willekeurige getallen (tot zes, als echte dobbelstenen) die steeds sneller komen. Dat is wat de for-lus in de buildUp-functie doet. Als je display meer rijen of karakters heeft, kun je deze code aanpassen.
Ik stelde de delay in op 220 milliseconden en deelde dit door 16. Het getal dat je krijgt is het getal dat je van de countDelay aftrekt elke keer dat de lus draait. Als je de getallen sneller of langzamer wilt laten zien, zijn dit de getallen die je moet aanpassen.
De Dobbelsteennummers Tonen
Nu voor de echte dobbelstenen. Ik wilde een getal op elke rij tonen, gelijkend op de twee dobbelstenen die je voor Catan nodig hebt. Ik gebruikte setCursor om de getallen in het midden van het display te positioneren. Je kunt ze overal positioneren waar je wilt.
De Rover
Omdat zeven een speciaal getal is in Settlers of Catan, voegde ik een extra bericht toe aan dit getal. Elke keer dat je zeven gooit, zie je "De Rover" eronder. Zo weet iedereen zeker dat ze hun kaarten moeten tellen. Als je deze dobbelsteen met een ander spel wilt gebruiken, kun je deze code verwijderen of het bericht of getal aanpassen.
Genieten!
Nodig je vrienden uit, speel Settlers of Catan en have fun!
Code
Settlers of Catan Dobbelsteen Code
Vergeet niet de LiquidCrystal bibliotheek te includeren.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int diceButton = 10;
int reply;
int count = 0;
long diceOne;
long diceTwo;
void setup() {
lcd.begin(16, 2);
pinMode(diceButton, INPUT);
randomSeed(analogRead(0));
lcd.setCursor(1, 0);
lcd.print("Roll the dice!");
}
void buildUp() {
lcd.clear();
int countDelay = 220;
int setColumn = 0;
for (count = 0; count <= 16; count++) {
lcd.setCursor(setColumn, 0);
lcd.print(random(1, 7));
lcd.setCursor(setColumn, 1);
lcd.print(random(1, 7));
delay(countDelay);
countDelay -= 13;
setColumn += 1;
}
}
void loop() {
diceButton = digitalRead(10);
diceOne = random(1, 7);
diceTwo = random(1, 7);
if (diceButton == HIGH) {
buildUp();
lcd.clear();
lcd.setCursor(7, 0);
lcd.print(diceOne);
lcd.setCursor(7, 1);
lcd.print(diceTwo);
if (diceOne + diceTwo == 7) {
lcd.clear();
lcd.setCursor(7, 0);
lcd.print("7");
lcd.setCursor(3, 1);
lcd.print("The Robber");
}
}
}
Productieproces
- De Geschiedenis, Ontwerp en Productie van Dobbelstenen: Van Oude Hulpmiddelen tot Modern Gaming
- Vloeistofkristal Display (LCD): Technologie, Productie en Toekomstperspectief
- Primal Display: Een Raspberry Pi LCD-temperatuurmonitor bouwen
- Hoe de Kuman 3,5″ TFT-display op RetroPie te Installeren – Stap-voor-stap Handleiding
- Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
- De 4511 7-Segment Decoder Gebruiken: Praktische BCD Display Tutorial
- Weergavebuizen: Van CRTs tot Cat-Eye Indicatoren
- Geavanceerde Spectrumanalyse: Golfvormen en Harmonische Interpreteren
- Method overloading in C#: concepten, voorbeelden en best practices
- Verilog Tasks begrijpen: Functions vs Tasks, Syntax en Gebruik
- Verilog Display Tasks beheersen: Efficiënt Debuggen & Loggen