Όλοι γνωρίζουμε τα ζάρια και παίζουμε συχνά το παιχνίδι LUDO ή SANP SIDI (Snake & Ladders) χρησιμοποιώντας ζάρια. Το Dice είναι ένα συμπαγές κουτί τύπου squire που περιέχει 6 διαφορετικούς αριθμούς σε όλες τις πλευρές του. Πετάμε ζάρια στην επιφάνεια για να πάρουμε έναν τυχαίο αριθμό παίζοντας τα παιχνίδια. Σε αυτό το έργο προσπαθήσαμε να το αντιγράψουμε με ψηφιακά ζάρια χρησιμοποιώντας το arduino uno board. Αντί να ρίξουμε τα ζάρια, εδώ πρέπει να πατήσουμε ένα κουμπί για να πάρουμε έναν τυχαίο αριθμό μεταξύ 0 και 6.
Απαιτούμενα συστατικά
- Arduino UNO
- Εμφάνιση επτά τμημάτων (Κοινή άνοδος)
- Πιέστε τα κουμπιά
- Σύνδεση καλωδίων
- Πίνακας ψωμιού
- 1 k αντίσταση
- Παροχή ηλεκτρικού ρεύματος
Διάγραμμα κυκλώματος και επεξήγηση
Όπως φαίνεται στο παραπάνω ψηφιακό κύκλωμα ζαριών, το arduino χρησιμοποιείται για τον έλεγχο ολόκληρης της διαδικασίας. Στο κύκλωμα χρησιμοποιούνται δύο μπουτόν - ένα για να ξεκινήσετε τα ζάρια και ένα άλλο για να επαναφέρετε τα ζάρια. Ο Arduino διαβάζει αυτά τα δύο κουμπιά και εκτελεί τη λειτουργία. Μια οθόνη επτά τμημάτων χρησιμοποιείται για την εμφάνιση του αποτελέσματος των ζαριών.
Το Arduino εκτελεί συνεχώς τη λειτουργία rand () και αποθηκεύει την τιμή του σε μια προσωρινή μεταβλητή. Όταν πατηθεί το κουμπί ζαριών, η υπολογισμένη τιμή υπολογίζεται και εμφανίζεται σε επτά τμήματα χρησιμοποιώντας την κατάλληλη μέθοδο (βλέπε μέρος προγραμματισμού του άρθρου)
Εδώ σε αυτό το κύκλωμα ζαριών, χρησιμοποιείται μια κοινή οθόνη επτά τμημάτων ανόδου για την εμφάνιση αριθμών ζαριών, η οποία συνδέεται απευθείας με τους αριθμούς ψηφιακών ακίδων arduino 6, 5, 4, 3, 2, 1, 0. Και ο κοινός πείρος ανόδου επτά τμημάτων είναι συνδέεται με αντίσταση +5 volt 220 Ohm. Δύο κουμπιά συνδέονται επίσης, δηλαδή ζάρι και κουμπί επαναφοράς που συνδέονται με τον ψηφιακό πείρο 14 (A0) και 15 (A1) σε σχέση με τη γείωση.
Επεξήγηση κώδικα
Ο προγραμματισμός μέρος αυτού του έργου παίζει πολύ σημαντικό ρόλο για την εμφάνιση τυχαίου ψηφιακού ζαριού σε επτά τμήματα. Το Arduino δεν περιέχει βιβλιοθήκη για επτά τμήματα. έτσι δημιουργήσαμε ολόκληρο τον κώδικα χωρίς να χρησιμοποιήσουμε καμία βιβλιοθήκη.
Πρώτα απ 'όλα επιλέγουμε ψηφιακή καρφίτσα για επτά τμήματα.
int pin = {6,5,4,3,2,1,0};
Μετά από αυτό δημιουργούμε μια σειρά από 6 ψηφία ζαριών, δηλαδή 1, 2, 3, 4, 5 και 6.
ψηφίο char = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Τώρα δώσαμε κατεύθυνση να χρησιμοποιήσουμε το pin arduino ως έξοδο.
άκυρη ρύθμιση () {για (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (ζάρια, ΕΙΣΟΔΟΣ); pinMode (επαναφορά, ΕΙΣΟΔΟΣ); digitalWrite (ζάρια, ΥΨΗΛΟ); digitalWrite (επανεγκατάσταση, ΥΨΗΛΟ);
Στέλνουμε από προεπιλογή έναν κωδικό για εμφάνιση μηδέν σε επτά τμήματα.
int temp = 0x40; για (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Τώρα εκτελούμε τη λειτουργία rand () για να πάρουμε έναν τυχαίο αριθμό.
int temp = rand ();
Και όταν πατάμε το πρόγραμμα με τα ζάρια, αντιστοιχίστε πρώτα αυτόν τον τυχαίο αριθμό και, στη συνέχεια, στείλτε τον αριθμό σε επτά τμήματα, χρησιμοποιώντας το bit bijak.
if (digitalRead (ζάρια) == 0) {int k = temp% 6; temp = ψηφίο; Περίμενε(); για (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } καθυστέρηση (200) }
Και το ίδιο για το κουμπί επαναφοράς.
Σε αυτό το πρόγραμμα στέλνουμε ένα bit κάθε φορά. Εδώ εφαρμόζουμε ένα για βρόχο που τρέχει 7 φορές για την αποστολή δεδομένων σε κάθε τμήμα ένα προς ένα.