Πίνακας περιεχομένων:

Ρολόι συνταξιοδότησης / Καταμέτρηση / Ρολόι Dn: 4 βήματα (με εικόνες)
Ρολόι συνταξιοδότησης / Καταμέτρηση / Ρολόι Dn: 4 βήματα (με εικόνες)

Βίντεο: Ρολόι συνταξιοδότησης / Καταμέτρηση / Ρολόι Dn: 4 βήματα (με εικόνες)

Βίντεο: Ρολόι συνταξιοδότησης / Καταμέτρηση / Ρολόι Dn: 4 βήματα (με εικόνες)
Βίντεο: Agatha Christie's Poirot S05E05 - The Adventure of the Italian Nobleman [FULL EPISODE] 2024, Νοέμβριος
Anonim
Ρολόι συνταξιοδότησης / Count Up / Dn Clock
Ρολόι συνταξιοδότησης / Count Up / Dn Clock

Είχα μερικές από αυτές τις οθόνες 8x8 LED με κουκκίδες στο συρτάρι και σκεφτόμουν τι να κάνω με αυτές. Εμπνευσμένο από άλλες οδηγίες, μου ήρθε η ιδέα να δημιουργήσω μια οθόνη αντίστροφης μέτρησης/ανύψωσης για να μετρήσω αντίστροφα σε μια μελλοντική ημερομηνία/ώρα και αν περάσει ο στόχος, μετρήστε από αυτήν. Το έκανα τώρα το ρολόι συνταξιοδότησής μου καθισμένο στο ράφι.

Η ιδέα να το βάλω σε ένα μπουκάλι ήταν περισσότερο ατύχημα ενώ σκεφτόμουν ένα περίβλημα. Άλλοι έβαλαν πλοία σε ένα μπουκάλι, γιατί όχι ένα ρολόι;

Wantedθελα επίσης να κάνω το ρολόι να υπακούει στη θερινή ώρα και φυσικά να θυμάμαι τις ρυθμίσεις και την ώρα όταν αποσυνδέομαι. Τροφοδοτώ το ρολόι μέσω USB που το καθιστά επαναπρογραμματιζόμενο εάν θέλετε να κάνετε κάτι διαφορετικό ή απλώς να προσθέσετε δυνατότητες στον κώδικα. Ο κώδικας είναι αρκετά απλός και θα μπορούσε επίσης να χρησιμοποιήσει πολλή βελτιστοποίηση. Δεν έδωσα καλή προσοχή στην κατανάλωση RAM πρέπει να ομολογήσω. Αν έχω χρόνο και κίνητρο, θα επανέλθω.

Προμήθειες

1. Arduino Nano

2. RTC (χρησιμοποίησα το κοινό DS3231 που διαθέτει επίσης EEPROM)

3. Μονάδα μήτρας 12x 8x8 κουκκίδων. (Είχα τις τετραπλές ενότητες που είναι ευκολότερο να ευθυγραμμιστούν)

4. LDR για ρύθμιση της φωτεινότητας της οθόνης

5. Αντίσταση 10 kOhm

6. Πυκνωτής 5x 100 uF που καταστέλλει αιχμές από την οθόνη

7. Για να αυξήσω την αντίθεση των μονάδων 8x8, χρησιμοποίησα τη σκοτεινή απόχρωση "Ταινία παραθύρου". Η οθόνη εμφανίζει τις λυχνίες LED ως λευκές κουκκίδες αν δεν είναι αναμμένες. Η μεμβράνη του παραθύρου το μετατρέπει σε μια λαμπερή μαύρη εμφάνιση.

Βήμα 1: Συνδέστε τα εξαρτήματα

Συνδέστε τα εξαρτήματα
Συνδέστε τα εξαρτήματα
Συνδέστε τα εξαρτήματα
Συνδέστε τα εξαρτήματα

Χρησιμοποίησα τρεις από τις τετραπλές οθόνες για τη συναρμολόγηση της οθόνης. Για να δείξουμε μια ημερομηνία με μικρές γραμμές και χρόνο με άνω και κάτω τελείες, χρειαζόμαστε χώρο για 8 χαρακτήρες. Χρησιμοποιώντας την τυπική γραμματοσειρά 5x7, θα χρειαστούμε έξι μπλοκ 8x8 ανά σειρά. Έκοψα ένα από τα τετράγωνα τετράγωνα στη μέση και τα τοποθέτησα ως δύο σειρές κατά έξι τετράγωνα, όπως φαίνεται στο σχήμα του breadboard.

Βήμα 2: Τμήματα εκτυπωμένων 3D

Τρισδιάστατα εκτυπωμένα ανταλλακτικά
Τρισδιάστατα εκτυπωμένα ανταλλακτικά
Τρισδιάστατα εκτυπωμένα ανταλλακτικά
Τρισδιάστατα εκτυπωμένα ανταλλακτικά
Τρισδιάστατα εκτυπωμένα ανταλλακτικά
Τρισδιάστατα εκτυπωμένα ανταλλακτικά

Για να κρατήσω τις δύο σειρές της οθόνης και να τις τοποθετήσω στη φιάλη, εκτύπωσα δακτυλίους απόστασης για το πλαίσιο της οθόνης. Πρόσθεσα τα αρχεία που χρησιμοποίησα παρακάτω. Για να μπορέσετε να τα εκτυπώσετε χωρίς υποστήριξη, χωρίζονται σε μέρη. Το στιγμιότυπο οθόνης δείχνει τους δύο δακτυλίους κολλημένους στο πλαίσιο της οθόνης. Το κάλυμμα του λαιμού της φιάλης φιλοξενεί τα τρία κουμπιά για εναλλαγή μεταξύ των λειτουργιών οθόνης και ρύθμισης της τρέχουσας ώρας και του στόχου. Το κάλυμμα του λαιμού της φιάλης που εκτύπωσα σε TPU επιτρέποντας να σύρετε το καλώδιο USB στο κάλυμμα χωρίς να κόψετε τους συνδετήρες και να το δέσετε με μερικές περιελίξεις σύρματος. Ξέχασα να αναφέρω ότι χρησιμοποίησα ένα μπουκάλι κρασί 1,5 L το οποίο έκοψα στο κάτω μέρος. Όλα τα μέρη προς εκτύπωση τοποθετούνται σε κρεβάτι εκτυπωτή 20x20 cm (8x8 in).

Βήμα 3: Ο κώδικας

Ο κώδικας Arduino χρησιμοποιεί μερικές κοινώς χρησιμοποιούμενες βιβλιοθήκες.

MD_MAX72xx

SPI

Σύρμα

RTClib

Ζώνη ώρας

TimeLib

Υπάρχουν μερικές γραμμές στο αρχείο INO που μπορεί να χρειαστούν αλλαγή:

Γραμμή 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- εξαρτάται από τη μονάδα 8x8 και τον προσανατολισμό της

αντί για FC16_HW θα μπορούσε να είναι ένα από τα εξής:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Ο κωδικός χρησιμοποιεί τις ρυθμίσεις για την κεντρική ώρα των ΗΠΑ και χρειάζεται προσαρμογή για άλλες ζώνες ώρας:

Γραμμή 53/54:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // lightρα της ημέρας UTC -5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Τυπική ώρα UTC -6

Αυτό είναι εύκολο να προσαρμοστεί. Το όνομα CST/CDT είναι απλώς για να έχει μια αναφορά. Δεν εμφανίζω τη συντομογραφία τριών γραμμάτων, οπότε δεν έχει σημασία. Οι επόμενες παράμετροι αναφέρονται σε ποια ημέρα του μήνα συμβαίνει η αλλαγή. Η προσαρμογή γίνεται σε λεπτά, επομένως οι τοποθεσίες που χρησιμοποιούν προσαρμογές +/- 30 λεπτών θα λειτουργήσουν επίσης.

Το RTC λειτουργεί εσωτερικά σε UTC-Time επιτρέποντας στη βιβλιοθήκη ζώνης ώρας να λειτουργεί όπως προβλέπεται. Wonderσως αναρωτιέστε γιατί ο κώδικας αναφέρεται στο παλιότερο τσιπ DS1307 αντίθετα με το τσιπ ρολογιού που χρησιμοποίησα, αλλά αυτό δεν έχει σημασία. Η βιβλιοθήκη λειτουργεί καλά με οποιοδήποτε τσιπ. Το DS1307 έχει την τάση να παρασύρεται περισσότερο από το DS3132. το DS3132 είναι το προτιμώμενο ρολόι. Για όσους θέλουν να προσθέσουν χρόνο στο διαδίκτυο, ένα ESP8266 θα κάνει τη δουλειά πολύ εύκολα. Αυτό θα μπορούσε να καταστήσει το RTC παρωχημένο. Εάν κάνετε αυτές τις αλλαγές, χρησιμοποιήστε το Arduino EEPROM για να αποθηκεύσετε τον χρόνο -στόχο, εγώ χρησιμοποίησα το RTC EEPROM για να το κάνω.

Βήμα 4: Λειτουργία και ρυθμίσεις

Λειτουργία και Ρυθμίσεις
Λειτουργία και Ρυθμίσεις
Λειτουργία και Ρυθμίσεις
Λειτουργία και Ρυθμίσεις
Λειτουργία και Ρυθμίσεις
Λειτουργία και Ρυθμίσεις

Υπάρχουν τρία κουμπιά

1. Μενού / ρυθμίσεις

2. Πάνω

3. Κάτω

Το κουμπί μενού επιτρέπει την ποδηλασία μέσω των τριών τυπογραφικών οθόνης: Τρέχουσα ώρα, getρα στόχου, Delρα δέλτα. Ο χρόνος Δέλτα δείχνει τον αριθμό των ημερών, HH/MM/SS μεταξύ της τρέχουσας ώρας και της ώρας στόχου. Θα δείξει t- και αντίστροφη μέτρηση αν ο στόχος είναι στο μέλλον ή t+ και θα μετρήσει αν ο στόχος είναι στο παρελθόν.

Για να ρυθμίσετε την τρέχουσα ή την ώρα στόχου, επιλέξτε την τρέχουσα ώρα ή την οθόνη ώρας στόχου. Για να αλλάξετε την ώρα, κρατήστε πατημένο το κουμπί μενού για 2 δευτερόλεπτα και αφήστε το που θα σας φέρει στη λειτουργία ρύθμισης. Το γειτονικό "/" ή ":" θα μετατραπεί σε "" για να υποδείξει ποιο ψηφίο προσαρμόζετε. Χρησιμοποιήστε τα κουμπιά επάνω/κάτω για να ρυθμίσετε τα μεμονωμένα hh/mm/ss και mm/dd/yy. Δεν πρόσθεσα μια ρύθμιση για εναλλαγή μεταξύ mm/dd/yy και dd/mm/yy, αυτό χρειάζεται αλλαγή στον κώδικα ή ίσως κάποιος είναι πρόθυμος να προσθέσει αυτήν τη λειτουργία.

Θα παρατηρήσετε ότι αν ανεβάσετε τα λεπτά πάνω από 59 ή κάτω από το 00, η ένδειξη ώρας θα προσαρμοστεί επίσης. το ίδιο ισχύει για δευτερόλεπτα, ώρες και ημέρες που αλλάζουν την επόμενη υψηλότερη τιμή, εάν περάσετε κάτω από το 0 ή πάνω από το μέγιστο για αυτό το ψηφίο. Το έκανα για να αποφύγω τον προγραμματισμό των διαφόρων ορίων των μεμονωμένων μηνών και εάν ο Φεβρουάριος χρειάζεται 29 ημέρες σε ένα δίσεκτο έτος. Η προσαρμογή του χρόνου στην πραγματικότητα γίνεται σε εποχή εποχής, δευτερόλεπτα από την 1η Ιανουαρίου 1970.

Πρόσθεσα ένα απλό βίντεο για να δείξω την καταμέτρηση. Iθελα να τα κάνω σαν οθόνη τροχού περιστροφής. Εάν θέλετε να προσαρμόσετε τη διάρκεια της αλλαγής, η γραμμή 69 στο INO σας δίνει μερικές επιλογές για να επιταχύνετε ή να επιβραδύνετε την αλλαγή. Τα 120ms θα κάνουν τα ψηφία να μετακινούνται αρκετά αργά, καθώς θα ήταν ένας τροχός συνεχούς λειτουργίας.

Ελπίζω να σας άρεσε αυτό το διδακτικό.

Πάτρικ Γκέσβιντνερ

Συνιστάται: