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

Φώτα οπτικών ινών σε καμβά εκτύπωσης: 5 βήματα
Φώτα οπτικών ινών σε καμβά εκτύπωσης: 5 βήματα

Βίντεο: Φώτα οπτικών ινών σε καμβά εκτύπωσης: 5 βήματα

Βίντεο: Φώτα οπτικών ινών σε καμβά εκτύπωσης: 5 βήματα
Βίντεο: Part 02 - Moby Dick Audiobook by Herman Melville (Chs 010-025) 2024, Ιούλιος
Anonim
Image
Image
Φώτα οπτικών ινών σε καμβά εκτύπωσης
Φώτα οπτικών ινών σε καμβά εκτύπωσης

Αυτό το έργο προσθέτει μια μοναδική περιστροφή σε μια τυπική εκτύπωση καμβά. Έχω προγραμματίσει σε 4 διαφορετικές λειτουργίες φωτισμού, αλλά μπορείτε εύκολα να προσθέσετε περισσότερες. Η λειτουργία αλλάζει κάθε φορά που την απενεργοποιείτε και την ενεργοποιείτε ξανά αντί να έχετε ξεχωριστό κουμπί για να ελαχιστοποιήσετε τη ζημιά στο πλαίσιο. Οι μπαταρίες πρέπει να διαρκούν για 50+ ώρες χρήσης - δεν είμαι σίγουρος, αλλά έκανα ένα παρόμοιο έργο για έναν φίλο και χρησιμοποίησε 5 φορές περισσότερα φώτα και διήρκεσε 20+ ώρες σε ένα μόνο σετ μπαταριών.

Υλικά

  • Καμβά εκτύπωσης με λειτουργικό χώρο - παρήγγειλα το δικό μου από το https://www.easycanvasprints.com επειδή είχαν καλές τιμές και ανοιχτή πλάτη. Το παχύτερο πλαίσιο 1,5 "ήταν τέλειο και μου έδωσε πολύ χώρο για να λυγίσω τα σκέλη των οπτικών ινών. Επιπρόσθετα, θέλετε μια εικόνα που να σας δίνει χώρο εργασίας 3" επί 8 "για τη μπαταρία και τον μικροελεγκτή και τις λωρίδες LED
  • Φώτα λωρίδας LED - χρησιμοποίησα λωρίδες LED WS2812 με δυνατότητα διεύθυνσης. Μην τρομάζετε, είναι πραγματικά εύκολο στη χρήση με τις βιβλιοθήκες FastLED ή Neopixel! Θα μπορούσατε επίσης να χρησιμοποιήσετε οποιαδήποτε τυπική λωρίδα LED, απλώς δεν θα μπορείτε να ελέγχετε κάθε τμήμα φωτισμού ξεχωριστά χωρίς πολύ περισσότερη καλωδίωση.
  • Μικροελεγκτής - Χρησιμοποίησα ένα Arduino Uno, αλλά μπορείτε να χρησιμοποιήσετε σχεδόν οτιδήποτε για αυτό το έργο.
  • Μπαταρία - το παρήγγειλα από το eBay (από την Κίνα) και είχε τίτλο "6 x 1.5V AA 2A CELL Battery Battery Battery"
  • Κλωστές οπτικών ινών - για άλλη μια φορά, παραγγελίες από την Κίνα στο eBay - "PMMA Plastic Fiber Optic Cable End Grow Led Light DIY Decor" ή "PMMA End Glow Fiber Optic Cable for Star Ceiling Light Kit". Χρησιμοποίησα μεγέθη 1mm και 1.5mm, συνιστώ στην πραγματικότητα τη χρήση μικρότερων από αυτό.
  • Διακόπτης On/Off - "SPDT On/On 2 Position Miniature Toggle Switches"
  • Κλιπ οργάνωσης καλωδίων - Αυτά βοηθούν να διατηρούνται τα σκέλη των οπτικών ινών ωραία και τακτοποιημένα.
  • Πίνακας αφρού, καλώδιο σύνδεσης συμπαγούς πυρήνα, σωλήνες συρρίκνωσης θερμότητας

Εργαλεία

  • Dremel - χρησιμοποιείται για την τοποθέτηση του διακόπτη on/off στο πλαίσιο εικόνας. Αυτό θα μπορούσε ίσως να επιτευχθεί με ένα τρυπάνι και ένα πολύ μεγάλο κομμάτι, αλλά δεν το συνιστώ αυτό.
  • Συγκολλητικό σίδερο - σύνδεση καλωδίων στη λωρίδα LED
  • Πυροβόλο θερμής κόλλας - κυριολεκτικά κάθε βήμα αυτού του έργου
  • Μεγάλη βελόνα ραψίματος - για τρύπες στον καμβά και αφρώδη σανίδα για τα φώτα

Βήμα 1: Πίνακας αφρού, πακέτο μπαταρίας και διακόπτης ενεργοποίησης/απενεργοποίησης

Πίνακας αφρού, μπαταρία και διακόπτης ενεργοποίησης/απενεργοποίησης
Πίνακας αφρού, μπαταρία και διακόπτης ενεργοποίησης/απενεργοποίησης
Πίνακας αφρού, μπαταρία και διακόπτης ενεργοποίησης/απενεργοποίησης
Πίνακας αφρού, μπαταρία και διακόπτης ενεργοποίησης/απενεργοποίησης

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

Χρησιμοποίησα το κομμάτι dremel που μοιάζει με ένα συνηθισμένο τρυπάνι αλλά είναι πραγματικά εξαιρετικό για την αφαίρεση υλικού. Είναι ένα από τα κομμάτια που πρέπει να έρθει με οποιοδήποτε dremel. Χρησιμοποιήστε ένα δοχείο πεπιεσμένου αέρα για να απαλλαγείτε από κάθε πριονίδι από το dremel.

Κόλλα κόλλας όλα στη θέση τους. Βεβαιωθείτε ότι η μπαταρία είναι πολύ καλά προσαρτημένη γιατί απαιτεί αρκετή δύναμη για να τοποθετήσετε/αφαιρέσετε μια μπαταρία και δεν θέλετε η βάση της μπαταρίας να πάει πουθενά.

Βήμα 2: Μικροελεγκτής και κύκλωμα

Μικροελεγκτής και κύκλωμα
Μικροελεγκτής και κύκλωμα
Μικροελεγκτής και κύκλωμα
Μικροελεγκτής και κύκλωμα
Μικροελεγκτής και κύκλωμα
Μικροελεγκτής και κύκλωμα

Έβαλα το διακόπτη τροφοδοσίας πριν από το Arduino UNO, έτσι ώστε όταν αλλάζετε τον διακόπτη, τότε τίποτα δεν χρησιμοποιεί ενέργεια από τις μπαταρίες. Αυτό θα βοηθήσει τις μπαταρίες να διαρκέσουν όσο το δυνατόν περισσότερο όταν το έργο δεν είναι ενεργοποιημένο. Οι πίνακες Arduino είναι διαβόητα κακοί στη διαχείριση ισχύος - χρησιμοποιούν πολύ ρεύμα αν είναι ενεργοποιημένοι ακόμα και αν δεν κάνουν τίποτα ενεργά.

Συνδέστε το θετικό άκρο της μπαταρίας στο VIN (είσοδος τάσης) του μικροελεγκτή, έτσι ώστε να χρησιμοποιεί τον ενσωματωμένο ρυθμιστή τάσης του ελεγκτή για να μειώσει την τάση στα 5V που χρειάζεται. Εάν τροφοδοτούσαμε περισσότερα φώτα, ίσως χρειαζόταν να χρησιμοποιήσουμε τον δικό μας ρυθμιστή τάσης, αλλά ο UNO θα πρέπει να μπορεί να χειριστεί 5 LED.

Χρησιμοποίησα μια αντίσταση μεταξύ της εξόδου δεδομένων και της λωρίδας LED για να εξομαλύνω το σήμα - χωρίς την αντίσταση μπορεί να αναβοσβήνει τυχαία εικονοστοιχεία. Το μέγεθος της αντίστασης δεν έχει πραγματικά σημασία, οτιδήποτε μεταξύ 50Ω και 400Ω θα πρέπει να λειτουργεί.

Βήμα 3: Φώτα οπτικών ινών

Image
Image
Φώτα οπτικών ινών
Φώτα οπτικών ινών
Φώτα οπτικών ινών
Φώτα οπτικών ινών

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

  1. Χρησιμοποιήστε τη μεγαλύτερη βελόνα ραψίματος που έχετε για να ανοίξετε μια τρύπα στο μπροστινό μέρος του καμβά και της σανίδας αφρού. Σας συνιστώ να ανοίξετε κάθε τρύπα που θέλετε στην αρχή, ώστε να μπορείτε να την αναποδογυρίσετε και να δείτε πού μπορείτε/δεν μπορείτε να βάλετε τα κλιπ οργάνωσης καλωδίων σας
  2. Πάρτε μια πένσα με μύτη βελόνας και πιάστε το σκέλος της οπτικής ίνας σε απόσταση μικρότερη από ένα εκατοστό από το τέλος
  3. Περάστε το σκέλος της οπτικής ίνας μέσα από την τρύπα που κάνατε με μια βελόνα
  4. Δρομολογήστε το σκέλος μέσω διαφόρων πλαστικών συνδετήρων εκεί που είναι ελαφρώς μεγαλύτερο από όσο χρειάζεται - θα το κόψουμε αργότερα
  5. Με το πιστόλι ζεστής κόλλας στη ρύθμιση ΧΑΜΗΛΗΣ θερμοκρασίας (αν έχει αυτήν την επιλογή) βάλτε μια σταγόνα θερμής κόλλας στο σκέλος των οπτικών ινών όπου περνάει μέσα από την σανίδα αφρού. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε αυτό το μπλε κολλώδες υλικό. Η θερμή κόλλα παραμορφώνει λίγο το σκέλος, αλλά δεν φαίνεται να μπερδεύεται πολύ με τις οπτικές ιδιότητες
  6. Κόψτε το σκέλος λίγο μακριά από τον καμβά χρησιμοποιώντας κοπτικά σύρματος.

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

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

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

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

  1. Κόψτε τα σκέλη για τη δέσμη στο ίδιο περίπου μήκος
  2. Τοποθετήστε το τμήμα μέσω σωλήνων θερμοσυρρίκνωσης
  3. Χρησιμοποιήστε πιστόλι θερμότητας ή συγκολλητικό σίδερο για να το συρρικνώσετε. Εάν χρησιμοποιείτε συγκολλητικό σίδερο, αφήστε την πλευρά του σιδήρου να αγγίξει ελαφρά τη σωλήνωση και θα συρρικνωθεί. Δεν πρέπει να λιώνει τη σωλήνωση επειδή έχει σχεδιαστεί για λίγη θερμότητα.

Τελικά χρησιμοποίησα θερμή κόλλα για να στερεώσω το άκρο της δέσμης σε κάθε φως LED. Χρησιμοποίησα πολύ θερμή κόλλα έτσι ώστε οι ίνες να έχουν φως από κάθε κόκκινη/πράσινη/μπλε δίοδο στο φως - όταν οι ίνες είναι πραγματικά κοντά στο φως, ένα "λευκό" χρώμα (το οποίο είναι στην πραγματικότητα κόκκινο και πράσινο και μπλε) τότε μερικές ίνες θα είναι απλώς κόκκινες και μερικές θα είναι πράσινες, αντί να είναι όλες άσπρες. Αυτό θα μπορούσε να βελτιωθεί χρησιμοποιώντας ένα κομμάτι χαρτί ή κάτι άλλο για να το διαδώσει, αλλά η ζεστή κόλλα λειτούργησε αρκετά καλά για μένα.

Βήμα 4: Προγραμματισμός

Κατά τον προγραμματισμό αυτό χρησιμοποίησα τρεις βιβλιοθήκες

FastLED - μια εξαιρετική βιβλιοθήκη για τον έλεγχο των λωρίδων LED WS2812 (και πολλών άλλων λωρίδων LED με δυνατότητα διεύθυνσης) -

Arduino Low Power - Δεν ξέρω πόση ενέργεια εξοικονομεί αυτό, αλλά ήταν εξαιρετικά εύκολο να εφαρμοστεί και θα πρέπει να σας βοηθήσει να εξοικονομήσετε λίγη ενέργεια στη λειτουργία που είναι μόνο τα λευκά φώτα και στη συνέχεια να καθυστερήσει για πάντα.

EEPROM - Χρησιμοποιείται για ανάγνωση/αποθήκευση της τρέχουσας λειτουργίας του έργου. Αυτό επιτρέπει στο έργο να αυξάνει τη λειτουργία χρώματος κάθε φορά που την απενεργοποιείτε και την ενεργοποιείτε ξανά, πράγμα που εξαλείφει την ανάγκη ενός ξεχωριστού κουμπιού για την αλλαγή της λειτουργίας. Η βιβλιοθήκη EEPROM εγκαθίσταται κάθε φορά που εγκαθιστάτε το Arduino IDE.

Χρησιμοποίησα επίσης ένα σκίτσο για να αναβοσβήνω τα φώτα που έστησε κάποιος άλλος. Ανάβει τυχαία ένα εικονοστοιχείο από ένα βασικό χρώμα σε ένα χρώμα κορυφής και στη συνέχεια υποχωρεί. https://gist.github.com/kriegsman/88954aae22b03a66… (χρησιμοποιεί επίσης τη βιβλιοθήκη FastLED)

Χρησιμοποίησα επίσης το πρόσθετο vMicro για το Visual Studio - αυτή είναι μια ενισχυμένη έκδοση του Arduino IDE. Έχει έναν τόνο χρήσιμων λειτουργιών αυτόματης συμπλήρωσης και επισημαίνει προβλήματα στον κώδικά σας χωρίς να χρειάζεται να τον μεταγλωττίσετε. Κοστίζει 15 $, αλλά αξίζει τον κόπο εάν πρόκειται να κάνετε περισσότερα από ένα έργα Arduino και θα σας αναγκάσει να μάθετε για το Visual Studio, το οποίο είναι ένα εξαιρετικά ισχυρό πρόγραμμα.

(Επισυνάπτω επίσης τον κώδικα.ino αρχείο επειδή το Instructable hosting ενός Github Gist καταστρέφει πολλά κενά στο αρχείο)

Ο κώδικας Arduino εκτελεί 4 έγχρωμες λειτουργίες σε Arduino UNO για μερικά φώτα λωρίδας LED WS2812B χρησιμοποιώντας τη βιβλιοθήκη FastLED

#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
// Ρύθμιση FastLED
#defineNUM_LEDS4
#definePIN3 // Καρφίτσα δεδομένων για λωρίδα LED
CRGB led [NUM_LEDS].
// Ρύθμιση Twinkle
#defineBASE_COLORCRGB (2, 2, 2) // Βάση χρώματος φόντου
#definePEAK_COLORCRGB (255, 255, 255) // Peak color για να αναβοσβήνει έως
// Ποσό για να αυξήσετε το χρώμα κατά κάθε βρόχο καθώς γίνεται πιο φωτεινό:
#defineDELTA_COLOR_UPCRGB (4, 4, 4)
// Ποσότητα για μείωση του χρώματος κατά κάθε βρόχο καθώς γίνεται πιο αμυδρό:
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Η πιθανότητα κάθε pixel να αρχίζει να φωτίζεται.
// 1 ή 2 = μερικά εικονοστοιχεία φωτεινότητας κάθε φορά.
// 10 = πολλά εικονοστοιχεία φωτίζονται κάθε φορά.
#defineCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
byte runMode;
byte globalBright = 150;
byte globalDelay = 20; // Ταχύτητα καθυστέρησης για αναλαμπές
byte διεύθυνση = 35; // Διεύθυνση για αποθήκευση της λειτουργίας εκτέλεσης
voidsetup ()
{
FastLED.addLeds (led, NUM_LEDS);
FastLED.setCorrection (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Αποκτήστε τη λειτουργία για εκτέλεση
runMode = EEPROM.read (διεύθυνση);
// Αυξήστε τη λειτουργία κατά 1
EEPROM.write (διεύθυνση, runMode + 1);
}
voidloop ()
{
διακόπτης (runMode)
{
// Στερεό λευκό
case1: fill_solid (leds, NUM_LEDS, CRGB:: White);
FastLED.show ();
DelayForever ();
Διακοπή;
// Λάμψε κάπως αργά
θήκη2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
Διακοπή;
// Λάμψε γρήγορα
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
Διακοπή;
//ΟΥΡΑΝΙΟ ΤΟΞΟ
περίπτωση 4:
RunRainbow ();
Διακοπή;
// Ευρετήριο εκτός εμβέλειας, επαναφέρετε το στο 2 και, στη συνέχεια, εκτελέστε τη λειτουργία 1.
// Όταν επανεκκινήσει το arduino θα εκτελέσει τη λειτουργία 2, αλλά προς το παρόν τρέχει τη λειτουργία 1
Προκαθορισμένο:
EEPROM.write (διεύθυνση, 2);
runMode = 1;
Διακοπή;
}
}
voidRunRainbow ()
{
byte *c;
uint16_t i, j;
ενώ (αλήθεια)
{
για (j = 0; j <256; j ++) {// 1 κύκλος όλων των χρωμάτων στον τροχό
για (i = 0; i <NUM_LEDS; i ++) {
c = Τροχός (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
καθυστέρηση (globalDelay)?
}
}
}
byte * Wheel (byte WheelPos) {
στατικό byte c [3];
αν (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
}
elseif (WheelPos <170) {
WheelPos -= 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
}
αλλιώς {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
επιστροφή c?
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
ενώ (αλήθεια)
{
για (uint16_t i = 0; i <NUM_LEDS; i ++) {
εάν (PixelState == SteadyDim) {
// αυτά τα εικονοστοιχεία είναι προς το παρόν: SteadyDim
// έτσι σκεφτόμαστε τυχαία να αρχίσει να γίνεται πιο φωτεινό
if (random8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// αυτά τα εικονοστοιχεία είναι προς το παρόν: GettingBrighter
// οπότε αν είναι στο μέγιστο χρώμα, αλλάξτε το να γίνει πιο αμυδρό
εάν (leds > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
αλλιώς {
// διαφορετικά, απλά συνεχίστε να το φωτίζετε:
leds += DELTA_COLOR_UP;
}
}
else {// γίνεται πιο σκοτεινό ξανά
// αυτά τα εικονοστοιχεία είναι προς το παρόν: GettingDimmerAgain
// οπότε αν επιστρέψει στο βασικό χρώμα, μεταβείτε στο σταθερό αμυδρό
εάν (leds <= BASE_COLOR) {
leds = BASE_COLOR; // επαναφορά στο ακριβές βασικό χρώμα, σε περίπτωση υπέρβασης
PixelState = SteadyDim;
}
αλλιώς {
// αλλιώς, απλώς μείωσε το:
leds -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // προετοιμάστε όλα τα εικονοστοιχεία στο SteadyDim.
fill_solid (leds, NUM_LEDS, BASE_COLOR)?
}
voidDelayForever ()
{
ενώ (αλήθεια)
{
καθυστέρηση (100)?
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, κόκκινο byte, πράσινο byte, μπλε byte) {
// FastLED
leds [Pixel].r = κόκκινο;
leds [Pixel].g = πράσινο;
leds [Pixel].b = μπλε;
}

προβολή rawFiberOptic_ClemsonPic.ino που φιλοξενείται με ❤ από το GitHub

Βήμα 5: Τελικό προϊόν

Τελικό προϊόν
Τελικό προϊόν
Τελικό προϊόν
Τελικό προϊόν
Τελικό προϊόν
Τελικό προϊόν

Τα-ντα! Ελπίζω ότι αυτό το Instructable εμπνέει κάποιον άλλο να κάνει το δικό του παρόμοιο έργο. Πραγματικά δεν ήταν δύσκολο να το κάνω και ήμουν έκπληκτος που κανείς δεν το είχε κάνει και δεν έγραψε ακόμη ένα λεπτομερή οδηγό για αυτό.

Συνιστάται: