Πίνακας περιεχομένων:
- Βήμα 1: Σχήματα και υλικό
- Βήμα 2: Κάνοντας το PCB να φιλοξενεί τα LED
- Βήμα 3: Φτιάχνοντας το κουτί
- Βήμα 4: Προετοιμασία της γραβάτας
- Βήμα 5: Κολλήστε τα Fiberoptics
- Βήμα 6: Βάζοντας Fiberoptics Through the Tie
- Βήμα 7: Κολλήστε τα Fiberoptics στη γραβάτα
- Βήμα 8: Ο κώδικας
- Βήμα 9: Τελικό προϊόν
Βίντεο: Starry Sky Led Tie: 9 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Πριν από λίγο καιρό βρήκα ένα παιδικό παιχνίδι με οπτικές ίνες σε ένα κατάστημα δολαρίων και άρχισα να σκέφτομαι τι θα μπορούσα να κάνω με αυτό.
Μία από τις τρελές ιδέες που είχα, ήταν να κάνω μια γραβάτα με την επίδραση ενός έναστρου ουρανού.
Είχα ακόμα arduino pro mini, σανίδες adafruit και μπαταρίες που θα ταιριάζουν πιθανώς σε αυτό το έργο.
Μόλις λοιπόν βρήκα μια ωραία φαρδιά γραβάτα σε ένα ενεχυροδανειστήριο στην πόλη μου και βρήκα ένα κουτί που θα μπορούσε να ταιριάζει στο υλικό, αποφάσισα να το πάω και να προσπαθήσω να το φτιάξω.
Αυτό το διδακτικό σας δείχνει πώς το έφτιαξα.
Λειτουργεί με φορτιστή arduino pro mini, adafruit powerboost 500, φορτηγό emmerich icr 18650nh-sp και 5 λευκά LED. Ο κώδικας καθιστά την αλλαγή φωτεινότητας της λυχνίας LED τυχαία. (Τα πρώτα 40 δευτερόλεπτα του βίντεο είναι 3x ταχύτητα)
Βήμα 1: Σχήματα και υλικό
Χρησιμοποιώ το ακόλουθο υλικό:
- PCB με LED λευκού πάγου και αντιστάσεις 220 Ohm.
-Arduino pro mini (χρησιμοποίησα knockoff)
-Φορτιστής Adafruit Powerboost 500
-Emmerich Li-ion accu ICR-18650NH-SP
- Οπτικές ίνες (σε διαφορετικά μεγέθη)
Βήμα 2: Κάνοντας το PCB να φιλοξενεί τα LED
Έκοψα μια λωρίδα από ένα PCB για να συγκρατήσω τα LED και χρησιμοποίησα τις καρφίτσες LED για να το κολλήσω στο κύριο PCB.
Συνδέθηκε όλες οι κάθοδοι (-) με το GND και χρησιμοποίησε τις μισές ακίδες για να το κολλήσει κολλημένο στο κύριο PCB.
Συνδέθηκε όλες οι άνοδοι (+) με αντιστάσεις και με καλώδια στο arduino.
Κάθε LED πρέπει να είναι συνδεδεμένο σε μία από τις ακόλουθες θύρες PWM: 3, 5, 6, 9, 10, 11
Ο ανόητος με έκανε πολλά λάθη με αυτό το έργο και ξέχασα να ελέγξω τις σωστές θύρες PWM, οπότε έπρεπε να μεταπωλήσω μερικά αργότερα. Δοκιμασμένο με υψηλό/χαμηλό, έτσι το παρατήρησα μόνο αργότερα.
Ξεκίνησα με 7 LED, αλλά υπήρχαν μόνο 6 θύρες PWM και ένα από τα LED που μεταπωλήθηκε πέθανε. Απλώς κράτησα τα 5 LED που λειτουργούν και δεν χρησιμοποιώ το 6ο.
Βήμα 3: Φτιάχνοντας το κουτί
Χρησιμοποίησα ένα Bosch GRO (σαν Dremel) και ένα τρυπάνι για να κόψω το σχήμα της μπαταρίας, το κουμπί, τη θύρα micro-usb, τις κεφαλίδες από το Arduino και τις οπτικές ίνες. (χρησιμοποιήστε μάσκα σκόνης!)
Κόλλησε την μπαταρία στη θήκη με 2 ζώνες.
Χρησιμοποιήθηκαν βίδες για την τοποθέτηση της πλακέτας Adafruit και του PCB.
Η τριβή από το άνοιγμα και το κλείσιμο υπέστη ζημιά σε ορισμένα καλώδια. Έπρεπε να τα ξανακολλήσω και να χρησιμοποιήσω κόλλα για να μην ξανασυμβεί.
Βήμα 4: Προετοιμασία της γραβάτας
Αφαίρεσε τις ραφές από το κάτω μέρος της γραβάτας για να ταιριάζει στο λαστιχένιο φύλλο.
Για να αποκρύψω το υλικό και να έχω ακόμα πρόσβαση σε αυτό, αν χρειαστεί, αποφάσισα να χρησιμοποιήσω ένα φερμουάρ.
Δεν είμαι καλός με μια ραπτομηχανή, οπότε η γλυκιά μου μαμά έβαλε ένα φερμουάρ στο πίσω μέρος της γραβάτας.
Αφού έγινε αυτό, κόλλησα το λαστιχένιο φύλλο στη γραβάτα. Φοβόμουν να χρησιμοποιήσω πάρα πολύ κόλλα που θα κορεσμούσε το ύφασμα και θα ήταν ορατό από μπροστά, γι 'αυτό προσπάθησα να το ισοπεδώσω και να μην το χρησιμοποιήσω πολύ. Συνολικά φαίνεται καλό, αλλά σε μερικά σημεία παρατήρησα πάρα πολύ ή πολύ λίγη κόλλα, γιατί ήρθε μέσα από το ύφασμα ή δεν κόλλησε πολύ καλά το ύφασμα. Ευτυχώς αυτό είναι ελάχιστα ορατό από κοντινή απόσταση σε έντονο φως.
Το κουτί και η γραβάτα έχουν τελειώσει. Timeρα να κολλήσετε τα φυτικά οπτικά!
Βήμα 5: Κολλήστε τα Fiberoptics
Το παιχνίδι είχε ένα μεγάλο καλώδιο οπτικών ινών δέσμης που διασπάστηκε εύκολα. Προσπάθησα να τα κολλήσω ένα ένα στην αρχή, αλλά σύντομα παρατήρησα ότι θα ήταν καλύτερα να φτιάξω μικρές δέσμες και να τις κολλήσω αμέσως στο LED. Αυτό θα διευκολύνει τη διατήρησή του μέχρι να στεγνώσει η κόλλα. Μπέρδεψε το πρώτο LED που το κατάλαβε.
Χρησιμοποιήστε οπωσδήποτε διαφανή κόλλα! Αυτό που χρησιμοποίησα στέγνωσε πολύ αργά και η κόλλα ταχείας ξήρανσης που δοκίμασα στο πρώτο LED έγινε άσπρο, κάνοντας μερικές ίνες από το πρώτο LED λιγότερο φωτεινές.
Κόλλησα μικρά μαύρα λαστιχένια φύλλα για να αποφύγω τη διαρροή φωτός από πάνω και να διαχωρίσω τα LED.
Ένα από τα φύλλα εμπόδισε το κλείσιμο της θήκης, οπότε πρόσθεσα μια λαστιχένια ταινία για να κρατήσω το κάλυμμα κλειστό.
Βήμα 6: Βάζοντας Fiberoptics Through the Tie
Ξεκινώντας από το κάτω μέρος, τσίμπησα τρύπες με μια βελόνα και έβαλα τις ίνες μία προς μία. Οι ίνες κάθε LED απλώνονται τυχαία σε όλη τη γραβάτα.
Κόλλησα μια μαύρη λωρίδα στο πίσω μέρος που έπρεπε να φτάσει μέχρι το μικρότερο μέρος της γραβάτας για να κρατήσει το βάρος του κουτιού, αλλά αφού έβαλα όλα τα καλώδια και ένιωσα την ένταση των καλωδίων αποφάσισα να κολλήσω όλα για τη γραβάτα ήταν καλύτερη ιδέα και έκοψαν τη λωρίδα.
Δεδομένου ότι τα καλώδια οπτικών ινών από το παιχνίδι ήταν τόσο κοντά, ήταν δύσκολο να τα τοποθετήσουμε σε όλη τη γραβάτα. Περιορίστηκα στη θέση του κουτιού και δυσκολεύτηκα να τα κάνω όλα όσο πιο επίπεδα ήθελα.
Βήμα 7: Κολλήστε τα Fiberoptics στη γραβάτα
Κόλλησα όλα τα καλώδια οπτικών ινών στο λαστιχένιο φύλλο για να αποτρέψω την αφαίρεση των καλωδίων από το λαστιχένιο φύλλο και για να γίνει η γραβάτα επίπεδη.
Για να βεβαιωθώ ότι δεν κόλλησα τον σφιγκτήρα στη γραβάτα όταν ασκούσα πίεση, έβαλα λίγο χαρτί στο μεταξύ. Δεν φαίνεται τόσο υπέροχο αλλά λειτουργεί καλά. Και δεν το βλέπεις όταν είναι κλειστό.
Αφού στεγνώσει η κόλλα, έκοψα τα καλώδια στο μπροστινό μέρος και έκοψα λίγο το λαστιχένιο φύλλο ακριβώς πάνω από το υψηλότερο σύρμα, γιατί η γραβάτα ήταν λίγο πολύ μεγάλη.
Οι φωτογραφίες με το λευκό πουκάμισο γίνονται πριν κόψω το τελευταίο κομμάτι καουτσούκ.
Βήμα 8: Ο κώδικας
Κάτω από τον κωδικό που έγραψα για τη γραβάτα.
Όλες οι λυχνίες LED έχουν ένα "μέσο όρο" (όχι στην πραγματικότητα μέσο όρο αλλά μεσαία φωτεινότητα).
Μόλις φτάσει σε αυτόν τον μέσο όρο, θα αποφασίσει με πιθανότητα 3/4 να πάει σε χαμηλότερη φωτεινότητα. Ορίζει επίσης τυχαία μια νέα ελάχιστη φωτεινότητα, μέγιστη φωτεινότητα, χρόνο αναμονής για ελάχιστη και μέγιστη φωτεινότητα και την ταχύτητα που αυξάνει ή μειώνει κάθε γύρο (1-255) από 5 προκαθορισμένες τιμές. Στη συνέχεια, θα κάνει έναν κύκλο μέχρι να φτάσει ξανά στο μέσο όρο. Μόνο 2 LED μπορούν να είναι σε υψηλό κύκλο ταυτόχρονα.
Κάθε κατάσταση αντιπροσωπεύεται από μια ακέραιη τιμή (1-7) που καθορίζει εάν πηγαίνει κατά μέσο όρο χαμηλό, χαμηλό μέσο όρο, χαμηλή αναμονή, ενημέρωση κ.λπ.
Για πληροφορίες σχετικά με τη μεταφόρτωση κώδικα στο arduino, ρίξτε μια ματιά στο www.arduino.cc
/ * Starry Sky Tie * * Αυτό είναι ένα σενάριο για να ξεθωριάζει τυχαία 5 LED από μέσο όρο σε χαμηλότερο * ή υψηλότερη φωτεινότητα με τυχαίες χαμηλότερες, υψηλότερες και χρονικές ρυθμίσεις * για να μοιάζει με έναν έναστρο ουρανό όταν χρησιμοποιείται με οπτικές ίνες. * Σε αυτή την περίπτωση αυτά θα εφαρμοστούν ισόπαλα. * * Πάνω/κάτω πιθανότητα = 1/4 πάνω, 3/4 κάτω, με μέγιστο 2 * να ανεβαίνει στο μέγιστο ταυτόχρονα. * * Ο μέσος όρος παραμένει ο ίδιος. * Οι ελάχιστες, μέγιστες και χρονικές επιλογές αλλάζουν τυχαία * από 5 επιλογές κάθε φορά που ένα LED φτάνει ξανά στο μέσο όρο. * * Δημιουργήθηκε από τον Billy Jaspers, Μάιος 2019. *
/ Δηλώστε καρφίτσες
int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;
// Μεταβλητές χρόνου
ανυπόγραφο μακρύ currentTime; ανυπόγραφη μεγάλη αναμονήTime [5]; ανυπόγραφο long lastRound;
// Μεταβλητές LED
int brightMin [5] = {10, 10, 10, 10, 10}; // Ελάχιστη φωτεινότητα int brightAvg [5] = {200, 200, 200, 200, 200}; // Μέση φωτεινότητα int brightMax [5] = {240, 240, 240, 240, 240}; // Μέγιστη φωτεινότητα int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Χρόνος αναμονής int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Χρόνος αναμονής int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Χρόνος αναμονής int προσαύξηση [5] = {2, 5, 4, 5, 2}; // Αύξηση φωτεινότητας int currentBright [5] = {200, 230, 210, 210, 235}; // Τρέχουσα φωτεινότητα
// Μεταβλητές LED Δυνατότητες
int brightMinPos [5] = {5, 20, 40, 5, 20}; // Ελάχιστες δυνατότητες φωτεινότητας int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Μέγιστες δυνατότητες φωτεινότητας int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Χρόνος αναμονής σε δυνατότητες χαμηλής φωτεινότητας int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Χρόνος αναμονής σε δυνατότητες υψηλής φωτεινότητας int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Χρόνος αναμονής στις μέσες δυνατότητες φωτεινότητας int incrementPos [5] = {2, 4, 5, 3, 1}; // αύξηση των δυνατοτήτων φωτεινότητας
// Μεταβλητές
bool startup = true? // Πρέπει να ξεκινήσουν οι ρυθμίσεις έναρξης;
// Μεταβλητές κατεύθυνσης
/* 0 = Αναμονή κατά μέσο όρο 1 = μέσος όρος χαμηλός 2 = αναμονή χαμηλός 3 = μετάβαση χαμηλός σε μέσος όρος 4 = μετάβαση μέγ. Σε μέγ. 5 = αναμονή στο μέγιστο 6 = μετάβαση σε υψηλό σε μέσο όρο 7 = ενημέρωση μεταβλητών*/ int κατάστασηLED [5] = {0, 0, 0, 0, 0}; int ποσόHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // Περιμένει το Led;
// Τυχαίες μεταβλητές
long randomNumber? // Long για αποθήκευση τυχαίου αριθμού long randomNumberTwo; // Παρατεταμένη αποθήκευση του δεύτερου τυχαίου αριθμού
// μετρητές
int i = 0; // Μετρητής για τον κύριο βρόχο
void setup () {
Serial.begin (115200); // Έναρξη σειριακού randomSeed (analogRead (A0)); // Ορίστε τυχαίο σπόρο
// Δήλωση εξόδων
pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }
// Γράψτε δεδομένα σε LED
void writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }
// Κύριος βρόχος
void loop () {if (εκκίνηση) {// Ρυθμίσεις εκκίνησης lastRound = millis (); // Ορισμός lastRound για εκκίνηση writeToLED (); // Γράψτε δεδομένα έναρξης σε εκκίνηση LED = false; // Απενεργοποίηση εκκίνησης} currentTime = millis (); // Ρυθμίστε την τρέχουσα ώρα
if (currentTime - lastRound> = refreshRate) {
για (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Update Led randomNumber = random (5); brightMin = brightMinPos [randomNumber]; // Ορίστε τυχαία τιμή για ελάχιστη φωτεινότητα randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Ορίστε τυχαία τιμή για μέγιστη φωτεινότητα randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Ορίστε τυχαία τιμή για χαμηλό χρόνο αναμονής randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Ορίστε τυχαία τιμή για υψηλό χρόνο αναμονής randomNumber = random (5); timeWaitAvg = timeAvgPos [τυχαίος αριθμός]; // Ορίστε τυχαία τιμή για τον μέσο χρόνο αναμονής randomNumber = random (5); προσαύξηση = incrementPos [τυχαίος αριθμός]; // Ορίστε τυχαία τιμή για τιμή αύξησης randomNumber = random (2); // Ορίστε τυχαία τιμή για την κατεύθυνση randomNumberTwo = τυχαία (2); // Ορίστε τυχαία τιμή για την κατεύθυνση εάν (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Εάν στο χαμηλότερο σημείο: Μεταβείτε στο Μέσο αναμονής} άλλο {currentBright = currentBright +προσαύξηση ; // Άλλο: Υψηλότερη φωτεινότητα}} αλλιώς εάν (κατάστασηLED == 2) {// -2- Χαμηλή αναμονή εάν (! StatusWaiting ) {// Εάν δεν περιμένετε: αναμονήTime = millis () ? // Ορισμός χρόνου αναμονής statusWaiting = true; // Ξεκινήστε να περιμένετε} αλλιώς εάν (statusWaiting && currentTime-waitTime > = timeWaitLow ) {// Εάν η αναμονή ΚΑΙ ο χρόνος WaitAvg έχει παρέλθει: statusWaiting = false; // Σταματήστε την κατάσταση αναμονήςLED = 3; // Ορισμός statusLed σε Αναμονή για ενημέρωση}} αλλιώς αν (statusLED == 1) {// -1- Μετάβαση σε χαμηλό εάν (currentBright <= brightMin ) {statusLED = 2; // Εάν στο χαμηλότερο σημείο: Μεταβείτε στο Waiting Low} άλλο {currentBright = currentBright -αύξηση ; // Άλλο: Χαμηλότερη φωτεινότητα}} αλλιώς αν (κατάστασηLED == 6) {// -6- Μετάβαση μέγ. Μέσου όρου εάν (currentBright = timeWaitMax ) {// Εάν περιμένει ΚΑΙ έχει περάσει η ώραWaitAvg: statusWaiting = false; // Σταματήστε την κατάσταση αναμονήςLED = 6; // Ορισμός statusLed σε Αναμονή για ενημέρωση}} αλλιώς αν (statusLED == 4) {// -4- Μετάβαση μέσου όρου στο μέγιστο εάν (currentBright > = brightMax ) {statusLED = 5; // Εάν στο χαμηλότερο σημείο: Μεταβείτε στο Waiting High} else {currentBright = currentBright +προσαύξηση ; // Άλλο: Υψηλότερη φωτεινότητα}} αλλιώς αν (statusLED == 0) {// -0- Αναμονή κατά μέσο όρο εάν (! StatusWaiting ) {// Εάν δεν περιμένετε: αναμονήTime = millis (); // Ορισμός χρόνου αναμονής statusWaiting = true; // Ξεκινήστε να περιμένετε} αλλιώς εάν (statusWaiting && currentTime-waitTime > = timeWaitAvg ) {// Εάν η αναμονή ΚΑΙ ο χρόνοςWaitAvg έχει παρέλθει: statusWaiting = false; // Σταματήστε την κατάσταση αναμονήςLED = 7; // Ορισμός statusLed σε Αναμονή για ενημέρωση}}} i = 0; lastRound = millis (); // Ορίστε όταν τελειώσει ο τελευταίος γύρος. writeToLED (); // Γράψτε όλα τα δεδομένα στις λυχνίες LED}}
Βήμα 9: Τελικό προϊόν
Νομίζω ότι λειτούργησε καλά. Η γραβάτα δεν είναι πολύ παχιά, άκαμπτη, μακριά ή βαριά και το εφέ αστεριού φαίνεται εκπληκτικό.
Συνιστάται:
Grid Tie Inverter: 10 βήματα (με εικόνες)
Grid Tie Inverter: Αυτό είναι ένα σαρκώδες έργο, αγκιστρώστε! Οι μετατροπείς γραβάτας δικτύου σάς επιτρέπουν να σπρώχνετε ρεύμα σε μια πρίζα, η οποία είναι μια φοβερή ικανότητα. Θεωρώ ενδιαφέροντα τα ηλεκτρονικά ισχύος και τα συστήματα ελέγχου που εμπλέκονται στο σχεδιασμό τους, οπότε έφτιαξα το δικό μου. Αυτή η έκθεση είναι
Tie Time Keeper: 6 βήματα (με εικόνες)
Tie Time Keeper: Είναι σημαντικό να μπορείς να λες την ώρα, αλλά δεν αρέσει σε όλους να φορούν ρολόι και το να παίρνουμε το smartphone μας για να ελέγξουμε την ώρα φαίνεται λίγο περιττό. Μου αρέσει να κρατάω τα χέρια μου χωρίς δαχτυλίδια, βραχιόλια και ρολόγια όταν λειτουργώ σε έναν επαγγελματία
Sonic Bow Tie, του David Boldevin Engen: 4 βήματα (με εικόνες)
Sonic Bow Tie, από τον David Boldevin Engen: Ένα συμπαγές παπιγιόν, ικανό να εμφανίζει συνεχώς τον περιβάλλοντα ήχο σε τέσσερις διαφορετικές συχνότητες στις δύο καθρέφτες συστοιχίες LED 4x5. Αυτό το σεμινάριο θα μάθει πώς να φτιάξετε ένα παπιγιόν που θα σας κάνει να ξεχωρίσετε σε οποιοδήποτε πλήθος. Αυτό που θα κάνεις
The Holi-Tie: 8 βήματα (με εικόνες)
Το Holi-Tie: Αυτό είναι το Holi-Tie, μια γιορτινή γραβάτα που έχει σχεδιαστεί για να φοριέται κατά τη διάρκεια των διακοπών. Χαλαρά βασισμένο στο Ampli-Tie της Becky Stern που χρησιμοποιεί μια πλακέτα Flora, το Holi-Tie χρησιμοποιεί έναν μικροελεγκτή Circuit Python Express (CPX) για να οδηγήσει τις κινούμενες εικόνες NeoPixel
Starry Light: 8 βήματα
Starry Light: Σκοπεύω να δημιουργήσω δύο κομμάτια μικρού τετράγωνου καμβά εμπνευσμένα από τον διάσημο πίνακα του Vincent van Gogh Starry Night. Όταν πιέζεται το φεγγάρι, το φως στα αστέρια θα ανέβει, δίνοντας μια αίσθηση φωτισμού του ουρανού