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

Κρυπτικό ρολόι τοίχου: 27 βήματα (με εικόνες)
Κρυπτικό ρολόι τοίχου: 27 βήματα (με εικόνες)

Βίντεο: Κρυπτικό ρολόι τοίχου: 27 βήματα (με εικόνες)

Βίντεο: Κρυπτικό ρολόι τοίχου: 27 βήματα (με εικόνες)
Βίντεο: Μονή Ζωοδόχου Πηγής Πύλης Βοιωτίας: Ένας θησαυρός της βυζαντινής τέχνης. 2024, Νοέμβριος
Anonim
Κρυπτικό ρολόι τοίχου
Κρυπτικό ρολόι τοίχου

Το πέρασμα του χρόνου είναι κάτι που δεν μπορούμε να ελέγξουμε. Συμβαίνει με τον ίδιο ρυθμό αν κοιμόμαστε, ξυπνάμε, βαριόμαστε ή είμαστε αρραβωνιασμένοι. Με τα τρέχοντα γεγονότα, είναι σημαντικό να θυμάστε ότι ο χρόνος θα περάσει. Ενώ περιμένουμε να περάσει ο χρόνος, γιατί να μην κάνουμε κάτι που κάνει το πέρασμα του χρόνου πιο ελκυστικό για παρακολούθηση.

Αυτό το ρολόι είναι εμπνευσμένο από το Mengenlehreuhr που βρέθηκε στο Βερολίνο της Γερμανίας και μπορεί να διαβαστεί με τον ίδιο τρόπο. Ακριβώς όπως το πρωτότυπο, δείχνει την ώρα μέσω φωτισμένων, χρωματισμένων πεδίων.

Διαθέτει 96 LED που φωτίζουν περιοχές 52 «ψηφίων». Σε αντίθεση με το πρωτότυπο, διαθέτει κυκλικό σχεδιασμό που περιλαμβάνει δακτύλιο δευτερολέπτων, αντί για διάταξη οριζόντιας ράβδου. Η εξωτερική ζώνη υποδεικνύει δευτερόλεπτα σε συνδυασμό με τη μεσαία κουκκίδα, οι δύο επόμενες ζώνες υποδεικνύουν λεπτά, με την τελική εσωτερική ζώνη να δείχνει ώρες.

Εάν έχετε λίγο παλιοσίδερο και επιπλέον χρόνο στα χέρια σας, γιατί να μην χρησιμοποιήσετε αυτόν τον χρόνο για να φτιάξετε κάτι που θα το δείξει!

Υπάρχουν μερικές αλλαγές που θα έκανα σε αυτό το έργο εάν επρόκειτο να το κάνω ξανά. Πρώτα, θα έβαψα το πλαίσιο και τον πίνακα LED λευκό αντί για μαύρο. Αυτό θα αντανακλούσε περισσότερο φως μέσω του μεγάλου φακού στο μπροστινό μέρος. Θα περίμενα επίσης μέχρι το τέλος για να τοποθετήσω τα LED. Χρειαζόμουν τον πίνακα να τελειώσει νωρίτερα, ώστε να με βοηθήσει να γράψω τον κώδικα. Με αυτό εκτός δρόμου, ας μάθουμε πρώτα πώς να το διαβάζουμε!

Εικόνα
Εικόνα

Βήμα 1: Πώς να διαβάσετε το ρολόι

Το ρολόι διαβάζεται από τους εσωτερικούς κύκλους προς τους εξωτερικούς. Ο εσωτερικός δακτύλιος τεσσάρων πεδίων δηλώνει πέντε πλήρεις ώρες το καθένα, παράλληλα με το δεύτερο δακτύλιο, επίσης τεσσάρων πεδίων, που δηλώνουν μία πλήρη ώρα το καθένα, εμφανίζοντας την τιμή της ώρας σε μορφή 24 ωρών. Ο τρίτος δακτύλιος αποτελείται από έντεκα πεδία, τα οποία δηλώνουν πέντε πλήρη λεπτά το καθένα, ο επόμενος δακτύλιος έχει άλλα τέσσερα πεδία, τα οποία σημαίνουν ένα πλήρες λεπτό το καθένα. Τέλος, ο εξωτερικός δακτύλιος των 29 πεδίων υποδηλώνει ζυγά δευτερόλεπτα με το φως στο κέντρο να αναβοσβήνει για να υποδηλώσει περιττά (όταν είναι αναμμένα) ή ζυγαριθμημένα (όταν δεν φωτίζονται) δευτερόλεπτα.

Εικόνα
Εικόνα

Για παράδειγμα, η παραπάνω εικόνα έχει 1 από τα ψηφία των πέντε ωρών, 3 από τα ψηφία της μίας ώρας, 8 από τα ψηφία των πέντε λεπτών, 4 από τα ψηφία του ενός λεπτού και 23 από τα δύο δεύτερα ψηφία και το μεσαίο δεύτερο ψηφίο φωτίζεται.

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 8:44:47 = 8:44:47 π.μ.

Εικόνα
Εικόνα

Ο χρόνος που εμφανίζεται παραπάνω είναι: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 3:17:11 μ.μ.

Εικόνα
Εικόνα

Ο χρόνος που εμφανίζεται παραπάνω είναι: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 5:18:33 μ.μ.

Βήμα 2: Εργαλεία και υλικά

Εργαλεία και υλικά
Εργαλεία και υλικά
Εργαλεία και υλικά
Εργαλεία και υλικά
Εργαλεία και υλικά
Εργαλεία και υλικά

Ηλεκτρονικά υλικά:

  • Arduino Nano
  • Ρολόι πραγματικού χρόνου
  • Διευθύνσιμες λυχνίες LED
  • Βύσμα τροφοδοσίας
  • Καλώδιο ρεύματος
  • USB Power Plug
  • Αντίσταση εξαρτώμενη από το φως και ισορροπημένη αντίσταση (αν θέλετε να χαμηλώνει τη νύχτα)
  • Σύρμα

Υλικά ξυλουργικής:

  • 3/4 in. Κόντρα πλακέ
  • Λεπτό κόντρα πλακέ
  • Scrap Wood (χρησιμοποίησα 2x4 αλλά το σκληρό ξύλο θα λειτουργούσε επίσης)
  • Χρώμα
  • Ακρυλικό φύλλο 30 x 36 ιντσών (βρίσκεται στο κατάστημα τοπικής βελτίωσης σπιτιού)
  • Χρώμα παραθύρου (προσπαθήστε να κάνετε πηγή τοπικά. Εάν δεν είναι διαθέσιμο, μπορείτε να βρείτε ένα φύλλο αρκετά μεγάλο εδώ)
  • Υγρό εφαρμογής χρωμάτων παραθύρου (χρησιμοποίησα νερό αναμεμειγμένο με σαμπουάν για μωρά σε μπουκάλι ψεκασμού)
  • Windex
  • Χαρτοπωλείο
  • Βίδες
  • Κόλλα κόλλας
  • Κόλλα
  • Κόλλα Stick

Εργαλεία:

  • Κυβερνήτης
  • Μαχαίρι Xacto
  • Ταινία-κασέτα
  • Ταινία διπλής όψης
  • Πυξίδα
  • Circle Cutting Jig
  • Λεπτό πριόνι
  • Πριονοκορδέλα
  • Σάιντερ άξονα
  • Palm Sander
  • Δισκοτριβείο
  • Πίνακας δρομολογητή
  • Σουβλί
  • Drill and Drill Bits/Drivers
  • Σφιγκτήρες
  • Συγκολλητικό σίδερο
  • Κόλλα μετάλλων
  • Συρματόσχοινα

Βήμα 3: Συναρμολόγηση προτύπων

Συναρμολόγηση προτύπων
Συναρμολόγηση προτύπων
Συναρμολόγηση προτύπων
Συναρμολόγηση προτύπων

Για το μεγάλο πρότυπο, εκτυπώστε το χρησιμοποιώντας τη ρύθμιση αφίσας στο Adobe Reader. Κόψτε τα περιθώρια για κάθε χαρτί και ταινία μαζί. Οι κάθετες, οριζόντιες και διαγώνιες γραμμές θα βοηθήσουν στην ευθυγράμμιση του προτύπου. Όλες οι σελίδες έχουν μικρούς αριθμούς για να διατηρηθούν οργανωμένες σε περίπτωση που δεν λειτουργούν.

Όλα τα πρότυπα και τα αρχεία που απαιτούνται βρίσκονται στο Βήμα 26.

Βήμα 4: Κύκλοι με τραχύ κόψιμο

Κύκλοι τραχύς κοπής
Κύκλοι τραχύς κοπής
Κύκλοι τραχύς κοπής
Κύκλοι τραχύς κοπής

Τοποθετώντας τα δύο πρότυπα σε ένα φύλλο κόντρα πλακέ 3/4 ίντσες, σχεδιάστε κύκλους λίγο μεγαλύτερους από όσο χρειάζεται με μια πυξίδα. Χρησιμοποιώντας ένα παζλ, κόψτε το τραχύ σχήμα.

Βήμα 5: Κόψτε σε μέγεθος

Κόψτε στο μέγεθος
Κόψτε στο μέγεθος
Κόψτε στο μέγεθος
Κόψτε στο μέγεθος

Χρησιμοποιώντας ένα παζλ κοπής κύκλου στο πριόνι, κόψτε τους κύκλους στο τελικό μέγεθος.

Βήμα 6: Εφαρμογή προτύπου

Εφαρμογή προτύπου
Εφαρμογή προτύπου
Εφαρμογή προτύπου
Εφαρμογή προτύπου
Εφαρμογή προτύπου
Εφαρμογή προτύπου

Χρησιμοποιώντας κόλλα ψεκασμού, εφαρμόστε κάθε πρότυπο σε έναν κύκλο. Τοποθετήστε ένα καρφί στο κέντρο του προτύπου για να το κεντράρετε στον κύκλο.

Βήμα 7: Κόψτε το πρότυπο

Πρότυπο κοπής
Πρότυπο κοπής
Πρότυπο κοπής
Πρότυπο κοπής
Πρότυπο κοπής
Πρότυπο κοπής

Χρησιμοποιώντας ένα παζλ, κόψτε κάθε μεμονωμένο παράθυρο του προτύπου. Εάν έχετε πρόσβαση σε ένα CNC, αυτό το βήμα θα ήταν πολύ πιο εύκολο! Άνοιξα μια τρύπα σε κάθε παράθυρο για να βοηθήσω σε αυτή τη διαδικασία. Καθώς ξεκινάτε την κοπή, το πρότυπο μπορεί να αρχίσει να ξεκολλάει. Εάν συμβεί αυτό, μπορείτε να το ασφαλίσετε στη θέση του με μικρά κομμάτια ταινίας.

Βήμα 8: Λείανση

Λείανση
Λείανση
Λείανση
Λείανση
Λείανση
Λείανση

Χρησιμοποιώντας γυαλόχαρτο που εφαρμόζεται σε ένα ραβδί, έναν άξονα τριβής και ένα τριβείο παλάμης, τρίψτε και εξομαλύνετε την τραχιά κοπή που έχει αφήσει το παζλ.

Βήμα 9: Λαβή για τρυπάνι για LED

Τρυπάνι για LED
Τρυπάνι για LED
Τρυπάνι για LED
Τρυπάνι για LED
Τρυπάνι για LED
Τρυπάνι για LED
Τρυπάνι για LED
Τρυπάνι για LED

Σημειώστε το κέντρο κάθε οπής με μια ράβδο και ανοίξτε τρύπες για τα LED. Χρησιμοποίησα έναν οδηγό για να κρατήσω το τρυπάνι κάθετο στο τεμάχιο εργασίας μου και μια πλάτη για να μην φυσήξει το ξύλο στην πλάτη.

Βήμα 10: Συνδυάστε πίνακες

Συνδυάστε πίνακες
Συνδυάστε πίνακες
Συνδυάστε πίνακες
Συνδυάστε πίνακες
Συνδυάστε πίνακες
Συνδυάστε πίνακες

Αντικαταστήστε τον μπροστινό και τον πίσω πίνακα και εντοπίστε τμήματα του πλαισίου στο πίσω μέρος της πλακέτας LED. Μετακινήστε το πλαίσιο πίσω στο μπροστινό μέρος της πλακέτας LED και ανοίξτε τρύπες και βιδώστε τα κομμάτια μεταξύ τους.

Δείτε τις σημειώσεις εικόνας για περισσότερες πληροφορίες.

Βήμα 11: Εισάγετε LED

Τοποθετήστε LED
Τοποθετήστε LED
Τοποθετήστε LED
Τοποθετήστε LED

Σπρώξτε τις λυχνίες LED στο πίσω μέρος της πλακέτας LED. Οι τρύπες πρέπει να απέχουν τόσο ώστε να μην χρειάζεται να κόψετε κανένα καλώδιο εκτός από τη μετακίνηση από τον έναν κύκλο στον άλλο.

Από πίσω, οι λυχνίες LED ξεκινούν από το κέντρο και στη συνέχεια λειτουργούν αριστερόστροφα και μετά στον επόμενο δακτύλιο.

Βήμα 12: Επισύναψη τμήματος 1

Επισύναψη τμήματος 1
Επισύναψη τμήματος 1
Επισύναψη τμήματος 1
Επισύναψη τμήματος 1
Επισύναψη τμήματος 1
Επισύναψη τμήματος 1

Κόψτε 9 τμήματα από το πρότυπο "Τμήμα 1" που επισυνάπτεται σε κόντρα πλακέ 3/4 ίντσες (βρίσκεται στο βήμα 26). Συνδέστε στον πίνακα LED με κόλλα και σφιγκτήρες. Εάν είστε ανυπόμονοι, μπορείτε επίσης να χρησιμοποιήσετε καρφιά για να το σφίξετε στη θέση του.

Μόλις στεγνώσει, τρίψτε την άκρη με ένα τριβείο δίσκου.

Βήμα 13: Χρωματίστε

Χρώμα
Χρώμα
Χρώμα
Χρώμα
Χρώμα
Χρώμα
Χρώμα
Χρώμα

Χρωματίστε με σπρέι τόσο την πλακέτα LED όσο και το πλαίσιο. Αν το ξαναέκανα, θα είχα επιλέξει να χρησιμοποιήσω λευκό χρώμα αντί για μαύρο, καθώς θα ήταν πιο ανακλαστικό μέσα από το φακό.

Βήμα 14: Τμήμα 2

Τμήμα 2
Τμήμα 2
Τμήμα 2
Τμήμα 2
Τμήμα 2
Τμήμα 2

Κόψτε 9 τμήματα από το πρότυπο "Τμήμα 2" που είναι προσαρτημένο από ξύλο και έχει πάχος 2 3/8 ίντσες (βρίσκεται στο βήμα 26). Χρησιμοποίησα μερικά παλιοσίδερα 2x4 από το μαγαζί. Στεγνώστε τα τμήματα και βεβαιωθείτε ότι ταιριάζει καλά με ένα σφιγκτήρα μπάντας. Εάν όλα έχουν τελειώσει, καλύψτε το εξωτερικό με ταινία ζωγραφικής για να μην κολλήσει η κόλλα και αφήστε την να στεγνώσει για τουλάχιστον μία ώρα προτού προχωρήσετε στο επόμενο βήμα.

Βήμα 15: Τμήμα 3

Τμήμα 3
Τμήμα 3
Τμήμα 3
Τμήμα 3
Τμήμα 3
Τμήμα 3

Κόψτε 9 τμήματα από το πρότυπο "Τμήμα 3" προσαρτημένο από παχύ ξύλο 3/8 ίντσες. (Βρίσκεται στο βήμα 26). Κολλήστε τα έτσι ώστε οι ραφές από το τμήμα 2 να βρίσκονται στη μέση κάθε τμήματος 3. Αυτό θα ενισχύσει το δαχτυλίδι.

Βήμα 16: Λείο δαχτυλίδι και βαφή

Λείο δαχτυλίδι και χρώμα
Λείο δαχτυλίδι και χρώμα
Λείο δαχτυλίδι και χρώμα
Λείο δαχτυλίδι και χρώμα

Έφτιαξα ένα προσαρμοσμένο μπλοκ λείανσης από το κομμένο κομμάτι του μεγάλου δακτυλίου. Τρίψτε το εσωτερικό και το εξωτερικό του δακτυλίου και γεμίστε τυχόν ρωγμές που μπορεί να έχουν εμφανιστεί κατά τη διαδικασία κόλλας.

Μόλις γίνει λείο, εφαρμόστε μερικές στρώσεις μαύρης βαφής και διαφανή στρώση.

Βήμα 17: Κόψτε ακρυλικό

Κόψτε το ακρυλικό
Κόψτε το ακρυλικό
Κόψτε το ακρυλικό
Κόψτε το ακρυλικό
Κόψτε το ακρυλικό
Κόψτε το ακρυλικό
Κόψτε το ακρυλικό
Κόψτε το ακρυλικό

Κόψτε το ακρυλικό σε τετράγωνο διαστάσεων 30 x 30 ίντσες και σημειώστε το κέντρο. Συνδέστε το ακρυλικό με ταινία διπλής όψης. Χρησιμοποιώντας ένα κομμάτι ροής δρομολογητή, αφαιρέστε την περίσσεια ακρυλικού

Βήμα 18: Εφαρμογή απόχρωσης παραθύρου

Εφαρμογή απόχρωσης παραθύρου
Εφαρμογή απόχρωσης παραθύρου
Εφαρμογή απόχρωσης παραθύρου
Εφαρμογή απόχρωσης παραθύρου
Εφαρμογή απόχρωσης παραθύρου
Εφαρμογή απόχρωσης παραθύρου

Σε περιβάλλον χωρίς σκόνη, αφαιρέστε την προστατευτική μεμβράνη από το ακρυλικό. Εφαρμόστε σπρέι και αφαιρέστε το υπόστρωμα από τη χροιά του παραθύρου. Εφαρμόστε την κολλώδη απόχρωση του παραθύρου προς τα κάτω. Χρησιμοποιώντας ένα σφουγγάρι ή πιστωτική κάρτα, πιέστε όλο το υγρό κάτω από τη χροιά του παραθύρου. Μόλις αφαιρεθούν όλες οι φυσαλίδες και οι ρυτίδες, κόψτε την περίσσεια απόχρωσης παραθύρου χρησιμοποιώντας ένα κοφτερό μαχαίρι.

Βήμα 19: Επισύναψη αποστραγγιστή

Συνδέστε τον αποχυμωτή
Συνδέστε τον αποχυμωτή
Συνδέστε τον αποχυμωτή
Συνδέστε τον αποχυμωτή

Χρησιμοποίησα ένα μεγάλο κομμάτι κρεοπωλείου για να λειτουργήσω ως αποστάκτης. Απλώστε το χαρτί σε μια επίπεδη επιφάνεια. Καλύψτε το πρόσωπο του πλαισίου με κόλλα από ένα ραβδί κόλλας. Πριν στεγνώσει η κόλλα, βάλτε το μπροστινό μέρος του ρολογιού με την όψη προς τα κάτω στο χαρτί και κόψτε τραχιά την περίσσεια. Μόλις στεγνώσει, χρησιμοποιήστε ένα κοφτερό μαχαίρι για να το καθαρίσετε.

Βήμα 20: Εφαρμογή μόνωσης

Εφαρμόστε Μόνωση
Εφαρμόστε Μόνωση

Χρησιμοποίησα ηλεκτρική ταινία για να κρατήσω τις γραμμές τροφοδοσίας και δεδομένων ξεχωριστές.

Βήμα 21: Συναρμολόγηση

Συγκεντρώνουν
Συγκεντρώνουν
Συγκεντρώνουν
Συγκεντρώνουν
Συγκεντρώνουν
Συγκεντρώνουν

Αφαιρέστε το άλλο προστατευτικό στρώμα από το ακρυλικό. Τοποθετήστε το ακρυλικό μέσα στο δαχτυλίδι με την απόχρωση του παραθύρου προς τα πάνω. Σύρετε το υπόλοιπο του ρολογιού στον δακτύλιο. Χρησιμοποιήστε ένα σφιγκτήρα για να ασκήσετε ελαφριά πίεση ενώ ανοίγετε μια τρύπα μέσω του δακτυλίου και στην πλακέτα LED. Αυτό πρέπει να είναι περίπου 1 1/8 ίντσες από το πίσω μέρος. Προσοχή μην τρυπήσετε σε LED. Βιδώστε μια βίδα με επικεφαλής στην τρύπα. Επαναλάβετε για συνολικά οκτώ βίδες περιμετρικά του ρολογιού.

Βήμα 22: Επισυνάψτε σημεία αγκύρωσης

Επισυνάψτε σημεία αγκύρωσης
Επισυνάψτε σημεία αγκύρωσης

Κολλήστε σημεία αγκύρωσης στο πίσω μέρος του ρολογιού για να κολλήσει το πίσω κάλυμμα. Αυτά έχουν πάχος 3/4 ίντσες και μήκος περίπου 2 ίντσες.

Βήμα 23: Τρύπες τροφοδοσίας και αισθητήρες LDR

Τρύπες τροφοδοσίας και αισθητήρες LDR
Τρύπες τροφοδοσίας και αισθητήρες LDR

Ανοίξτε μια τρύπα τροφοδοσίας στο κάτω μέρος του ρολογιού για το φις τροφοδοσίας και μια τρύπα στο επάνω μέρος για τον αισθητήρα αντίστασης (LDR) που εξαρτάται από το φως.

Βήμα 24: Εγκαταστήστε το Electronics Holder

Εγκαταστήστε το Electronics Holder
Εγκαταστήστε το Electronics Holder
Εγκαταστήστε το Electronics Holder
Εγκαταστήστε το Electronics Holder

Εγκαταστήστε τη θήκη εκτύπωσης 3D για το RTC και το Arduino Nano. Συνδέστε όλα τα ηλεκτρονικά όπως φαίνεται στο σχήμα.

Βήμα 25: Πίσω εξώφυλλο

Πίσω κάλυμμα
Πίσω κάλυμμα
Πίσω κάλυμμα
Πίσω κάλυμμα
Πίσω κάλυμμα
Πίσω κάλυμμα
Πίσω κάλυμμα
Πίσω κάλυμμα

Κόψτε ένα πίσω κάλυμμα από λεπτό κόντρα πλακέ ακριβώς μικρότερο από το εξωτερικό του ρολογιού. Τρυπήστε τρύπες στα σημεία αγκύρωσης. Βρείτε το κέντρο της πλάτης και μετρήστε 8 ίντσες προς οποιαδήποτε κατεύθυνση για να κόψετε κλειδαρότρυπες (πρότυπο 16 στα κέντρα για στηρίγματα στις ΗΠΑ). Διάτρησα την κύρια τρύπα λίγο μεγαλύτερη από την κεφαλή των βιδών που πρόκειται να χρησιμοποιήσω και έβαλα την τρύπα μεγαλύτερη προς μία κατεύθυνση. Βάψτε μαύρο και στερεώστε το κάλυμμα στη θέση του.

Βήμα 26: Κώδικας και αρχεία

Και πάλι, είμαι αρκετά νέος στη χρήση πολλών από τις βιβλιοθήκες Arduino που χρησιμοποιούνται εδώ, οπότε είμαι βέβαιος ότι υπάρχουν καλύτεροι τρόποι χρήσης τους.

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

Έχω προσθέσει μερικά κινούμενα σχέδια που παίζουν κατά την εκκίνηση καθώς και την ώρα. Είναι sudo τυχαία με βάση τη γεννήτρια τυχαίων αριθμών που έχει στο σκάφος.

Μπορείτε να ρυθμίσετε το ρολόι να κυκλώνει τα χρώματα ή να παραμένετε στατικά σε ένα. Μπορείτε ακόμη να επισημάνετε το δείκτη για να βοηθήσετε την ώρα ανάγνωσης όπως φαίνεται στην εισαγωγή.

Μη διστάσετε να επεξεργαστείτε και να αλλάξετε τον κώδικα όπως θέλετε.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; boolean timeChange = false; boolean printTime = false; // Ορίστε σε true αν θέλετε να δείτε έξοδο στην κονσόλα. Χρήσιμο για τον εντοπισμό σφαλμάτων. boolean redDown = true; boolean greenDown = false; boolean blueDown = false; boolean cycle = false? // Ορίστε true αν θέλετε τα χρώματα του ρολογιού να κάνουν κύκλο boolean highlight = true; // Ορίστε true για να επισημάνετε το «τελευταίο ψηφίο». // Τοποθεσίες της έναρξης και του τέλους κάθε ομάδας χρονικού διαστήματος int SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // Πολλαπλασιαστές που χρησιμοποιούνται για τη διάσπαση του χρόνου const MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Αλλάξτε αυτό για να επιταχύνετε ή να επιβραδύνετε την κίνηση κινούμενων σχεδίων const int CYCLE_SPEED = 1; // Αλλάξτε το ποσοστό εδώ για τον κύκλο αλλαγής χρώματος (πρέπει να είναι πάνω από 1) // Δηλώστε μεταβλητές int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int ώρα 1 = 0; int ώρα2 = 0; int λεπτό1 = 0; int λεπτό2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t φωτεινό = 255; int numberOfAnimations = 5; int τυχαία = 0; // Ορισμός χρωμάτων uint8_t κόκκινο = 0; uint8_t πράσινο = 0; uint8_t μπλε = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Ορίστε τη σειρά των led led CRGB [NUM_LEDS]. void setup () {Serial.begin (19200); FastLED.addLeds (led, NUM_LEDS); LEDS.setBrightness (φωτεινό) FastLED.clear (); rtc.begin (); // Αποσύνδεση γραμμής παρακάτω για να ρυθμίσετε την ώρα. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Έναρξη κίνησης κινούμενων σχεδίων (τυχαία); } void loop () {// Λήψη ώρας DateTime now = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = false; // Χρησιμοποιήστε αυτές τις ρυθμίσεις για μη αυτόματο χρόνο χωρίς RTC. Χρήσιμο για τον εντοπισμό σφαλμάτων // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Επαναφορά όλων των δυαδικών ψηφίων στο μηδέν για (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Black; } // Ρύθμιση ώρας // Ρύθμιση ώρας 1 ώρα1 = (τρέχουσα ώρα % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Αυτό θα μετρήσει τα συνολικά LED της μονάδας ώρας που θα ανάψουν για (int i = HOUR_1_START_LOCATION; i 0) // && ώρα1 <12) {για (int i = (HOUR_1_START_LOCATION + ώρα1 - 1); i> = (HOUR_1_START_LOCATION + ώρα1-LEDS_PER_HOUR_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Ρύθμιση ώρας 2 ώρες2 = (τρέχουσα ώρα / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Αυτό θα μετρήσει τα συνολικά LED της μονάδας ώρας που θα ανάψουν για (int i = HOUR_2_START_LOCATION; i 0) // && ώρα2 <8) {για (int i = (HOUR_2_START_LOCATION + ώρα2 - 1); i> = (HOUR_2_START_LOCATION + ώρα2-LEDS_PER_HOUR_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Ρύθμιση λεπτού // Ρύθμιση λεπτού 1 λεπτό1 = (τρέχονΛιτό % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Αυτό θα μετρήσει τα συνολικά LED της μονάδας ώρας για να ανάψουν (int i = MINUTE_1_START_LOCATION; i 0) // && minute1 <24) {for (int i = (MINUTE_1_START_LOCATION + minute1 - 1); i> = (MINUTE_1_START_LOCATION + λεπτό1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Ρύθμιση λεπτού 2 λεπτό2 = (τρέχον λεπτό / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Αυτό θα μετρήσει τα συνολικά LED της μονάδας ώρας για να ανάψουν (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {for (int i = (MINUTE_2_START_LOCATION + minute2 - 1); i> = (MINUTE_2_START_LOCATION + λεπτό2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Ορισμός δεύτερου εάν (currentSecond! = LastSecond) {timeChange = true; } // Ορισμός δευτερολέπτου 1 δευτερόλεπτο1 = currentSecond % MULTIPLIER_TWO; εάν (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (κόκκινο, πράσινο, μπλε)? } // Ορισμός δεύτερου 2 δευτερολέπτου2 = currentSecond / MULTIPLIER_TWO; για (int i = SECOND_2_START_LOCATION; i 0) // && second2 <29) {for (int i = (SECOND_2_START_LOCATION + second2 - 1); i> = (SECOND_2_START_LOCATION + second2 - 1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} lastSecond = currentSecond; // Μετρήστε τους κύκλους του προγράμματος και καλέστε τη συνάρτηση setColor για να αλλάξετε το χρώμα των LED που κάνουν τους κύκλους CYCLE_SPEED. εάν (cycleCount φωτεινό) // {// fadeValue = bright? //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Εκτύπωση τρέχουσας ώρας στην κονσόλα if (timeChange == true && printTime == true) {printToConsole (); }} // Λειτουργία κινούμενων σχεδίων προσθέστε κινούμενα σχέδια εδώ όπως θέλετε void animate (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (κόκκινο, πράσινο, μπλε). FastLED.show (); καθυστέρηση (START_UP_DELAY) } για (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; FastLED.show (); καθυστέρηση (START_UP_DELAY) }} else if (select == 1) {for (int i = 0; i <250; i ++) {int light = random (95); leds [φως] = CRGB (κόκκινο, πράσινο, μπλε); FastLED.show (); }} else if (επιλέξτε == 2) {leds [0] = CRGB (κόκκινο, πράσινο, μπλε); για (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION+i] = CRGB (κόκκινο, πράσινο, μπλε); εάν (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_START_LOCATION + i] = CRGB (κόκκινο, πράσινο, μπλε); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_START_LOCATION + i] = CRGB (κόκκινο, πράσινο, μπλε); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (κόκκινο, πράσινο, μπλε); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (κόκκινο, πράσινο, μπλε); } καθυστέρηση (34); FastLED.show (); }} else if (επιλέξτε == 3) {leds [0] = CRGB (κόκκινο, πράσινο, μπλε); για (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_END_LOCATION - i] = CRGB (κόκκινο, πράσινο, μπλε); εάν (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_END_LOCATION - i] = CRGB (κόκκινο, πράσινο, μπλε); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_END_LOCATION - i] = CRGB (κόκκινο, πράσινο, μπλε); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_END_LOCATION - i] = CRGB (κόκκινο, πράσινο, μπλε); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (κόκκινο, πράσινο,μπλε); } καθυστέρηση (34); FastLED.show (); }} else if (επιλέξτε == 4) {για (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); καθυστέρηση (200)? για (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (κόκκινο, πράσινο, μπλε); } FastLED.show (); καθυστέρηση (200)? για (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); καθυστέρηση (200)? για (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (κόκκινο, πράσινο, μπλε); } FastLED.show (); καθυστέρηση (200)? για (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); καθυστέρηση (200)? }} // Λειτουργία κύκλου χρώματος void setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; πράσινος--; εάν (πράσινο <= 0) {κόκκινο = 255; redDown = false? greenDown = true; }} else if (greenDown == true && blueDown == false) {green ++; μπλε--; εάν (μπλε <= 0) {πράσινο = 255; greenDown = false; blueDown = true; }} else if (blueDown == true && redDown == false) {blue ++; το κόκκινο--; εάν (κόκκινο <= 0) {μπλε = 255; blueDown = false; redDown = true; }}} else {red = 0; πράσινο = 0; μπλε = 255; }} // Εκτύπωση σε λειτουργία Serial Monitor void printToConsole () {Serial.print ("Current Time:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); για (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (leds ); if (i % 2 == 0) {Serial.print (""); }} Serial.println (""); για (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (leds ); εάν (((i - HOUR_1_START_LOCATION + 1) % 3) == 0) {Serial.print (""); }} Serial.println (""); για (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (leds ); εάν (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); για (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (leds ); εάν (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print (""); }} Serial.println (""); για (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (leds ); Serial.print (""); } Serial.println (""); Serial.println (leds [SECOND_1_LOCATION]); Serial.println (); για (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

Βήμα 27: Απολαύστε

Εικόνα
Εικόνα

Εν κατακλείδι, αυτό το ρολόι είναι υπέροχο να το παρακολουθήσετε και μόλις το πιάσετε, είναι σχετικά εύκολο να το διαβάσετε. Εάν κάνετε το δικό σας έργο ρολογιού, ενημερώστε με!

Συνιστάται: