We zijn allemaal bekend met dobbelstenen en hebben vaak het LUDO- of SANP SIDI-spel (Snake & Ladders) gespeeld door dobbelstenen te gebruiken. De dobbelsteen is een stevige doos van het schildknaap-type die 6 verschillende nummers op al zijn zijden bevat. We gooien dobbelstenen op een oppervlak om een willekeurig nummer te krijgen tijdens het spelen van de spellen. In dit project hebben we geprobeerd het te repliceren met een digitale dobbelsteen met behulp van een Arduino Uno-bord. In plaats van de dobbelstenen te gooien, moeten we hier op een knop drukken om een willekeurig getal tussen 0 en 6 te krijgen.
Vereiste componenten
- Arduino UNO
- Zevensegmentendisplay (gemeenschappelijke anode)
- Drukknoppen
- Draden aansluiten
- Broodplank
- 1 k weerstand
- Stroomvoorziening
Schakelschema en uitleg
Zoals te zien is in het bovenstaande digitale dobbelsteencircuit, wordt arduino gebruikt om het hele proces te besturen. In het circuit worden twee drukknoppen gebruikt - een om de dobbelstenen te starten en een andere om de dobbelstenen te resetten. Arduino leest deze twee knoppen en voert de bewerking uit. Een display met zeven segmenten wordt gebruikt om het resultaat van de dobbelstenen weer te geven.
Arduino voert continu de functie rand () uit en heeft de waarde ervan opgeslagen in een tijdelijke variabele. Wanneer de dobbelsteenknop wordt ingedrukt, wordt de opgeslagen waarde berekend en weergegeven op zeven segmenten met behulp van de juiste methode (zie programmeergedeelte van het artikel).
Hier in dit dobbelsteencircuit wordt een gemeenschappelijk anode-display met zeven segmenten gebruikt voor het weergeven van dobbelstenen, die rechtstreeks is verbonden met de digitale pinnummers 6, 5, 4, 3, 2, 1, 0 van Arduino. En een gemeenschappelijke anodepin van zeven segmenten is aangesloten met +5 volt 220 Ohm weerstand. Twee drukknoppen zijn ook aangesloten namelijk dobbelsteenknop en resetknop die zijn verbonden met digitale pen 14 (A0) en 15 (A1) met betrekking tot aarde.
Code Uitleg
Het programmeergedeelte van dit project speelt een zeer belangrijke rol bij het weergeven van een willekeurig digitaal dobbelsteennummer op een display met zeven segmenten. Arduino bevat geen bibliotheek voor weergave van zeven segmenten. dus hebben we de hele code gemaakt zonder een bibliotheek te gebruiken.
Allereerst selecteren we een digitale pin voor weergave met zeven segmenten.
int pin = {6,5,4,3,2,1,0};
Hierna maken we een reeks van 6 cijfers van dobbelstenen namelijk 1, 2, 3, 4, 5 en 6.
char digit = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Nu hebben we de richting gegeven om de Arduino-pin als uitvoer te gebruiken.
void setup () {voor (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (dobbelstenen, INPUT); pinMode (opnieuw instellen, INPUT); digitalWrite (dobbelstenen, HIGH); digitalWrite (opnieuw instellen, HIGH);
We sturen standaard een code voor het weergeven van nul op zeven segmenten.
int temp = 0x40; voor (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Nu voeren we de functie rand () uit om een willekeurig getal te krijgen.
int temp = rand ();
En wanneer we op de dobbelsteenknop drukken, wijst het programma eerst dit willekeurige nummer toe en stuurt het nummer vervolgens naar het zeven-segment display met behulp van de bit-wise operator.
if (digitalRead (dice) == 0) {int k = temp% 6; temp = cijfer; wacht(); voor (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } vertraging (200); }
En hetzelfde voor de resetknop.
In dit programma sturen we bit per keer. Hier passen we een for-lus toe die 7 keer wordt uitgevoerd om gegevens één voor één naar elk segment te verzenden.