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

Ρολόι LED με νεοπίξελ: 4 βήματα (με εικόνες)
Ρολόι LED με νεοπίξελ: 4 βήματα (με εικόνες)

Βίντεο: Ρολόι LED με νεοπίξελ: 4 βήματα (με εικόνες)

Βίντεο: Ρολόι LED με νεοπίξελ: 4 βήματα (με εικόνες)
Βίντεο: Ρολόι Προτζέκτορας Led με Ήχους 2024, Ιούλιος
Anonim
Ρολόι LED που χρησιμοποιεί νεοπίξελ
Ρολόι LED που χρησιμοποιεί νεοπίξελ
Ρολόι LED που χρησιμοποιεί νεοπίξελ
Ρολόι LED που χρησιμοποιεί νεοπίξελ
Ρολόι LED που χρησιμοποιεί νεοπίξελ
Ρολόι LED που χρησιμοποιεί νεοπίξελ
Ρολόι LED που χρησιμοποιεί νεοπίξελ
Ρολόι LED που χρησιμοποιεί νεοπίξελ

Καλώς ορίσατε στο διδακτικό μου πώς να φτιάξετε ένα ρολόι LED χρησιμοποιώντας 60 Neopixels.

Θα βρείτε 3 συνημμένα PDF, ένα για τα τμήματα του ρολογιού, ένα άλλο για τη βάση και, τέλος, ένα πρότυπο που βοηθά στην κόλληση των τμημάτων μεταξύ τους.

Έτσι για να το ολοκληρώσετε θα χρειαστείτε τα παρακάτω

  • Το δαχτυλίδι των 60 νεοπρίσματος έρχεται σε 4 τέταρτα. αναζήτηση για "ws2812 ring 60" (.00 12.00)
  • Αναζήτηση RTC για "μονάδα DS3231" (50 2,50)
  • Arduino Nano (4 λίρες)
  • Κόντρα πλακέ 3mm/1/8 ".
  • κομμάτια σύρματος. ελπιζω να εχεις καποια τριγυρω?
  • Μονάδα τροφοδοσίας USB 5v. Ο τύπος που τα παιδιά σας θα έχουν καταστρέψει τη σύνδεση.

Παρακάτω είναι τα στοιχεία που τροφοδοτούνται από μπαταρία Lipo, αλλά μετά από δοκιμές, το ρολόι κατανάλωσε υπερβολική ισχύ, οπότε η μπαταρία έπεσε υπέρ ενός τροφοδοτικού USB.

  • αναζήτηση μετατροπέα dc-dc "boost converter" (£ 3)
  • Κύκλωμα φόρτισης αναζήτησης TP4056 "tp4056" (£ 2)
  • Μονό κύτταρο LiPo 1000Mah. αναζήτηση για "1000mah lipo 3.7" "" 503450 lipo "(00 8,00)

Ο αριθμός LiPo είναι 503450 και θα ήταν ωραίο να γνωρίζουμε ότι αυτό σημαίνει μήκος 50mm 34mm πλάτος και 5.0 βάθος.

Βήμα 1: Τα ξύλινα κομμάτια

Τα ξύλινα κομμάτια
Τα ξύλινα κομμάτια
Τα ξύλινα κομμάτια
Τα ξύλινα κομμάτια
Τα ξύλινα κομμάτια
Τα ξύλινα κομμάτια

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

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

Οι οπές στα μπροστινά τμήματα επιτρέπουν τη συγκόλληση των συνδέσμων στα τέταρτα. Το κάτω τμήμα επιτρέπει τη διέλευση των καλωδίων.

Η σειρά εικόνων δείχνει επίσης πώς συνδυάζεται η βάση.

Βήμα 2: Καλωδίωση του δακτυλίου LED

Καλωδίωση του δακτυλίου LED
Καλωδίωση του δακτυλίου LED
Καλωδίωση του δακτυλίου LED
Καλωδίωση του δακτυλίου LED
Καλωδίωση του δακτυλίου LED
Καλωδίωση του δακτυλίου LED
Καλωδίωση του δακτυλίου LED
Καλωδίωση του δακτυλίου LED

Δεν υπάρχουν πολλά να πούμε για αυτό το βήμα, αλλά σε περίπτωση που δεν έχετε χρησιμοποιήσει μια λωρίδα WS2812LED είναι έξυπνα, έτσι ώστε το καθένα να έχει δεδομένα μέσα και έξω. Στα τόξα των 15 LED, το PCB χειρίζεται όλες τις συνδέσεις, αλλά όταν έρχεστε για να ενώσετε τα τμήματα πρέπει να κάνετε τις συνδέσεις τροφοδοσίας και τα δεδομένα. Δεν μπορείτε να κάνετε λάθος τις συνδέσεις επειδή βρίσκονται σε έναν κύκλο, ωστόσο όταν τελειώσετε τον κύκλο θα πρέπει να έχετε έναν σύνδεσμο που λείπει στα δεδομένα IN/OUT για να σας επιτρέψει να συνδέσετε τα καλώδια στα δεδομένα IN. Εκεί που τα καλώδια συνδέονται με τα δεδομένα IN θα είναι η πρώτη λυχνία LED ή όπως έχει σωστά αριθμηθεί ΜΗΔΕΝ.

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

Βήμα 3: Καλωδίωση του Arduino Nano και Power

Καλωδίωση του Arduino Nano και του Power
Καλωδίωση του Arduino Nano και του Power
Καλωδίωση του Arduino Nano και του Power
Καλωδίωση του Arduino Nano και του Power
Καλωδίωση του Arduino Nano και του Power
Καλωδίωση του Arduino Nano και του Power

Αρχικά αποφάσισα να χρησιμοποιήσω ένα LiPo σε αυτό το έργο, αλλά όταν το δοκίμασα η μπαταρία άδειασε όλη τη νύχτα. Στην αρχή σκέφτηκα ότι η μπαταρία μπορεί να είχε εκφορτιστεί, οπότε μέτρησα το ρεύμα και ανακάλυψα ότι το κύκλωμα τραβούσε 73mA που σημαίνει ότι στην μπαταρία θα ήταν περισσότερο. Στην πραγματικότητα μέτρησα το ρεύμα στην μπαταρία (πριν από τον μετατροπέα ώθησης) και ανακάλυψα ότι ήταν πάνω από 110mA. Έτσι ήταν προφανές ότι αυτό το ρολόι δεν επρόκειτο να λειτουργήσει με μπαταρία.

Επομένως, επιλέγω να χρησιμοποιήσω φορτιστή USB 5V. Έχω την τάση να έχω πολλούς νεκρούς φορτιστές USB λόγω των κακομεταχείρων από δύο μικρά παιδιά.

Επειδή λοιπόν χρησιμοποιούμε LED WS2812, έχουμε μόνο 3 συνδέσεις με το Arduino Nano.

  • Εξουσία
  • Εδαφος
  • Δεδομένα IN. Πορτοκαλί σε D2 στο Nano

Στη συνέχεια έχουμε το RTC αυτό έχει μόνο 4 καλώδια.

  • Ισχύς 5 Volt
  • Εδαφος
  • SCL (I2C Clock) Μπλε σε A5 στο Nano
  • SDA (Δεδομένα I2C) Κίτρινο έως Α4 στο Nano

Τέλος, χρειαζόμαστε ενέργεια και αυτό πηγαίνει στον ακροδέκτη ισχύος 5 V στο Nano.. το Vin έχει σχεδιαστεί για να έχει τάση μεγαλύτερη από 5 βολτ (δηλαδή 7-12 Volts) και τη γείωση.

Βήμα 4: Το πρόγραμμα

Μου αρέσει πολύ ο προγραμματισμός, απλά δεν είμαι πολύ καλός σε αυτό.

Πρόβλημα 1

Τα δευτερόλεπτα και τα λεπτά παρουσιάζονται σωστά ως αριθμός από 0-59. Ωστόσο, το πρώτο LED και ως εκ τούτου το μηδέν βρίσκεται στο κάτω μέρος. Αυτό λοιπόν έπρεπε να διορθωθεί.

void correctPos (int A)

{if (A 30) {A = A - 31; }} temp = A; }

Πρόβλημα 2

Προσπάθησα να καθαρίσω όλα τα LED πριν εμφανίσω τη νέα θέση, ωστόσο αυτό έκανε τα LED να αναβοσβήνουν. Έτσι αποφάσισα να ενεργοποιήσω το επόμενο LED και μετά να απενεργοποιήσω το προηγούμενο. Αυτό λειτούργησε μια χαρά;; ΟΧΙ γιατί αν η νέα θέση ήταν μηδενική θα προσπαθούσε να απενεργοποιηθεί -1. έτσι αντιμετωπίστηκε ταυτόχρονα.

void deleteΠροηγούμενο (int B)

// διαγράψτε το προηγούμενο led, αν ήταν μηδέν τότε // απενεργοποιήστε το 59 άλλο αφαιρέστε 1 // και απενεργοποιήστε αυτό. {if (B == 0) {strip.setPixelColor (59, 0, 0, 0); // All off} else {strip.setPixelColor (B - 1, 0, 0, 0); // all off}}

Πρόβλημα 3

Κάνοντας τα παραπάνω λειτούργησε πολύ καλά μέχρι που η νέα δεύτερη θέση ήταν στη θέση του παλιού λεπτού. Αυτό σήμαινε ότι το λεπτό που ενημερώθηκε μετά τα δευτερόλεπτα το απενεργοποίησε! Το ίδιο και για την ώρα/λεπτό

εάν (δευτ. == λεπτά-1)

{strip.setPixelColor (λεπτά-1, 0, 30, 0); }

Πρόβλημα 4

Τα πράγματα έχουν αρχίσει να φαίνονται καλά, ας ανακατέψουμε τα χρώματα όταν πέσουν στην ίδια θέση;

εάν (λεπτά == δευτερόλεπτα)

{strip.setPixelColor (λεπτά, 15, 13, 0); // πράσινο και κόκκινο για να γίνει κίτρινο. }

Πρόβλημα 5

Οι ώρες ξεκινούν ως μορφή 24 ωρών. έτσι πρέπει πρώτα να διορθωθεί

αν (ώρες> 12)

{ώρες = ώρες -12; }

Πρόβλημα 6

Και μην ξεχνάμε ότι υπάρχουν 24 ώρες την ημέρα και έχω 60 LED. Πραγματικά εύκολα το χρονομετρηθεί κατά 5

ώρες = ώρες * 5;

Πρόβλημα 7

Έχοντας κάνει τα παραπάνω έχουμε τώρα την ώρα που πηδά 4 LED θα φαινόταν πολύ καλύτερα αν χρησιμοποιούσε όλα τα LED και έδειχνε σωστά κλάσματα της ώρας; Και πάλι αυτό ήταν μια εύκολη διόρθωση μόλις πρόσθεσα τον αρχικό αριθμό λεπτών διαιρούμενο με 12 στις ώρες.

ώρες = ώρες + (addMin/12)

Πρόβλημα 8

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

ώρες = αν (λεπτά == 0)

{if (secs == 59) {strip.setPixelColor (59, 0, 30, 0); // green}} if (ώρες == 0) {if (secs == 59) {strip.setPixelColor (59, 0, 30, 0); // πράσινο}}

Πρόβλημα 9

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

// 12 Απριλίου 2020 στις 11:20 μμ θα καλέσετε:

//rtc.adjust(DateTime(2020, 4, 12, 23, 20, 0));

Συνιστάται: