Mündəricat:

Kətan Fiber Optik İşıqlar: 5 addım
Kətan Fiber Optik İşıqlar: 5 addım

Video: Kətan Fiber Optik İşıqlar: 5 addım

Video: Kətan Fiber Optik İşıqlar: 5 addım
Video: 20 товаров для автомобиля с Алиэкспресс, автотовары №35 2024, Iyul
Anonim
Image
Image
Kətan Çapında Fiber Optik İşıqlar
Kətan Çapında Fiber Optik İşıqlar

Bu layihə, standart bir kətan çapına bənzərsiz bir spin əlavə edir. 4 fərqli işıqlandırma rejimində proqramlaşdırdım, ancaq daha çoxunu əlavə edə bilərsiniz. Çərçivənin zədələnməsini minimuma endirmək üçün ayrı bir düyməyə sahib olmaq əvəzinə hər dəfə söndürüb yenidən açdığınız zaman rejim dəyişdirilir. Batareyalar 50+ saat istifadə etməli - tam əmin deyiləm, amma bir dostum üçün oxşar bir layihə hazırladım və 5 dəfə çox işıq istifadə etdi və tək bir batareyada 20+ saat davam etdi.

Materiallar

  • İşlənə bilən sahə ilə kətan çapı - https://www.easycanvasprints.com saytından mənim üçün sifariş verdim, çünki yaxşı qiymətləri və arxası açıq idi. Qalın 1.5 "çərçivə mükəmməl idi və mənə fiber optik telləri əymək üçün çox yer verdi. Əlavə olaraq, batareya paketi və mikrokontrolör və LED şeritləri üçün 3" 8 "işlək yer verən bir şəkil istəyərsiniz.
  • LED şerit işıqları - Ünvanlı WS2812 LED şeritlərindən istifadə etdim. Qorxma, FastLED və ya Neopixel kitabxanaları ilə istifadə etmək çox asandır! Hər hansı bir standart LED şeridindən də istifadə edə bilərsiniz, daha çox kabel olmadan hər bir işıq hissəsini ayrı -ayrılıqda idarə edə bilməyəcəksiniz.
  • Mikro nəzarətçi - Arduino Uno istifadə etdim, ancaq bu layihə üçün hər şeyi istifadə edə bilərsiniz.
  • Batareya paketi - bunu eBay -dan (Çindən) sifariş etdim və "6 x 1.5V AA 2A CELL Batareya Batareyaları Tutucusu" başlıqlı idi.
  • Fiber optik tellər - bir daha eBay -də Çindən sifariş verildi - "PMMA Plastik Fiber Optik Kabel Led İşıqlı DIY Dekor Grow" və ya "Ulduz Tavan İşıq Kiti üçün PMMA End Glow Fiber Optik Kabel". 1mm və 1.5mm ölçüləri istifadə etdim, əslində ondan daha kiçik istifadə etməyi məsləhət görürəm.
  • Açma/Kapama açarı - "SPDT Açma/Açma 2 Mövqe Miniatür Keçid Açarları"
  • Tel təşkil klipləri - Bunlar fiber optik telləri gözəl və səliqəli saxlamağa kömək edir.
  • Köpük lövhəsi, möhkəm nüvəli bağlayıcı tel, istilik büzücü borular

Alətlər

  • Dremel - açma/söndürmə düyməsini şəkil çərçivəsinə yerləşdirmək üçün istifadə olunur. Bu, bəlkə də bir qazma və çox böyük bir işlə edilə bilər, amma bunu məsləhət görmürəm.
  • Lehimləmə dəmiri - telləri LED şeridinə bağlamaq
  • İsti yapışqan tabancası - bu layihənin hər bir addımı
  • Böyük tikiş iynəsi - kətan və işıqlar üçün köpük lövhəsi vasitəsilə deşik açmaq üçün

Addım 1: Köpük lövhəsi, Batareya Paketi və Açma/söndürmə açarı

Köpük lövhəsi, batareya paketi və açma/söndürmə açarı
Köpük lövhəsi, batareya paketi və açma/söndürmə açarı
Köpük lövhəsi, batareya paketi və açma/söndürmə açarı
Köpük lövhəsi, batareya paketi və açma/söndürmə açarı

Başqa bir şeydən əvvəl, kətan çapının arxasına bir parça köpük taxtası yapışdırmalısınız. Bu bizə hər şeyi yapışdırmaq üçün gözəl bir möhkəm səth verir və fiber optik telləri yerində saxlamağa kömək edir. Bir köpük lövhəsini lazımi ölçüdə kəsmək və bir çox yerə isti yapışdırmaq üçün dəqiq bir bıçaq və ya qutu kəsici istifadə edin. Qara köpük lövhəsindən istifadə etməyi məsləhət görürəm ki, o qədər də işığın axmasına imkan verməsin.

Normal bir matkap ucuna bənzəyən, əslində materialı çıxarmaq üçün əla olan dremel bitindən istifadə etdim. Hər hansı bir dremel ilə gəlməli olan bitlərdən biridir. Dramelin üzərindəki hər hansı bir talaşdan qurtulmaq üçün bir banka sıxılmış hava istifadə edin.

Hər şeyi yerində isti yapışdırın. Batareyanın çox yaxşı bağlandığından əmin olun, çünki batareyanı daxil etmək/çıxarmaq üçün yaxşı güc tələb olunur və batareya tutucusunun heç yerə getməsini istəmirsiniz.

Addım 2: Mikrokontrolör və Dövrə

Mikro nəzarətçi və dövrə
Mikro nəzarətçi və dövrə
Mikro nəzarətçi və dövrə
Mikro nəzarətçi və dövrə
Mikro nəzarətçi və dövrə
Mikro nəzarətçi və dövrə

Güc açarını Arduino UNO -nun qarşısına qoydum ki, açarı dəyişəndə heç bir şey batareya paketindən güc istifadə etmir. Bu, layihə açılmadıqda batareyaların mümkün qədər uzun müddət dayanmasına kömək etməlidir. Arduino lövhələri güc idarəçiliyində çox pisdir - heç bir şey etməsələr də açıldıqda çox cərəyan istifadə edirlər.

Batareya paketinin müsbət ucunu mikrokontrolörün VIN-ə (gərginlik girişi) qoşun ki, gərginliyi lazım olan 5V-a endirmək üçün nəzarətçinin daxili gərginlik tənzimləyicisini istifadə etsin. Daha çox işıq yandırsaydıq, onlar üçün öz gərginlik tənzimləyicimizdən istifadə edə bilərik, amma UNO 5 LED -i idarə edə bilməlidir.

Siqnalı hamarlaşdırmaq üçün məlumat çıxışı ilə LED şeridi arasında bir rezistor istifadə etdim - rezistor olmadan piksellərin təsadüfi yanıb -sönməsini ala bilərsiniz. Rezistorun ölçüsünün heç bir əhəmiyyəti yoxdur, 50Ω ilə 400Ω arasında bir şey işləməlidir.

Addım 3: Fiber optik işıqlar

Image
Image
Fiber optik işıqlar
Fiber optik işıqlar
Fiber optik işıqlar
Fiber optik işıqlar

Bir az sınaq və səhvdən sonra, nəhayət, kətan vasitəsilə fiber optik lifləri almaq üçün yaxşı bir yol tapdım.

  1. Kətan və köpük lövhəsinin önündən bir deşik açmaq üçün ən böyük tikiş iynəsini istifadə edin. Əvvəldən istədiyiniz hər bir çuxuru vurmağı məsləhət görürəm ki, onu çevirin və kabel təşkilatı kliplərinizi hara yerləşdirə biləcəyinizi görün.
  2. Bir cüt iynəli kəlbətin götür və ucundan bir santimetrdən az olan fiber optik ipi tut
  3. Fiber optik ipi iynə ilə düzəltdiyiniz çuxurdan keçirin
  4. Müxtəlif plastik klipslər vasitəsilə ipi lazım olduğundan bir qədər uzun olduğu yerə aparın - sonra kəsəcəyik
  5. İsti yapışqan tabancanızı aşağı temperaturda (əgər belə bir seçim varsa) köpük lövhəsindən keçdiyi yerə fiber optik telin üzərinə bir damla isti yapışqan qoyun. Alternativ olaraq mavi yapışqan şeylərdən istifadə edə bilərsiniz. İsti yapışqan ipi bir az deformasiya edir, amma optik keyfiyyətlərlə çox qarışmır
  6. Tel kəsicilərdən istifadə edərək ipi kətandan bir qədər uzaqlaşdırın.

Prosesi sürətləndirmək üçün, isti yapışqan etmədən əvvəl bir çox lifləri ardıcıl olaraq vura bilərsiniz. Ümumiyyətlə öz yerlərində qalmalıdırlar.

Masanın üzərindəki fiber optik telləri qırmamaq və sıxmamaq üçün diqqətli olun - onlar qırılacaq və ipi çox qısa edərsə, kədərlənəcəksiniz və yenidən düzəltməlisiniz. Batareya paketini əks çəki olaraq istifadə edin ki, masanın üstündə şəkil çərçivəsi yarıdan az olsun.

Qara əvəzinə ağ köpük lövhəsi istifadə etdiyim üçün LED -lər yananda çoxlu işıq saçırdı. Düzəltmək üçün işıqlar və kətan arasında alüminium folqa yapışdırdım.

Hər bir fiber optik telini bir yerdə saxlamaq üçün istilik büzücü borulardan istifadə edin.

  1. Paket üçün ipləri təxminən eyni uzunluğa kəsin
  2. Bölməni istilik büzücü borulardan keçirin
  3. Büzmək üçün bir istilik silahı və ya lehimləmə dəmiri istifadə edin. Bir lehimləmə dəmiri istifadə edirsinizsə, dəmirin yan borusuna yüngülcə toxunmasına icazə verin və o kiçilsin. Boru əriməməlidir, çünki bir az istilik üçün hazırlanmışdır.

Nəhayət, paketin ucunu hər bir LED işığına bağlamaq üçün isti yapışqan istifadə etdim. Çox isti yapışqan istifadə etdim ki, liflər işıqda hər qırmızı/yaşıl/mavi dioddan işıq alsın - liflər işığa həqiqətən yaxın olduqda "ağ" rəngli (əslində qırmızı və yaşıl və mavi) sonra bəzi liflər ağ olmaq əvəzinə qırmızı, bəziləri isə yaşıl olacaq. Bunu yaymaq üçün bir kağız parçası və ya başqa bir şey istifadə edərək yaxşılaşdırıla bilər, amma isti yapışqan mənim üçün kifayət qədər yaxşı işləyirdi.

Addım 4: Proqramlaşdırma

Proqramlaşdırmada üç kitabxanadan istifadə etdim

FastLED - WS2812 LED şeridlərini (və bir çox digər ünvanlı LED şeridlərini) idarə etmək üçün əla kitabxana -

Arduino Düşük Güc - Bunun nə qədər gücə qənaət etdiyini bilmirəm, amma həyata keçirmək çox asandır və yalnız ağ işıqlar olan funksiyaya kiçik bir gücün qənaət edilməsinə kömək etməli və sonra sonsuza qədər gecikdirməlidir.

EEPROM - Layihənin hazırkı rejimini oxumaq/saxlamaq üçün istifadə olunur. Bu, layihəni hər dəfə söndürüb yenidən açanda rəng rejimini artırmağa imkan verir ki, bu da rejimi dəyişdirmək üçün ayrı bir düyməyə ehtiyac duymur. Arduino IDE -ni yüklədiyiniz zaman EEPROM kitabxanası quraşdırılır.

Başqasının qurduğu işıqların parıldaması üçün də eskizdən istifadə etdim. Təsadüfi olaraq bir pikseli əsas rəngdən ən yüksək rəngə qədər işıqlandırır və sonra geri çəkilir. https://gist.github.com/kriegsman/88954aae22b03a66… (FastLED kitabxanasından da istifadə edir)

Visual Studio üçün vMicro plaginindən də istifadə etdim - bu Arduino IDE -nin gücləndirilmiş versiyasıdır. Bir çox faydalı avtomatik tamamlama funksiyasına malikdir və kodunuzdakı problemləri tərtib etmədən vurğulayır. 15 dollara başa gəlir, ancaq birdən çox Arduino layihəsi hazırlayacaqsınızsa və buna görə sizi super güclü bir proqram olan Visual Studio haqqında öyrənməyə məcbur edəcək.

(Mən də.ino faylını əlavə edirəm, çünki Github Gist -in Instructable hostinqi fayldakı bir çox boş yerləri məhv edir)

FastLED kitabxanasından istifadə edərək bəzi WS2812B LED şerit işıqları üçün Arduino UNO -da 4 rəngli rejimdə işləyən Arduino kodu

#daxil edin
#daxil edin
#daxil edin
// FastLED qurulması
#defineNUM_LEDS4
#definePIN3 // LED şeridi üçün məlumat pin
CRGB ledləri [NUM_LEDS];
// Parıltı qurulması
#defineBASE_COLORCRGB (2, 2, 2) // Əsas fon rəngi
#definePEAK_COLORCRGB (255, 255, 255) // Ən yüksək rəng
// Parlaqlaşdıqca hər bir döngə ilə rəngi artırmaq üçün məbləğ:
#deDelta_COLOR_UPCRGB (4, 4, 4)
// Rəng azaldıqca hər bir döngə ilə azaldılması üçün məbləğ:
#deDelta_COLOR_DOWNCRGB (4, 4, 4)
// Hər pikselin parlaqlaşmağa başlama şansı.
// 1 və ya 2 = bir anda bir neçə işıqlandırıcı piksel.
// 10 = bir anda çox parlaq piksel.
#müəyyən etmək ŞANSI_TWINKLE2
{SteadyDim, GettingBrighter, GettingDimmerAgain} qeyd edin;
uint8_t PixelState [NUM_LEDS];
bayt runMode;
bayt globalBright = 150;
bayt globalDelay = 20; // Göz qırpmaq üçün gecikmə sürəti
bayt ünvanı = 35; // İşləmə rejimini saxlamaq üçün ünvan
voidsetup ()
{
FastLED.addLeds (ledlər, NUM_LEDS);
FastLED.setCorrection (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps (5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Çalışmaq üçün rejimi əldə edin
runMode = EEPROM.read (ünvan);
// İş rejimini 1 artırın
EEPROM.write (ünvan, runMode + 1);
}
boşluq ()
{
keçid (runMode)
{
// Qatı ağ
case1: fill_solid (ledlər, NUM_LEDS, CRGB:: Ağ);
FastLED.show ();
DelayForever ();
fasilə;
// Yavaş -yavaş yanıb -sönür
case2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
fasilə;
// Tez parıldayın
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
fasilə;
// Göy qurşağı
dava 4:
RunRainbow ();
fasilə;
// İndeks diapazon xaricində, onu 2 -yə qaytarın və sonra 1 -ci rejimi işə salın.
// Arduino yenidən başladıqda 2 -ci rejimdə işləyəcək, amma hələlik 1 -ci rejimdə işləyəcək
defolt:
EEPROM.write (ünvan, 2);
runMode = 1;
fasilə;
}
}
voidRunRainbow ()
{
bayt *c;
uint16_t i, j;
halbuki (doğru)
{
for (j = 0; j <256; j ++) {// təkərdəki bütün rənglərin 1 dövrü
üçün (i = 0; i <NUM_LEDS; i ++) {
c = Təkər (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
gecikmə (globalDelay);
}
}
}
bayt * Təkər (WheelPos baytı) {
statik bayt c [3];
əgər (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;
}
başqa {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
qayıt c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
halbuki (doğru)
{
üçün (uint16_t i = 0; i <NUM_LEDS; i ++) {
əgər (PixelState == SteadyDim) {
// bu piksel hazırda: SteadyDim
// buna görə təsadüfi olaraq daha parlaq olmağa başlamağı düşünürük
əgər (təsadüfi8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// bu piksel hazırda: GettingBrighter
// buna görə də ən yüksək rəngdədirsə, yenidən qaralmağa keçin
əgər (led > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
başqa {
// əks halda, onu parlaqlaşdırmağa davam edin:
led += DELTA_COLOR_UP;
}
}
başqa {// yenidən qaralmaq
// bu piksel hazırda: GettingDimmerAgain
// buna görə də əsas rəngə qayıdırsa, onu sabit tutqunlaşdırın
əgər (led <= BASE_COLOR) {
led = BASE_COLOR; // aşa bilsək, tam əsas rəngə sıfırlayın
PixelState = SteadyDim;
}
başqa {
// əks halda, sadəcə qaralmağa davam edin:
led -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
Memset (PixelState, ölçüsü (PixelState), SteadyDim); // bütün pikselləri SteadyDim -ə işə salın.
fill_solid (ledlər, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
halbuki (doğru)
{
gecikmə (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, bayt qırmızı, bayt yaşıl, mavi bayt) {
// FastLED
led [Piksel].r = qırmızı;
led [Piksel].g = yaşıl;
led [Piksel]. b = mavi;
}

GitHub tərəfindən ❤ ilə evlənən rawFiberOptic_ClemsonPic.inoya baxın

Addım 5: Son Məhsul

Son Məhsul
Son Məhsul
Son Məhsul
Son Məhsul
Son Məhsul
Son Məhsul

Ta-da! Ümid edirəm ki, bu Təlimat başqasına bənzər bir layihə etmək üçün ilham verir. Həqiqətən də bunu etmək çətin deyildi və heç kimin bunu etməməsinə və hələ bu barədə ətraflı təlimat yazmasına təəccübləndim.

Tövsiyə: