- Ενότητα εμφάνισης 7-τμημάτων και 4-ψηφίων 7-τμημάτων:
- Σύνδεση τετραψήφιας μονάδας 7 τμημάτων με Raspberry Pi:
- Προγραμματισμός του Raspberry Pi:
- Χρόνος εμφάνισης σε 4-Digit 7-segment χρησιμοποιώντας το Raspberry Pi:
Όλοι γνωρίζουμε ότι το Raspberry Pi είναι μια υπέροχη πλατφόρμα ανάπτυξης που βασίζεται σε μικροεπεξεργαστή ARM. Με την υψηλή υπολογιστική του δύναμη μπορεί να επιτελέσει θαύματα στα χόμπι ηλεκτρονικών ή μαθητές. Όλα αυτά μπορούν να γίνουν μόνο αν ξέρουμε πώς να το κάνουμε να αλληλεπιδρά με τον πραγματικό κόσμο και να αναλύσουμε τα δεδομένα μέσω κάποιας συσκευής εξόδου. Υπάρχουν πολλοί αισθητήρες που μπορούν να ανιχνεύσουν συγκεκριμένες παραμέτρους από τον πραγματικό κόσμο και να τον μεταφέρουν σε έναν ψηφιακό κόσμο και τους αναλύουμε βλέποντάς τους είτε σε μια οθόνη LCD είτε σε κάποια άλλη οθόνη. Όμως, δεν θα ήταν πάντα οικονομικό να χρησιμοποιείτε μια οθόνη LCD με PI για την εμφάνιση μικρού όγκου δεδομένων. Εδώ προτιμούμε να χρησιμοποιούμε την αλφαριθμητική οθόνη LCD 16x2 ή την οθόνη 7 τμημάτων. Έχουμε ήδη μάθει πώς να χρησιμοποιούμε μια αλφαριθμητική οθόνη LCD και μια οθόνη 7 τμημάτων με το Raspberry pi. Σήμερα θα το κάνουμεΔιασύνδεση 4-ψηφίων Ενότητα επτά τμημάτων με Raspberry Pi και εμφάνιση χρόνου πάνω από αυτό.
Παρόλο που η αλφαριθμητική οθόνη LCD 16x2 είναι πολύ πιο άνετη από την οθόνη 7 τμημάτων, υπάρχουν λίγα σενάρια όπου μια οθόνη 7 τμημάτων θα ήταν πιο εύχρηστη από την οθόνη LCD. Η LCD πάσχει από το μειονέκτημα του χαμηλού μεγέθους χαρακτήρων και θα είναι υπερβολική για το έργο σας εάν σκοπεύετε απλώς να εμφανίσετε ορισμένες αριθμητικές τιμές. Τα 7 τμήματα έχουν επίσης το πλεονέκτημα έναντι της κακής κατάστασης φωτισμού και μπορούν να προβληθούν από γωνίες καθυστερημένης από μια κανονική οθόνη LCD. Ας αρχίσουμε λοιπόν να το γνωρίζουμε.
Ενότητα εμφάνισης 7-τμημάτων και 4-ψηφίων 7-τμημάτων:
Το 7 Segment Display έχει επτά τμήματα σε αυτό και κάθε τμήμα έχει ένα LED στο εσωτερικό του για να εμφανίσει τους αριθμούς φωτίζοντας τα αντίστοιχα τμήματα. Όπως εάν θέλετε το 7-τμήμα να εμφανίζει τον αριθμό "5", τότε πρέπει να κάνετε λάμψη των τμημάτων a, f, g, c και d κάνοντας τις αντίστοιχες ακίδες τους ψηλές. Υπάρχουν δύο τύποι οθονών 7 τμημάτων: Common Cathode και Common Anode, εδώ χρησιμοποιούμε την επίδειξη Common Cathode επτά τμημάτων. Μάθετε περισσότερα για την προβολή 7 τμημάτων εδώ.
Τώρα ξέρουμε πώς να προβάλλουμε τον επιθυμητό αριθμητικό χαρακτήρα σε μία οθόνη 7 τμημάτων. Όμως, είναι αρκετά προφανές ότι θα χρειαζόμασταν περισσότερες από μία οθόνες 7 τμημάτων για να μεταφέρουμε οποιεσδήποτε πληροφορίες είναι περισσότερες από ένα ψηφία. Έτσι, σε αυτό το σεμινάριο θα χρησιμοποιήσουμε μια τετραψήφια ενότητα 7-τμημάτων όπως φαίνεται παρακάτω.
Όπως μπορούμε να δούμε, υπάρχουν τέσσερις οθόνες επτά τμημάτων συνδεδεμένες μεταξύ τους. Γνωρίζουμε ότι κάθε ενότητα 7 τμημάτων θα έχει 10 καρφίτσες και για 4 επτά οθόνες τμημάτων θα υπάρχουν συνολικά 40 ακίδες και θα ήταν πολύ δύσκολο για οποιονδήποτε να τα κολλήσει σε μια κουκκίδα, οπότε θα συνιστούσα ιδιαίτερα σε κανέναν να αγοράσει μια ενότητα ή δημιουργήστε το δικό σας PCB για τη χρήση μιας 4ψήφιας οθόνης 7 τμημάτων. Η σχηματική σύνδεση για το ίδιο φαίνεται παρακάτω:
Για να κατανοήσουμε πώς λειτουργεί η τετραψήφια ενότητα επτά τμημάτων, πρέπει να εξετάσουμε τα παραπάνω σχήματα, όπως φαίνεται ότι οι ακίδες Α και των τεσσάρων ενδείξεων συνδέονται για να συγκεντρωθούν ως ένα Α και το ίδιο για B, C…. έως DP. Λοιπόν, βασικά εάν ενεργοποιηθεί το Α, τότε και τα τέσσερα Α πρέπει να πάνε ψηλά, σωστά;
Όμως, αυτό δεν συμβαίνει. Έχουμε επιπλέον τέσσερις ακίδες από D0 έως D3 (D0, D1, D2 και D3) που μπορούν να χρησιμοποιηθούν για τον έλεγχο της εμφάνισης από τις τέσσερις που πρέπει να φτάσει ψηλά. Για παράδειγμα: Εάν χρειάζομαι την έξοδο μου να υπάρχει μόνο στη δεύτερη οθόνη, τότε μόνο το D1 πρέπει να είναι ψηλό διατηρώντας ταυτόχρονα τους άλλους ακροδέκτες (D0, D2 και D3) χαμηλούς. Απλά μπορούμε να επιλέξουμε ποια οθόνη πρέπει να είναι ενεργή χρησιμοποιώντας τις ακίδες από D0 έως D3 και ποιος χαρακτήρας θα εμφανίζεται χρησιμοποιώντας τις ακίδες από A έως DP.
Σύνδεση τετραψήφιας μονάδας 7 τμημάτων με Raspberry Pi:
Ας δούμε πώς, πώς μπορούμε να συνδέσουμε αυτήν την τετραψήφια μονάδα 7 τμημάτων με το Raspberry Pi. Η μονάδα 7 τμημάτων έχει 16 ακίδες όπως φαίνεται παρακάτω. Η ενότητα σας μπορεί να έχει λιγότερα, αλλά μην ανησυχείτε θα έχει τα ακόλουθα σίγουρα
- 7 ή 8 ακίδες τμήματος (εδώ καρφίτσες από 1 έως 8)
- Καρφίτσα γείωσης (εδώ ακίδα 11)
- 4 ψηφία καρφίτσες (εδώ καρφίτσες 13 έως 16)
Παρακάτω δίνεται το σχήμα για το ψηφιακό ρολόι βατόμουρου pi, συνδέοντας 4-ψήφιο ενότητα επτά τμημάτων με Raspberry Pi:
Ο παρακάτω πίνακας θα σας βοηθήσει επίσης να κάνετε τις συνδέσεις και να την επαληθεύσετε σύμφωνα με τα σχήματα που εμφανίζονται παραπάνω.
ΝΟ |
Rsp Pi GPIO αριθμός |
Αριθμός PIN Rsp Pi |
Όνομα 7-τμήματος |
Αριθμός pin 7-Seg (εδώ σε αυτήν την ενότητα) |
1 |
GPIO 26 |
PIN 37 |
Τμήμα α |
1 |
2 |
GPIO 19 |
PIN 35 |
Τμήμα β |
2 |
3 |
GPIO 13 |
PIN 33 |
Τμήμα γ |
3 |
4 |
GPIO 6 |
PIN 31 |
Τμήμα δ |
4 |
5 |
GPIO 5 |
PIN 29 |
Τμήμα e |
5 |
6 |
GPIO 11 |
PIN 23 |
Τμήμα στ |
6 |
7 |
GPIO 9 |
PIN 21 |
Τμήμα g |
7 |
8 |
GPIO 10 |
PIN 19 |
Τμήμα DP |
8 |
9 |
GPIO 7 |
PIN 26 |
Ψηφίο 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
Ψηφίο 2 |
14 |
11 |
GPIO 25 |
PIN 22 |
Ψηφίο 3 |
15 |
12 |
GPIO 24 |
PIN 18 |
Ψηφίο 4 |
16 |
13 |
Εδαφος |
Εδαφος |
Εδαφος |
11 |
Προσδιορίστε τις καρφίτσες στη μονάδα σας και είστε όλοι καλοί να συνεχίσετε με τις συνδέσεις. Το να εντοπίζετε τις καρφίτσες GPIO στο Raspberry pi μπορεί να είναι λίγο δύσκολο έργο, γι 'αυτό σας έδωσα αυτήν την εικόνα για τις καρφίτσες GPIO.
Προγραμματισμός του Raspberry Pi:
Εδώ χρησιμοποιούμε τη γλώσσα προγραμματισμού Python για τον προγραμματισμό RPi. Υπάρχουν πολλοί τρόποι προγραμματισμού του Raspberry Pi. Σε αυτό το σεμινάριο χρησιμοποιούμε το Python 3 IDE, καθώς είναι το πιο χρησιμοποιημένο. Το πλήρες πρόγραμμα Python δίνεται στο τέλος αυτού του σεμιναρίου. Μάθετε περισσότερα για το Πρόγραμμα και τον κώδικα εκτέλεσης στο Raspberry Pi εδώ.
Θα μιλήσουμε για λίγες εντολές που θα χρησιμοποιήσουμε στο πρόγραμμα PYHTON για αυτό το έργο, Πρώτα πρόκειται να εισαγάγουμε αρχείο GPIO από τη βιβλιοθήκη, η παρακάτω λειτουργία μας επιτρέπει να προγραμματίσουμε τις καρφίτσες GPIO του PI. Μετονομάζουμε επίσης "GPIO" σε "IO", έτσι στο πρόγραμμα όποτε θέλουμε να αναφερθούμε στις καρφίτσες GPIO θα χρησιμοποιήσουμε τη λέξη "IO". Έχουμε εισαγάγει επίσης χρόνο και datetime για να διαβάσετε την αξία του χρόνου από την ΕΠΣ Pi.
εισαγωγή RPi.GPIO ως χρόνος εισαγωγής GPIO, ώρα
Μερικές φορές, όταν οι ακίδες GPIO, τις οποίες προσπαθούμε να χρησιμοποιήσουμε, μπορεί να κάνουν κάποιες άλλες λειτουργίες. Σε αυτήν την περίπτωση, θα λάβουμε προειδοποιήσεις κατά την εκτέλεση του προγράμματος. Η παρακάτω εντολή λέει στο PI να αγνοήσει τις προειδοποιήσεις και να συνεχίσει το πρόγραμμα.
IO.setwarnings (Λάθος)
Μπορούμε να παραπέμψουμε τους ακροδέκτες GPIO του PI, είτε με τον αριθμό καρφίτσας επί του σκάφους είτε με τον αριθμό λειτουργίας τους. Όπως το «PIN 29» στον πίνακα είναι «GPIO5». Λοιπόν, λέμε εδώ ότι θα αντιπροσωπεύσουμε το pin εδώ με «29» ή «5». Το GPIO.BCM σημαίνει ότι θα αντιπροσωπεύσουμε χρησιμοποιώντας 5 για το GPIO5 pin 29.
IO.setmode (GPIO.BCM)
Όπως πάντα θα πρέπει να ξεκινήσουμε αρχικοποιώντας τους ακροδέκτες, εδώ τόσο οι ακίδες τμήματος όσο και οι ακίδες ψηφίων είναι ακίδες εξόδου. Για σκοπούς προγραμματισμού σχηματίζουμε πίνακες για καρφίτσες τμημάτων και αρχικοποιούμε σε «0» αφού τις δηλώσουμε ως GPIO.OUT
segment8 = (26,19,13,6,5,11,9,10) για το τμήμα στο segment8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
Ομοίως για τις ακίδες ψηφίων τις δηλώνουμε ως εξόδους εξόδου και τις κάνουμε «0» από προεπιλογή
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) #Off αρχικά #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off αρχικά #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) #Off αρχικά #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) #Off αρχικά
Πρέπει να σχηματίσουμε πίνακες για να εμφανίσουμε κάθε αριθμό σε επτά τμήματα. Για να εμφανιστεί ένας αριθμός πρέπει να ελέγξουμε και τις 7 ακίδες (εξαιρούνται οι κουκκίδες), δηλαδή είτε πρέπει να απενεργοποιηθούν είτε να ενεργοποιηθούν. Για παράδειγμα για την εμφάνιση του αριθμού 5 έχουμε την ακόλουθη ρύθμιση
ΝΟ |
Rsp Pi GPIO αριθμός |
Όνομα 7-τμήματος |
Κατάσταση για εμφάνιση «5». (0-> OFF, 1-> ON) |
1 |
GPIO 26 |
Τμήμα α |
1 |
2 |
GPIO 19 |
Τμήμα β |
1 |
3 |
GPIO 13 |
Τμήμα γ |
0 |
4 |
GPIO 6 |
Τμήμα δ |
1 |
5 |
GPIO 5 |
Τμήμα e |
1 |
6 |
GPIO 11 |
Τμήμα στ |
0 |
7 |
GPIO 9 |
Τμήμα g |
1 |
Ομοίως έχουμε αριθμό ακολουθίας για όλους τους αριθμούς και τα αλφάβητα. Μπορείτε να γράψετε μόνοι σας ή να χρησιμοποιήσετε το παρακάτω γράφημα.
Με αυτά τα δεδομένα μπορούμε να σχηματίσουμε τους πίνακες για κάθε αριθμό στο πρόγραμμα python όπως φαίνεται παρακάτω.
null = μηδέν = ένα = δύο = τρία = τέσσερα = πέντε = έξι = επτά = οκτώ = εννέα =
Εάν ακολουθήσετε το πρόγραμμα, θα υπάρχει μια λειτουργία για την εμφάνιση κάθε χαρακτήρα στην οθόνη 7 τμημάτων μας, αλλά, ας παραλείψουμε αυτό για τώρα και να μπείτε στον προσωρινό βρόχο. Όπου διαβάστε την παρούσα ώρα από το Raspberry Pi και διαιρέστε την τιμή του χρόνου μεταξύ τεσσάρων μεταβλητών. Για παράδειγμα, εάν ο χρόνος είναι 10.45 τότε η μεταβλητή h1 θα έχει 1, το h2 θα έχει 0, το m1 θα έχει 4v και το m2 θα έχει 5.
now = datetime.datetime.now () hour = now.hour minute = now.minute h1 = hour / 10 h2 = hour% 10 m1 = minute / 10 m2 = minute% 10 print (h1, h2, m1, m2)
Πρέπει να εμφανίσουμε αυτές τις τέσσερις μεταβλητές τιμές στα τέσσερα ψηφία μας αντίστοιχα. Για να γράψουμε μια τιμή μεταβλητής σε ένα ψηφίο μπορούμε να χρησιμοποιήσουμε τις ακόλουθες γραμμές. Εδώ εμφανίζεται το ψηφίο 1 κάνοντάς το να φτάσει ψηλά, τότε η συνάρτηση print_segment (μεταβλητή) θα κληθεί να εμφανίσει την τιμή σε μεταβλητή στην οθόνη του τμήματος. Ίσως αναρωτιέστε γιατί έχουμε καθυστέρηση μετά από αυτό και γιατί απενεργοποιούμε αυτό το ψηφίο μετά από αυτό.
GPIO.output (7, 1) # Ενεργοποίηση Digit One print_segment (h1) #Print h1 on segment time.sleep (delay_time) GPIO.output (7, 0) # Απενεργοποίηση Digit One
Ο λόγος είναι, όπως γνωρίζουμε ότι μπορούμε να εμφανίσουμε μόνο ένα ψηφίο κάθε φορά, αλλά έχουμε τέσσερα ψηφία για εμφάνιση και μόνο εάν εμφανίζονται και τα τέσσερα ψηφία, ο πλήρης τετραψήφιος αριθμός θα είναι ορατός για τον χρήστη.
Λοιπόν, πώς εμφανίζονται και τα 4 ψηφία ταυτόχρονα;
Τυχερός για εμάς το MPU μας είναι πολύ πιο γρήγορο από ένα ανθρώπινο μάτι, οπότε αυτό που πραγματικά κάνουμε: εμφανίζουμε ένα ψηφίο τη φορά, αλλά το κάνουμε πολύ γρήγορα όπως φαίνεται παραπάνω.
Επιλέγουμε μια οθόνη ψηφίων που περιμένει 2ms (μεταβλητή καθυστέρηση_ ώρα) έτσι ώστε το MPU και το 7-τμήμα να μπορούν να το επεξεργαστούν και στη συνέχεια να απενεργοποιήσουμε αυτό το ψηφίο και να προχωρήσουμε στο επόμενο ψηφίο και να κάνουμε το ίδιο μέχρι να φτάσουμε στο τελευταίο ψηφίο. Αυτή η καθυστέρηση των 2ms δεν μπορεί να παρατηρηθεί από ανθρώπινο μάτι και τα τέσσερα ψηφία φαίνεται να είναι ταυτόχρονα ΕΝΕΡΓΟ.
Το τελευταίο πράγμα που πρέπει να μάθετε για να μάθετε πώς λειτουργεί η λειτουργία print_segment (μεταβλητή) . Μέσα σε αυτήν τη λειτουργία χρησιμοποιούμε τους πίνακες που έχουμε δηλώσει μέχρι τώρα. Έτσι, οποιαδήποτε μεταβλητή που στέλνουμε σε αυτήν τη συνάρτηση θα πρέπει να έχει την τιμή μεταξύ (0-9), ο μεταβλητός χαρακτήρας θα λάβει αυτήν την τιμή και θα τη συγκρίνει για πραγματική τιμή. Εδώ η μεταβλητή συγκρίνεται με το «1». Ομοίως συγκρίνουμε με όλους τους αριθμούς από το 0 έως το 9. Εάν είναι ένας συνδυασμός, χρησιμοποιούμε τους πίνακες και αντιστοιχίζουμε κάθε τιμή στις αντίστοιχες καρφίτσες του τμήματος όπως φαίνεται παρακάτω.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Χρόνος εμφάνισης σε 4-Digit 7-segment χρησιμοποιώντας το Raspberry Pi:
Χρησιμοποιήστε το σχηματικό και τον κωδικό που δίνονται εδώ για να κάνετε τις συνδέσεις και να προγραμματίσετε ανάλογα το βατόμουρο pi. Αφού ολοκληρωθούν όλα, απλώς ξεκινήστε το πρόγραμμα και θα πρέπει να βρείτε την τρέχουσα ώρα να εμφανίζεται στην οθόνη επτά τμημάτων. Όμως, υπάρχουν λίγα πράγματα που πρέπει να ελέγξετε πριν από αυτό
- Βεβαιωθείτε ότι έχετε ρυθμίσει το Raspberry Pi με την τρέχουσα ώρα μόνο σε περίπτωση που λειτουργεί σε ώρα εκτός σύνδεσης.
- Τροφοδοτήστε το Raspberry pi με έναν προσαρμογέα και όχι με τον φορητό / υπολογιστή σας, επειδή το ρεύμα που αντλείται από την οθόνη 7 τμημάτων είναι υψηλό και η θύρα USB δεν μπορεί να το προμηθεύσει.
Εάν όλα λειτουργούν όπως αναμενόταν, τότε θα πρέπει να βρείτε κάτι τέτοιο παρακάτω.
Η πλήρης λειτουργία αυτού του ρολογιού σμέουρων μπορεί επίσης να ελεγχθεί στο παρακάτω βίντεο. Ελπίζω να σας άρεσε το έργο και σας άρεσε να φτιάξετε ένα έργο. Επιτρέψτε μου να ξέρω τι σκέφτεστε ή εάν χρειάζεστε βοήθεια.