Το Charlieplexing είναι μια τεχνική ελέγχου πολλών LED χρησιμοποιώντας μερικές ακίδες I / O. Το Charlieplexing είναι ίδιο με το multiplexing, αλλά χρησιμοποιεί τη λογική τριών καταστάσεων (υψηλή, χαμηλή είσοδος) για να μειώσει δραματικά τον αριθμό των ακίδων και για να κερδίσει αποτελεσματικότητα έναντι της πολυπλεξίας. Η τεχνική Charlieplexing πήρε το όνομά της από τον εφευρέτη της, τον Charlie Allen, ο οποίος εφευρέθηκε την τεχνική το 1995. Στο παρελθόν χρησιμοποιήσαμε τεχνική πολυπλεξίας στο Arduino για διασύνδεση 4-ψηφίων 7-τμημάτων οθόνης και οδήγησης μήτρας LED 8x8.
Το Charlieplexing σάς επιτρέπει να ελέγχετε τις λυχνίες LED N * (N - 1), όπου N είναι ο αριθμός των ακίδων. Για παράδειγμα, μπορείτε να ελέγξετε 12 LED χρησιμοποιώντας 4 ακίδες Arduino 4 * (4-1) = 12. Οι λυχνίες LED είναι δίοδοι, και σε δίοδοι, το ρεύμα ρέει μόνο σε μία κατεύθυνση. Έτσι, στο Charlieplexing, συνδέουμε δύο LED παράλληλα μεταξύ τους αλλά με αντίθετη πολικότητα, ώστε να ανάβει μόνο ένα LED κάθε φορά. Όσον αφορά το Arduino ή άλλους πίνακες μικροελεγκτών, δεν έχετε ποτέ αρκετές ακίδες εισόδου / εξόδου. Εάν εργάζεστε σε ένα έργο στο οποίο πρέπει να συνδέσετε την οθόνη LCD, μια δέσμη LED και μερικούς αισθητήρες, τότε έχετε ήδη εξαντληθεί. Σε αυτήν την περίπτωση, μπορείτε να ενεργοποιήσετε τις λυχνίες LED για να μειώσετε τον αριθμό των ακίδων.
Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε την τεχνική Charlieplexing για τον έλεγχο των 12 LED χρησιμοποιώντας 4 καρφίτσες Arduino.
Απαιτούμενα στοιχεία
- Arduino UNO
- LED (12)
- 4 Αντίσταση (330 ohms)
- Καλώδια αλτών
- Ψωμί
Διάγραμμα κυκλώματος
Βασικά, σε αυτό το διάγραμμα κυκλώματος, 12 LED συνδέονται με 4 ακίδες Arduino μέσω αντιστάσεων. Κάθε πείρος του Arduino συνδέεται με τρία LED. Υπάρχουν έξι ομάδες LED, και σε κάθε ομάδα, συνδέονται 2 LED και και τα δύο LED είναι παράλληλα μεταξύ τους αλλά με αντίθετη πολικότητα, έτσι ώστε να ανάβει μόνο ένα LED κάθε φορά. Έτσι, σύμφωνα με το διάγραμμα κυκλώματος για να ενεργοποιήσετε το led 1, πρέπει να υπάρχει σήμα HIGH στον ακροδέκτη A και ένα σήμα LOW στον ακροδέκτη B, και ο ακροδέκτης C και D πρέπει να αποσυνδεθεί. Η ίδια διαδικασία θα ακολουθηθεί για τα άλλα LED. Ο πλήρης πίνακας των ρυθμίσεων ακίδων για κάθε LED δίνεται παρακάτω:
LED | Καρφίτσα 8 | Καρφίτσα 9 | Καρφίτσα 10 | Καρφίτσα 11 |
1 | ΥΨΗΛΟΣ | ΧΑΜΗΛΟΣ | ΕΙΣΑΓΩΓΗ | ΕΙΣΑΓΩΓΗ |
2 | ΧΑΜΗΛΟΣ | ΥΨΗΛΟΣ | ΕΙΣΑΓΩΓΗ | ΕΙΣΑΓΩΓΗ |
3 | ΕΙΣΑΓΩΓΗ | ΥΨΗΛΟΣ | ΧΑΜΗΛΟΣ | ΕΙΣΑΓΩΓΗ |
4 | ΕΙΣΑΓΩΓΗ | ΧΑΜΗΛΟΣ | ΥΨΗΛΟΣ | ΕΙΣΑΓΩΓΗ |
5 | ΕΙΣΑΓΩΓΗ | ΕΙΣΑΓΩΓΗ | ΥΨΗΛΟΣ | ΧΑΜΗΛΟΣ |
6 | ΕΙΣΑΓΩΓΗ | ΕΙΣΑΓΩΓΗ | ΧΑΜΗΛΟΣ | ΥΨΗΛΟΣ |
7 | ΥΨΗΛΟΣ | ΕΙΣΑΓΩΓΗ | ΧΑΜΗΛΟΣ | ΕΙΣΑΓΩΓΗ |
8 | ΧΑΜΗΛΟΣ | ΕΙΣΑΓΩΓΗ | ΥΨΗΛΟΣ | ΕΙΣΑΓΩΓΗ |
9 | ΕΙΣΑΓΩΓΗ | ΥΨΗΛΟΣ | ΕΙΣΑΓΩΓΗ | ΧΑΜΗΛΟΣ |
10 | ΕΙΣΑΓΩΓΗ | ΧΑΜΗΛΟΣ | ΕΙΣΑΓΩΓΗ | ΥΨΗΛΟΣ |
11 | ΥΨΗΛΟΣ | ΕΙΣΑΓΩΓΗ | ΕΙΣΑΓΩΓΗ | ΧΑΜΗΛΟΣ |
12 | ΧΑΜΗΛΟΣ | ΕΙΣΑΓΩΓΗ | ΕΙΣΑΓΩΓΗ | ΥΨΗΛΟΣ |
Μετά τις συνδέσεις, το υλικό μου μοιάζει με την παρακάτω εικόνα. Όπως μπορείτε να δείτε από την εικόνα υπάρχουν έξι ομάδες LED και σε κάθε ομάδα 2 LED είναι συνδεδεμένα το ένα απέναντι στο άλλο. Η μονάδα Arduino UNO τροφοδοτείται από θύρα USB.
Επεξήγηση κώδικα
Ο πλήρης κώδικας με ένα βίντεο εργασίας δίνεται στο τέλος αυτού του σεμιναρίου, εδώ εξηγούμε το πλήρες πρόγραμμα για να κατανοήσουμε τη λειτουργία του έργου.
Στην αρχή του κώδικα Arduino ορίστε όλη την ακίδα στην οποία συνδέονται τα LED. Μετά από αυτό, ορίστε τον συνολικό αριθμό LED και κατάστασης LED.
# καθορισμός Α 8 # ορισμός Β 9 # καθορισμός Γ 10 # καθορισμός Δ 11 # καθορισμός PIN_CONFIG 0 # καθορισμός PIN_STATE 1 # καθορισμός LED_αριθμού 12
Τώρα δημιουργήστε μια μήτρα για ενεργοποίηση και απενεργοποίηση των LED σε μια ακολουθία, μπορείτε να αλλάξετε την ακολουθία αλλάζοντας την κατάσταση των ακίδων και τη διαμόρφωση των ακίδων. Σύμφωνα με αυτόν τον πίνακα, το LED1 θα ενεργοποιηθεί πρώτα και μετά το LED2 και ούτω καθεξής.
int matrix = { // PIN_CONFIG PIN_STATE // ABCDABCD {{OUTPUT, OUTPUT, INPUT, INPUT}, {HIGH, LOW, LOW, LOW}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, ……………………………. ……………………………..
Τώρα μέσα στον κενό κύκλο , το πρόγραμμα θα εκτελέσει τη μήτρα LED_COUNT για να ανάψει και να σβήσει τα LED με τη δεδομένη σειρά.
κενό βρόχο () { για (int l = 0; l <LED_Num; l ++) { lightOn (l); καθυστέρηση (1000 / LED_Num); }
Τώρα συνδέστε το Arduino με το φορητό υπολογιστή και επιλέξτε σωστά την πλακέτα και τη θύρα και, στη συνέχεια, κάντε κλικ στο κουμπί Μεταφόρτωση. Μετά τη μεταφόρτωση του κωδικού, οι λυχνίες LED σας θα αρχίσουν να αναβοσβήνουν.
Έτσι , μπορεί να χρησιμοποιηθεί η τεχνική Charlieplexing για τον έλεγχο πολλών LED χρησιμοποιώντας λιγότερες ακίδες Arduino. Μπορείτε να χρησιμοποιήσετε αυτήν τη μέθοδο για τον έλεγχο περισσότερου αριθμού LED. Για παράδειγμα, εάν θέλετε να ελέγξετε 20 LED, απλώς επεξεργαστείτε τη μήτρα και προσθέστε τις συνθήκες για τα υπόλοιπα LED.
Βρείτε τον πλήρη κώδικα και το βίντεο εργασίας παρακάτω.