Mündəricat:
- Addım 1: Şemalar və Avadanlıq
- Addım 2: LED -lərin yerləşdirilməsi üçün PCB hazırlanması
- Addım 3: Qutunun hazırlanması
- Addım 4: Qalstukun hazırlanması
- Addım 5: Fiberoptikləri yapışdırın
- Addım 6: Fiberoptikləri Qalstuka Yerləşdirmək
- Addım 7: Fiberoptikləri Qalstuka Yapışdırın
- Addım 8: Kod
- Addım 9: Son məhsul
Video: Ulduzlu Göy Led Kravat: 9 Adım (Şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bir müddət əvvəl bir dollar mağazasında fiberoptikası olan bir uşaq oyuncağı tapdım və onunla nə edə biləcəyimi düşünməyə başladım.
Aldığım dəli fikirlərdən biri də ulduzlu bir səmanın təsiri ilə qalstuk bağlamaq idi.
Hələ də ehtimal ki, bu layihəyə uyğun olacaq bir neçə arduino pro mini, adafruit lövhəsi və batareyaları var idi.
Beləliklə, şəhərimdəki bir lombardda gözəl bir geniş qalstuk tapdıqda və avadanlığa uyğun bir qutu tapan kimi, bunun üçün getməyə və onu tikməyə qərar verdim.
Bu təlimat sizə bunu necə etdiyimi göstərir.
Arduino pro mini, adafruit powerboost 500 şarj cihazı, emmerich icr 18650nh-sp və 5 ağ LED üzərində işləyir. Kod LED -in dəyişmə parlaqlığını təsadüfi edir. (Videonun ilk 40 saniyəsi 3x sürətlidir)
Addım 1: Şemalar və Avadanlıq
Aşağıdakı avadanlıqdan istifadə edirəm:
- Buzlu ağ LED və 220 Ohm rezistorlu PCB.
-Arduino pro mini (nokautdan istifadə etdim)
-Adafruit Powerboost 500 şarj cihazı
-Emmerich Li-ion Accu ICR-18650NH-SP
- Optik liflər (müxtəlif ölçülərdə)
Addım 2: LED -lərin yerləşdirilməsi üçün PCB hazırlanması
LEDləri tutmaq üçün bir PCB -dən bir zolaq kəsdim və əsas PCB -ə lehimləmək üçün LED pinlərindən istifadə etdim.
Bütün katotları (-) GND-yə bağladı və sancaqların yarısını əsas PCB-yə yapışdırmaq üçün istifadə etdi.
Bütün anodları (+) rezistorlara və kabellərlə arduinoya bağladı.
LED -lərin hər biri aşağıdakı PWM portlarından birinə bağlanmalıdır: 3, 5, 6, 9, 10, 11
Bu layihə ilə çox səhv etdim və düzgün PWM portlarını yoxlamağı unutdum, buna görə bir neçə sonra yenidən satmalı oldum. Yüksək/Aşağı ilə sınaqdan keçirildi, buna görə bunu yalnız sonra gördüm.
7 LED ilə başladım, ancaq 6 PWM portu var idi və yenidən satdığım LED -lərdən biri öldü. Mən yalnız 5 işləyən LED -i saxladım və 6 -cıdan istifadə etmirəm.
Addım 3: Qutunun hazırlanması
Batareyanın, düymənin, mikro usb portunun, Arduinonun başlıqlarının və optik liflərin şəklini kəsmək üçün bir Bosch GRO (Dremel kimi) və bir matkap istifadə etdim. (toz maskası istifadə edin!)
Batareyanı qutuya 2 bantla yapışdırıb.
Adafruit lövhəsini və PCB -ni montaj etmək üçün vintlər istifadə olunur.
Açılma və bağlanma sürtünməsi bəzi telləri zədələyir. Yenidən baş verməməsi üçün onları yenidən satıb yapışqan istifadə etməli oldum.
Addım 4: Qalstukun hazırlanması
Kauçuk təbəqəyə uyğun olması üçün qalstukun alt hissəsindəki dikişlər çıxarılmışdır.
Avadanlığı gizlətmək və lazım olduqda hələ də daxil ola bilmək üçün bir fermuar istifadə etməyə qərar verdim.
Bir tikiş maşını ilə yaxşı işləmirəm, buna görə şirin anam qalstukun arxasına bir fermuar taxdı.
Bunu etdikdən sonra qalstukdakı rezin təbəqəni yapışdırdım. Parçanı doyuracaq və öndən görünən çox yapışqan istifadə etməkdən qorxdum, buna görə də düzəltməyə və çox istifadə etməməyə çalışdım. Ümumiyyətlə yaxşı görünür, amma bəzi yerlərdə çox çox və ya çox az yapışqan gördüm, çünki parça içindən keçdi və ya parça çox yaxşı yapışmadı. Xoşbəxtlikdən, bu, parlaq işıqda yaxın məsafədən ancaq görünür.
Qutu və qalstuk artıq hazırdır. Fiberoptikləri yapışdırmağın vaxtı gəldi!
Addım 5: Fiberoptikləri yapışdırın
Oyuncağın asanlıqla parçalana bilən bir ədəd böyük fiber optik telləri vardı. Əvvəlcə onları bir -bir yapışdırmağa çalışdım, amma tezliklə kiçik paketlər düzəltməyin və onları bir anda LED -ə yapışdırmağın daha yaxşı olduğunu gördüm. Bu, yapışqan quruyana qədər sabit qalmağı asanlaşdıracaq. Bunu anlayan ilk LED -i qarışdırdı.
Şəffaf bir yapışqan istifadə etdiyinizə əmin olun! İstifadə etdiyim çox yavaş quruduldu və ilk LED -də sınadığım sürətli quruyan yapışqan ağa çevrildi və ilk LED -dən olan lifləri daha az parlaq etdi.
İşıq sızmasının qarşısını almaq və LED -ləri ayırmaq üçün kiçik qara rezin təbəqələr yapışdırdım.
Çarşaflardan biri çantanın bağlanmasını maneə törətdi, buna görə də qapağı bağlı saxlamaq üçün rezin bant əlavə etdim.
Addım 6: Fiberoptikləri Qalstuka Yerləşdirmək
Dibdən başlayaraq iynə ilə deliklər sıxdım və lifləri bir -bir keçirdim. Hər LED -in lifləri qalstuk boyunca təsadüfi yayılır.
Qutunun ağırlığını qorumaq üçün arxadan qara bir zolaq bağladım ki, qalstukun kiçik hissəsinə qədər gedim, amma bütün telləri açıb tellərin gərginliyini hiss etdikdən sonra yapışdırmağa qərar verdim. bağlamaq üçün hər şey daha yaxşı bir fikir idi və zolağı kəsdi.
Oyuncaqdakı fiber optik tellər çox qısa olduğundan onları bütün bağlamaya yerləşdirmək çətin idi. Qutunu yerləşdirməkdə məhdud idim və hər şeyi istədiyim qədər düz etməkdə çətinlik çəkdim.
Addım 7: Fiberoptikləri Qalstuka Yapışdırın
Tellərin rezin təbəqədən çıxarılmaması və qalstukun düz olması üçün bütün fiber optik telləri rezin təbəqəyə yapışdırdım.
Təzyiq edərkən bağlamanı bağlamadığımdan əmin olmaq üçün arasına bir az kağız qoydum. Çox yaxşı görünmür, amma yaxşı işləyir. Və bağlandıqda bunu görmürsən.
Yapışqan quruduqdan sonra ön tərəfdəki telləri kəsdim və ən yüksək telin üstündəki rezin təbəqəni bir az kəsdim, çünki bağlama çox uzun idi.
Ağ köynəkli fotoşəkillər, son rezini kəsməmişdən əvvəl hazırlanır.
Addım 8: Kod
Qalstuk üçün yazdığım kodun altında.
Bütün LED -lərdə müəyyən bir "orta" var (əslində orta deyil, orta parlaqlıq).
Bu ortalamaya çatan kimi, 3/4 şansla daha aşağı bir parlaqlığa keçməyə qərar verəcək. Eyni zamanda təsadüfi olaraq yeni minimum parlaqlığı, maksimum parlaqlığı, minimum və maksimum parlaqlığı gözləmə müddətini və hər bir dövrədə (1-255) 5 əvvəlcədən təyin edilmiş dəyərdən artan və ya azaldan sürəti təyin edir. Sonra yenidən ortalamaya çatana qədər bir dövr edəcək. Yalnız 2 LED eyni zamanda yüksək bir dövrədə ola bilər.
Hər əyalət, orta-aşağı, aşağı-orta, aşağı gözləmə, yeniləmə və s.
Kodun arduinoya yüklənməsi haqqında məlumat üçün www.arduino.cc saytına baxın
/ * Ulduzlu Göy Kravat * * Bu, 5 LED -in ortalamadan təsadüfi olaraq aşağıdan aşağıya * və ya daha yüksək parlaqlığın təsadüfi aşağı, daha yüksək və vaxt parametrləri ilə * solğunlaşması üçün bir skriptdir. * Bu halda bunlar bərabərliklə həyata keçiriləcək. * * Yuxarı/aşağı şans = 1/4 yuxarı, 3/4 aşağı, maksimum 2 * eyni anda maksimuma yüksəlir. * * Orta qiymət eyni olaraq qalır. * Minimum, maksimum və zamanlama variantları təsadüfi olaraq dəyişir * hər dəfə bir LED yenidən ortalamaya çatanda 5 variantdan. * * Billy Jaspers tərəfindən hazırlanmışdır, May 2019. *
/ Sancaqlar elan edin
int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;
// Zaman dəyişənləri
imzasız uzun cari zaman; imzasız uzun waitTime [5]; imzasız uzun lastRound;
// LED Dəyişənləri
int parlaqMin [5] = {10, 10, 10, 10, 10}; // Minimum parlaqlıq int brightAvg [5] = {200, 200, 200, 200, 200}; // Orta parlaqlıq int brightMax [5] = {240, 240, 240, 240, 240}; // Maksimum parlaqlıq int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Gözləmə müddəti int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Gözləmə müddəti int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Gözləmə müddəti int artım [5] = {2, 5, 4, 5, 2}; // Parlaqlıq artımı int currentBright [5] = {200, 230, 210, 210, 235}; // Cari parlaqlıq
// LED Dəyişənlərin İmkanları
int parlaqMinPos [5] = {5, 20, 40, 5, 20}; // Minimum parlaqlıq imkanları int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Maksimum parlaqlıq imkanları int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // int timeAvgPos yüksək parlaqlıq imkanları üzərində gözləmə müddəti [5] = {3000, 5000, 4000, 7000, 8000}; // Orta parlaqlıq imkanları gözləmə müddəti int incrementPos [5] = {2, 4, 5, 3, 1}; // parlaqlıq imkanlarının artması
// Dəyişənlər
bool başlanğıcı = doğru; // Başlanğıc parametrlərinə başlamaq lazımdırmı?
// İstiqamət dəyişənləri
/* 0 = Gözləmə Orta hesabla 1 = Ortadan Alçağa doğru gedir 2 = Gözləmə Düşük 3 = Aşağıdan Ortaya 4 gedir = Ortadan Maksiyə 5 -ə gedir = Maksimum 6 -da gözləyirəm = Avqdan 7 -ə qədər gedirik = Dəyişənlərin yenilənməsi*/ int statusLED [5] = {0, 0, 0, 0, 0}; int miqdarıHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {yalan, yalan, yalan, yalan, yalan}; // Led gözləyirmi?
// Təsadüfi dəyişənlər
uzun təsadüfi Sayı; // Uzun təsadüfi ədədləri saxlamaq üçün uzun randomNumberTwo; // İkinci təsadüfi nömrəni saxlamaq üçün uzun
// sayğaclar
int i = 0; // Əsas döngə üçün sayğac
boş quraşdırma () {
Serial.begin (115200); // Serial randomSeed -ə başlayın (analogRead (A0)); // Təsadüfi toxum seçin
// Çıxışları elan edin
pinMode (LED01, Çıxış); pinMode (LED02, Çıxış); pinMode (LED03, Çıxış); pinMode (LED04, Çıxış); pinMode (LED05, Çıxış); }
// LED -lərə məlumat yazın
void writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }
// Əsas döngə
void loop () {if (startup) {// Başlanğıc parametrləri lastRound = millis (); // bootRootToLED () üçün lastRound qurun; // LED başlanğıcına başlanğıc məlumatlarını yazın = yanlış; // Başlanğıcı söndürün} currentTime = millis (); // Cari vaxtı təyin edin
əgər (currentTime - lastRound> = refreshRate) {
for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Led randomNumber Güncelleme = təsadüfi (5); parlaqMin = parlaqMinPos [təsadüfiSayı]; // Minimum parlaqlıq üçün təsadüfi dəyər seçin randomNumber = təsadüfi (5); parlaqMax = parlaqMaxPos [təsadüfiSayı]; // Maksimum parlaqlıq üçün təsadüfi dəyər təyin randomNumber = təsadüfi (5); timeWaitLow = timeLowPos [randomNumber]; // Aşağı gözləmə müddəti üçün təsadüfi dəyər təyin edin randomNumber = təsadüfi (5); timeWaitMax = timeHighPos [randomNumber]; // Yüksək gözləmə müddəti üçün təsadüfi dəyər təyin edin randomNumber = təsadüfi (5); timeWaitAvg = timeAvgPos [randomNumber]; // Orta gözləmə müddəti üçün təsadüfi dəyər təyin edin randomNumber = təsadüfi (5); artım = artımPos [təsadüfiSayı]; // Artan dəyər üçün təsadüfi dəyər təyin edin randomNumber = təsadüfi (2); // randomNumberTwo = random (2) istiqaməti üçün təsadüfi dəyər təyin edin; // İstiqamət üçün təsadüfi dəyər təyin edin (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Ən aşağı nöqtədə olarsa: Gözləmə Ortasına gedin} başqa {currentBright = currentBright +artım ; // Başqa: Daha Yüksək Parlaqlıq}} başqa halda (statusLED == 2) {// -2- (! StatusWaiting ) olarsa Aşağı Gözləyin {// Gözləmirsinizsə: waitTime = milis (); // Gözləmə vaxtının vəziyyətini təyin edinWaiting = doğru; // gözləməyə başlayın} başqa halda (statusWaiting && currentTime-waitTime > = timeWaitLow ) {// Gözləmə VƏ vaxtWaitAvg keçibsə: statusWaiting = yalan; // Status gözləməyi dayandırınLED = 3; // StatusLed'i Yeniləməni Gözləyərkən}} başqa halda (statusLED == 1) {// -1- (cariBright <= parlaqMin ) {statusLED = olarsa, Ortala Düşür 2; // Ən aşağı nöqtədə olsanız: Aşağı Gözləyin} başqa {cariBright = currentBright artım ; // Başqa: Aşağı Parlaqlıq}} başqa halda (statusLED == 6) {// -6- Maksimumun Avg -a gedəcəyi halda (currentBright = timeWaitMax ) {// Gözləmə VƏ vaxtWaitAvg keçibsə: statusWaiting = yalan; // Status gözləməyi dayandırınLED = 6; // StatusLed'i Yeniləməni Gözləyərkən}} başqa halda təyin edin (statusLED == 4) {// -4- Əgər (currentBright > = parlaqMax ) {statusLED = 5; // Ən aşağı nöqtədə olarsa: Yüksək Gözləmə rejiminə keçin} başqa {currentBright = currentBright +artım ; // Başqa: Daha Yüksək Parlaqlıq}} else if (statusLED == 0) {// -0- (! StatusWaiting ) olduqda Ortalama Gözləmə {// Gözləmirsinizsə: waitTime = milis (); // Gözləmə vaxtının vəziyyətini təyin edinWaiting = doğru; // gözləməyə başlayın} başqa halda (statusWaiting && currentTime-waitTime > = timeWaitAvg ) {// Gözləmə VƏ vaxtWaitAvg keçibsə: statusWaiting = yalan; // Status gözləməyi dayandırınLED = 7; // StatusLed'i Güncellemeyi Gözləyir olaraq təyin edin}}} i = 0; lastRound = millis (); // Son tur başa çatdıqda təyin edin. writeToLED (); // Bütün məlumatları LED -lərə yazın}}
Addım 9: Son məhsul
Məncə yaxşı alındı. Qalstuk çox qalın, sərt, uzun və ya ağır deyil və ulduz effekti heyrətamiz görünür.
Tövsiyə:
Gecədə Parlayan LED Ulduzlu Bulutsu: 4 Addım
Gecədə Parlayan LED Ulduzlu Bulutsu: Bu layihə əsasən Auroris qalaktikasından çəkilmişdir. Başlanğıcda göstərildiyi kimi xüsusi bir rəsm çəkməyi planlaşdırırdım, amma xatırladım ki, NASA saytında Hubble Kosmik Teleskopunun möhtəşəm bir kolleksiyası var
İşləyən Piano Kravat: 6 addım
İşləyən Piano Kravat: 1980 -ci illər moda və musiqidə bir çox böyük uğurlar gətirdi. Synth musiqisi, funky keytar, leggings və klassik kişi Piano Kravat var idi. Bu qalstukları bir çox dəbli (və dəbsiz) istehzalı (və qeyri -iradi) geydi
Neopixel Ws2812 M5stick-C ilə Göy qurşağı LED Glow - Arduino IDE -dən istifadə edərək M5stack M5stick C -dən istifadə edərək Neopixel Ws2812 -də Göy qurşağının Çalışması: 5 addım
Neopixel Ws2812 M5stick-C ilə Göy qurşağı LED Glow | Arduino IDE istifadə edərək M5stack M5stick C istifadə edərək Neopixel Ws2812 üzərində Göy qurşağı çalıştırın: Salam uşaqlar bu təlimatlarda Arduino IDE ilə m5stack m5stick-C inkişaf lövhəsi ilə neopixel ws2812 LED və ya led şerit və ya led matris və ya led üzük istifadə etməyi öyrənəcəyik. onunla bir göy qurşağı nümunəsi
Tam Göy qurşağı təsiri ilə göy qurşağı söz saatı və daha çox: 13 addım (şəkillərlə)
Tam Göy qurşağı təsiri ilə göy qurşağı söz saatı və daha çoxu: məqsədlər 1) sadə 2) bahalı deyil 3) tam göy qurşağı effektli göy qurşağı söz saatı mümkün qədər enerjiyə qənaət edir. Söz saatı haqqında smiley. Sadə IR uzaqdan idarəetmə 03-nov-18 LDR-ni yeniləyin. NeopixelsUpdate'in Parlaqlıq Nəzarəti 01-yanvar
Uşaqlar RGB LED Ulduzlu Gecə İşığı: 9 Addım (Şəkillərlə birlikdə)
Uşaqlar RGB LED Ulduzlu Gecə İşığı: Uşaqlarım üçün layihələr hazırlamağı sevirəm və RGB LED -lərdən də istifadə edərək layihələr qurmağı sevirəm, buna görə də uşaq otaqlarım üçün RGB Ulduz şəkilli Gecə İşığı aşkarlayan bir fikir ortaya atdım. Gecə işığı qaranlıqda olub olmadığını müəyyən edə və RGB LED -lərini yandıra bilər