- Ο πίνακας LED P10 LED
- Απαιτούνται στοιχεία για τον πίνακα αποτελεσμάτων Arduino
- Διάγραμμα κυκλώματος για τον πίνακα αποτελεσμάτων Arduino
- Επεξήγηση κωδικού πίνακα αποτελεσμάτων Arduino
Ένας ηλεκτρονικός πίνακας βαθμολογίας είναι ένα από τα πιο σημαντικά gadget που μπορεί να έχει ο καθένας κατά τη διάρκεια οποιουδήποτε αθλητικού τουρνουά. Ο παλιός πίνακας αποτελεσμάτων με τη χρήση συμβατικών μεθόδων είναι πολύ χρονοβόρος και επιρρεπής σε σφάλματα, επομένως ένας μηχανογραφικός πίνακας βαθμολογίας καθίσταται απαραίτητος όπου η μονάδα οθόνης πρέπει να αλλάξει σε πραγματικό χρόνο. Αυτός είναι ο λόγος για τον οποίο σε αυτό το έργο, θα κατασκευάσουμε έναν ασύρματο πίνακα ελέγχου με Bluetooth στον οποίο μπορούμε να αλλάξουμε τη βαθμολογία στον πίνακα χρησιμοποιώντας μια εφαρμογή Android. Ο εγκέφαλος αυτού του έργου είναι ένα Arduino Nano, και για την οθόνη, θα χρησιμοποιήσουμε μια μήτρα LED P10 για να δείξουμε τη βαθμολογία από απόσταση σε πραγματικό χρόνο.
Ο πίνακας LED P10 LED
Η P10 LED Matrix Display είναι ο καλύτερος τρόπος για να φτιάξετε μια πλακέτα LED για εξωτερική ή εσωτερική χρήση. Αυτός ο πίνακας διαθέτει συνολικά 512 LED υψηλής φωτεινότητας τοποθετημένα σε πλαστικό περίβλημα σχεδιασμένο για καλύτερα αποτελέσματα οθόνης. Έρχεται επίσης με βαθμολογία IP65 για στεγανοποίηση που το καθιστά ιδανικό για εξωτερική χρήση. Με αυτό, μπορείτε να φτιάξετε μια μεγάλη πινακίδα LED συνδυάζοντας οποιονδήποτε αριθμό τέτοιων πάνελ σε οποιαδήποτε σειρά και δομή στήλης.
Η μονάδα μας έχει μέγεθος 32 * 16, πράγμα που σημαίνει ότι υπάρχουν 32 LED σε κάθε σειρά και 16 LED σε κάθε στήλη. Έτσι, υπάρχουν συνολικά 512 LED σε κάθε οδηγημένη πινακίδα. Εκτός από αυτό, έχει βαθμολογία IP65 για στεγανοποίηση, μπορεί να τροφοδοτείται από μία μόνο πηγή τροφοδοσίας 5V, έχει πολύ ευρεία γωνία θέασης και η φωτεινότητα μπορεί να φτάσει τα 4500 nits. Έτσι, θα μπορείτε να το δείτε καθαρά στο φως της ημέρας. Προηγουμένως είχαμε χρησιμοποιήσει επίσης αυτήν την οθόνη P10 με το Arduino για να δημιουργήσουμε μια απλή πλακέτα LED.
Καρφίτσα Περιγραφή του P10 LED Matrix:
Αυτή η πλακέτα οθόνης LED χρησιμοποιεί κεφαλίδα αλληλογραφίας 10 ακίδων για σύνδεση εισόδου και εξόδου, σε αυτήν την ενότητα, έχουμε περιγράψει όλες τις απαραίτητες καρφίτσες αυτής της μονάδας. Επίσης, μπορείτε να δείτε ότι υπάρχει μια εξωτερική υποδοχή 5V στη μέση της μονάδας που χρησιμοποιείται για τη σύνδεση της εξωτερικής τροφοδοσίας στην πλακέτα.
- Ενεργοποίηση: Αυτός ο πείρος χρησιμοποιείται για τον έλεγχο της φωτεινότητας του πίνακα LED, δίνοντάς του έναν παλμό PWM.
- A, B: Αυτά ονομάζονται πολλαπλές καρφίτσες επιλογής. Παίρνουν ψηφιακή είσοδο για να επιλέξουν οποιεσδήποτε σειρές πολυπλεξίας.
- Ρολόι Shift (CLK), Ρολόι καταστήματος (SCLK) και Δεδομένα: Αυτές είναι οι κανονικές καρφίτσες ελέγχου καταχωρητή αλλαγής ταχυτήτων. Εδώ χρησιμοποιείται ένας καταχωρητής αλλαγής ταχυτήτων 74HC595.
Ενδιάμεση μονάδα ενδείξεων LED P10 στο Arduino:
Η σύνδεση της μονάδας οθόνης matrix P10 στο Arduino είναι μια πολύ απλή διαδικασία, στο κύκλωμα μας, διαμορφώσαμε τον ακροδέκτη 9 του Arduino ως καρφίτσα Ενεργοποίησης, το Pin 6 ως Pin A, το Pin 7 ως pin B, το Pin 13 είναι το CLK, το Pin 8 είναι το SCLK, το Pin 11 είναι το DATA, και τέλος το Pin GND είναι το pin GND για το module και το Arduino, ένας πλήρης πίνακας παρακάτω εξηγεί με σαφήνεια τη διαμόρφωση του pin.
Μονάδα LED P10 |
Arduino UNO |
ΕΠΙΤΡΕΠΩ |
9 |
ΕΝΑ |
6 |
σι |
7 |
ΚΛΚ |
13 |
SCLK |
8 |
ΔΕΔΟΜΕΝΑ |
11 |
GND |
GND |
Σημείωση: Συνδέστε τον ακροδέκτη τροφοδοσίας της μονάδας P10 σε μια εξωτερική πηγή τροφοδοσίας 5V, επειδή 512 LED θα καταναλώνουν πολλή ισχύ. Συνιστάται η σύνδεση τροφοδοσίας 5V, 3 Amp DC σε μία μονάδα μονάδας LED P10. Εάν σκοπεύετε να συνδέσετε περισσότερη μονάδα αριθμών, τότε αυξήστε ανάλογα τη χωρητικότητα SMPS.
Απαιτούνται στοιχεία για τον πίνακα αποτελεσμάτων Arduino
Δεδομένου ότι πρόκειται για ένα πολύ απλό έργο, οι απαιτήσεις εξαρτημάτων είναι πολύ γενικές, μια λίστα με τα απαιτούμενα στοιχεία παρουσιάζεται παρακάτω, θα πρέπει να μπορείτε να βρείτε όλο το αναφερόμενο υλικό στο τοπικό κατάστημα χόμπι σας.
- Arduino Nano
- Οθόνη μήτρας LED P10
- Ψωμί
- 5V, 3 AMP SMPS
- Ενότητα Bluetooth HC-05
- Σύνδεση καλωδίων
Διάγραμμα κυκλώματος για τον πίνακα αποτελεσμάτων Arduino
Το Σχέδιο για τον πίνακα αποτελεσμάτων LED Arduino φαίνεται παρακάτω, καθώς αυτό το έργο είναι πολύ απλό, έχω χρησιμοποιήσει το δημοφιλές λογισμικό fritzing για να αναπτύξω το σχηματικό.
Η λειτουργία του κυκλώματος είναι πολύ απλή, έχουμε μια εφαρμογή Android και μια μονάδα Bluetooth, για να επικοινωνήσουμε με επιτυχία με τη μονάδα Bluetooth, πρέπει να αντιστοιχίσετε τη μονάδα HC-05 με την εφαρμογή Android. Μόλις συνδεθούμε, μπορούμε να στείλουμε τη συμβολοσειρά που θέλουμε να εμφανίσουμε, μόλις αποσταλεί η συμβολοσειρά, ο Arduino θα επεξεργαστεί τη συμβολοσειρά και θα τη μετατρέψει σε ένα σήμα που μπορεί να κατανοήσει η εσωτερική αντίσταση μετατόπισης 74HC595, μετά την αποστολή των δεδομένων στη μετατόπιση αντίσταση, είναι έτοιμη για εμφάνιση.
Επεξήγηση κωδικού πίνακα αποτελεσμάτων Arduino
Μετά την επιτυχή ολοκλήρωση της εγκατάστασης υλικού, τώρα ήρθε η ώρα για τον προγραμματισμό του Arduino Nano. Η σταδιακή περιγραφή του κώδικα δίνεται παρακάτω. Επίσης, μπορείτε να λάβετε τον πλήρη κωδικό πίνακα αποτελεσμάτων Arduino στο κάτω μέρος αυτού του οδηγού.
Πρώτα απ 'όλα, πρέπει να συμπεριλάβουμε όλες τις βιβλιοθήκες. Έχουμε χρησιμοποιήσει τη βιβλιοθήκη DMD.h για να ελέγξουμε την οθόνη LED P10. Μπορείτε να το κατεβάσετε και να το συμπεριλάβετε από τον δεδομένο σύνδεσμο GitHub. Μετά από αυτό, πρέπει να συμπεριλάβετε τη Βιβλιοθήκη TimerOne.h, η οποία θα χρησιμοποιηθεί για διακοπή προγραμματισμού στον κώδικα μας.
Υπάρχουν πολλά μέτωπα διαθέσιμα σε αυτήν τη βιβλιοθήκη, έχουμε χρησιμοποιήσει το " Arial_black_16 " για αυτό το έργο.
#περιλαμβάνω
Στο επόμενο βήμα, ο αριθμός σειρών και στηλών ορίζεται για την πλακέτα μήτρας LED. Έχουμε χρησιμοποιήσει μόνο μία ενότητα σε αυτό το έργο, επομένως τόσο η τιμή ROW όσο και η τιμή COLUMN μπορούν να οριστούν ως 1.
#define ROW 1 #define COLUMN 1 #define FONT Arial_Black_16 DMD led_module (ROW, COLUMN);
Μετά από αυτό, καθορίζονται όλες οι μεταβλητές που χρησιμοποιούνται στον κώδικα. Μια μεταβλητή χαρακτήρων χρησιμοποιείται για τη λήψη σειριακών δεδομένων από την εφαρμογή Android, δύο ακέραιες τιμές χρησιμοποιούνται για την αποθήκευση βαθμολογιών και ορίζεται ένας πίνακας που αποθηκεύει τα τελικά δεδομένα που θα εμφανίζονται στο Matrix.
είσοδος char; int a = 0, b = 0; int flag = 0; char cstr1;
Καθορίζεται μια συνάρτηση scan_module (), η οποία ελέγχει συνεχώς τυχόν εισερχόμενα δεδομένα από το Arduino Nano μέσω του SPI. Εάν ναι, τότε θα προκαλέσει διακοπή για την πραγματοποίηση συγκεκριμένων συμβάντων όπως ορίζονται από τον χρήστη στο πρόγραμμα.
void scan_module () { led_module.scanDisplayBySPI (); }
Μέσα στη ρύθμιση (), ο χρονοδιακόπτης αρχικοποιείται και η διακοπή συνδέεται με τη λειτουργία scan_module, η οποία συζητήθηκε νωρίτερα. Αρχικά, η οθόνη εκκαθαρίστηκε χρησιμοποιώντας την οθόνη διαγραφής λειτουργίας (true), που σημαίνει ότι όλα τα pixel ορίζονται ως OFF.
Στην εγκατάσταση, ενεργοποιήθηκε επίσης η σειριακή επικοινωνία χρησιμοποιώντας τη λειτουργία Serial.begin (9600) όπου το 9600 είναι ο ρυθμός baud για επικοινωνία Bluetooth.
άκυρη ρύθμιση () { Serial.begin (9600); Timer1.initialize (2000); Timer1.attachInterrupt (scan_module); led_module.clearScreen (true); }
Εδώ, ελέγχεται η διαθεσιμότητα σειριακών δεδομένων, εάν υπάρχουν έγκυρα δεδομένα προέρχονται από το Arduino ή όχι. Τα ληφθέντα δεδομένα από την εφαρμογή αποθηκεύονται σε μια μεταβλητή.
if (Serial.available ()> 0) { flag = 0; input = Serial.read ();
Στη συνέχεια, η ληφθείσα τιμή συγκρίθηκε με την προκαθορισμένη μεταβλητή. Εδώ, στην εφαρμογή Android, λαμβάνονται δύο κουμπιά για να επιλέξετε τα σκορ και για τις δύο ομάδες. Όταν πατηθεί το κουμπί 1, ο χαρακτήρας 'a' μεταδίδεται στο Arduino και όταν πατηθεί το κουμπί2, ο χαρακτήρας 'b' μεταδίδεται στο Arduino. Ως εκ τούτου, σε αυτήν την ενότητα, αυτά τα δεδομένα αντιστοιχίζονται και, εάν ταιριάζουν, τότε οι αντίστοιχες τιμές βαθμολογίας αυξάνονται όπως φαίνεται στον κώδικα.
εάν (input == 'a' && flag == 0) { flag = 1; ένα ++; } αλλιώς εάν (input == 'b' && flag == 0) { flag = 1; β ++; } αλλιώς
Στη συνέχεια, τα ληφθέντα δεδομένα μετατρέπονται σε χαρακτήρα Array, καθώς η λειτουργία P10 matrix είναι ικανή να εμφανίζει μόνο τύπο δεδομένων χαρακτήρων. Γι 'αυτό όλες οι μεταβλητές μετατρέπονται και συνενώνονται σε πίνακα χαρακτήρων.
(String ("HOME:") + String (a) + String ("-") + String ("AWAY:") + String (b)). ToCharArray (cstr1, 50);
Στη συνέχεια, για την εμφάνιση πληροφοριών στη μονάδα, η γραμματοσειρά επιλέγεται χρησιμοποιώντας τη λειτουργία επιλογής (). Στη συνέχεια , η λειτουργία drawMarquee () χρησιμοποιείται για την εμφάνιση των επιθυμητών πληροφοριών στον πίνακα P10.
led_module.selectFont (FONT); led_module.drawMarquee (cstr1,50, (32 * ROW), 0);
Τέλος, καθώς χρειαζόμαστε μια εμφάνιση κυλιόμενου μηνύματος, έχω γράψει έναν κωδικό για να μετατοπίσω ολόκληρο το μήνυμά μας από τις κατευθύνσεις δεξιά προς αριστερά χρησιμοποιώντας μια συγκεκριμένη περίοδο.
μακρά εκκίνηση = χιλιοστά (); μεγάλος χρονισμός = έναρξη; boolean flag = false; ενώ (! flag) { if ((χρονισμός + 30) <millis ()) { flag = led_module.stepMarquee (-1, 0); χρονισμός = χιλιοστά (); } }
Αυτό σηματοδοτεί το τέλος της διαδικασίας κωδικοποίησης. Και τώρα είναι έτοιμο για μεταφόρτωση.
Πίνακας αποτελεσμάτων ελεγχόμενων από smartphone - Δοκιμή
Αφού ανεβάσετε τον κωδικό στο Arduino, ήρθε η ώρα να δοκιμάσετε το έργο. Πριν από αυτό, η εφαρμογή Android πρέπει να εγκατασταθεί στο smartphone μας. Μπορείτε να κατεβάσετε την εφαρμογή P10 Score Board από τον δεδομένο σύνδεσμο. Μόλις εγκατασταθεί, ανοίξτε την εφαρμογή και η αρχική οθόνη θα μοιάζει με την παρακάτω εικόνα.
Κάντε κλικ στο κουμπί SCAN για να προσθέσετε τη μονάδα Bluetooth με την εφαρμογή. Αυτό θα εμφανίσει τη λίστα των συζευγμένων συσκευών Bluetooth του τηλεφώνου. Εάν δεν έχετε συνδέσει τη μονάδα Bluetooth HC-05 στο παρελθόν, αντιστοιχίστε τη μονάδα χρησιμοποιώντας τη ρύθμιση Bluetooth του τηλεφώνου σας και κάντε αυτό το βήμα. Η οθόνη θα φαίνεται όπως φαίνεται:
Στη συνέχεια, από τη λίστα, κάντε κλικ στο "HC-05" καθώς αυτό είναι το όνομα της μονάδας Bluetooth που χρησιμοποιείται εδώ. Αφού κάνετε κλικ σε αυτό, θα εμφανιστεί συνδεδεμένο στην οθόνη. Τότε μπορούμε να προχωρήσουμε με τον πίνακα αποτελεσμάτων.
Κάντε κλικ σε οποιοδήποτε κουμπί μεταξύ "Home" και "Away" όπως φαίνεται στην εφαρμογή. Εάν είναι επιλεγμένο το κουμπί Home, το σκορ του Home θα αυξηθεί στην οθόνη P10. Ομοίως, εάν έχει επιλεγεί το κουμπί Away, η βαθμολογία του Away θα αυξάνεται. Η παρακάτω εικόνα δείχνει πώς φαίνεται η τελική οθόνη.
Ελπίζω να σας άρεσε το έργο και να μάθετε κάτι νέο, εάν έχετε άλλες ερωτήσεις σχετικά με το έργο, μη διστάσετε να σχολιάσετε παρακάτω ή μπορείτε να κάνετε την ερώτησή σας στο φόρουμ μας.