İçindekiler:

Starry Sky Led Kravat: 9 Adım (Resimlerle)
Starry Sky Led Kravat: 9 Adım (Resimlerle)

Video: Starry Sky Led Kravat: 9 Adım (Resimlerle)

Video: Starry Sky Led Kravat: 9 Adım (Resimlerle)
Video: TITAN TV MAN AİLESİ BENİ SAHİPLENDİ - Minecraft 2024, Kasım
Anonim
Image
Image
Yıldızlı Gökyüzü Led Kravat
Yıldızlı Gökyüzü Led Kravat
Yıldızlı Gökyüzü Led Kravat
Yıldızlı Gökyüzü Led Kravat

Bir süre önce bir dolar mağazasında fiberoptikli bir çocuk oyuncağı buldum ve onunla ne yapabilirim diye düşünmeye başladım.

Aklıma gelen çılgın fikirlerden biri de yıldızlı gökyüzünün etkisiyle kravat yapmaktı.

Hala muhtemelen bu projeye uyacak bazı arduino pro mini'lerim, adafruit panolarım ve pillerim vardı.

Kasabamdaki bir rehinci dükkanında güzel ve geniş bir kravat bulduğumda ve donanıma uygun bir kutu bulduğumda, gidip onu yapmaya karar verdim.

Bu talimat size nasıl yaptığımı gösteriyor.

Bir arduino pro mini, adafruit powerboost 500 şarj cihazı, emmerich icr 18650nh-sp ve 5 beyaz LED ile çalışır. Kod, LED'in parlaklığını rastgele değiştirir. (Videonun ilk 40 saniyesi 3x hızdır)

Adım 1: Şemalar ve Donanım

Şemalar ve Donanım
Şemalar ve Donanım
Şemalar ve Donanım
Şemalar ve Donanım

Aşağıdaki donanımı kullanıyorum:

- Buz beyazı LED'li ve 220 Ohm dirençli PCB.

- Arduino pro mini (bir taklit kullandım)

- Adafruit Powerboost 500 şarj cihazı

- Emmerich Li-ion akü ICR-18650NH-SP

- Optik fiberler (farklı boyutlarda)

Adım 2: PCB Barındıran LED'leri Yapmak

LED'leri Barındıran PCB'yi Yapmak
LED'leri Barındıran PCB'yi Yapmak
LED'leri Barındıran PCB'yi Yapmak
LED'leri Barındıran PCB'yi Yapmak
LED'leri Barındıran PCB'yi Yapmak
LED'leri Barındıran PCB'yi Yapmak

LED'leri tutmak için bir PCB'den bir şerit kestim ve ana PCB'ye lehimlemek için LED pinlerini kullandım.

Tüm katotları (-) GND'ye bağladı ve pinlerin yarısını ana PCB'ye yapışmış lehimlemek için kullandı.

Tüm anotları (+) dirençlere ve kablolarla arduinoya bağlayın.

LED'lerin her biri aşağıdaki PWM bağlantı noktalarından birine bağlanmalıdır: 3, 5, 6, 9, 10, 11

Aptal ben bu projede çok hata yaptım ve doğru PWM portlarını kontrol etmeyi unuttum, bu yüzden birkaç sonra yeniden lehimlemem gerekti. Yüksek/Düşük ile test edildi, bu yüzden bunu ancak daha sonra fark ettim.

7 LED ile başladım, ancak yalnızca 6 PWM bağlantı noktası vardı ve yeniden lehimlediğim LED'lerden biri öldü. Sadece 5 çalışan LED'i tuttum ve 6.'yı kullanmıyorum.

Adım 3: Kutuyu Yapmak

Kutuyu Yapmak
Kutuyu Yapmak
Kutuyu Yapmak
Kutuyu Yapmak
Kutuyu Yapmak
Kutuyu Yapmak
Kutuyu Yapmak
Kutuyu Yapmak

Pilin, düğmenin, mikro-usb bağlantı noktasının, Arduino'dan gelen başlıkların ve optik fiberlerin şeklini kesmek için bir Bosch GRO (Dremel gibi) ve bir matkap kullandım. (toz maskesi kullanın!)

Pili 2 bant ile kasaya yapıştırın.

Adafruit kartını ve PCB'yi monte etmek için kullanılan vidalar.

Açma ve kapamadan kaynaklanan sürtünme bazı tellere zarar verdi. Onları yeniden lehimlemem ve tekrar olmasını önlemek için yapıştırıcı kullanmam gerekiyordu.

Adım 4: Kravatın Hazırlanması

Kravatın Hazırlanması
Kravatın Hazırlanması
Kravatın Hazırlanması
Kravatın Hazırlanması
Kravatın Hazırlanması
Kravatın Hazırlanması

Lastik tabakaya uyması için bağın alt kısmındaki dikiş kaldırıldı.

Donanımı gizlemek ve gerektiğinde hala erişebilmek için bir fermuar kullanmaya karar verdim.

Dikiş makinesiyle aram iyi değil, bu yüzden tatlı annem kravatın arkasına bir fermuar koydu.

Bu yapıldıktan sonra, lastik tabakayı bağa yapıştırdım. Kumaşı doyuracak ve önden görülebilecek çok fazla yapıştırıcı kullanmaktan korktum, bu yüzden düzleştirmeye ve çok fazla kullanmamaya çalıştım. Genel olarak iyi görünüyor, ancak birkaç yerde çok fazla veya çok az yapıştırıcı fark ettim, çünkü kumaştan geçti veya kumaşa çok iyi yapışmadı. Neyse ki bu sadece parlak ışıkta yakın mesafeden zar zor görülebilir.

Kutu ve kravat şimdi yapılır. Fiberoptiği yapıştırma zamanı!

Adım 5: Fiberoptiği Yapıştırma

Fiberoptiği Yapıştırma
Fiberoptiği Yapıştırma
Fiberoptiği yapıştırma
Fiberoptiği yapıştırma
Fiberoptiği Yapıştırma
Fiberoptiği Yapıştırma
Fiberoptiği Yapıştırma
Fiberoptiği Yapıştırma

Oyuncakta, kolayca parçalanabilen büyük bir fiber optik kablo demeti vardı. İlk başta bunları tek tek yapıştırmaya çalıştım, ancak kısa süre sonra küçük demetler yapıp bunları bir kerede LED'e yapıştırmanın daha iyi olacağını fark ettim. Bu, yapıştırıcı kuruyana kadar sabit kalmasını kolaylaştıracaktır. Bunu çözen ilk LED'i karıştırdı.

Şeffaf bir yapıştırıcı kullandığınızdan emin olun! Kullandığım çok yavaş kurudu ve ilk LED'de denediğim hızlı kuruyan yapıştırıcı beyaza döndü ve ilk LED'den bazı liflerin daha az parlak olmasına neden oldu.

Üstüne ışık sızmasını önlemek ve LED'leri ayırmak için küçük siyah lastik levhalar yapıştırdım.

Sayfalardan biri kasanın kapanmasını engelledi, bu yüzden kapağı kapalı tutmak için bir lastik bant ekledim.

Adım 6: Fiberoptiği Kravattan Geçirmek

Fiberoptiği Kravattan Geçirmek
Fiberoptiği Kravattan Geçirmek
Fiberoptiği Kravattan Geçirmek
Fiberoptiği Kravattan Geçirmek
Fiberoptiği Kravattan Geçirmek
Fiberoptiği Kravattan Geçirmek

Alttan başlayarak iğne ile delikler açtım ve lifleri tek tek geçirdim. Her LED'in lifleri, bağ boyunca rastgele yayılır.

Kutunun ağırlığını korumak için bağın daha küçük kısmına kadar gitmesi gereken siyah bir şeridi arkaya yapıştırdım, ancak tüm telleri geçirip tellerin gerginliğini hissettikten sonra yapıştırmaya karar verdim. kravat için her şey daha iyi bir fikirdi ve şeridi kesti.

Oyuncaktan gelen fiber optik teller çok kısa olduğu için onları bağın her yerine takmak zordu. Kutuyu konumlandırma konusunda sınırlıydım ve her şeyi istediğim gibi düz hale getirmekte zorlandım.

Adım 7: Fiberoptiği Kravat'a Yapıştırma

Fiberoptiği Kravat'a Yapıştırmak
Fiberoptiği Kravat'a Yapıştırmak
Fiberoptiği Kravat'a Yapıştırmak
Fiberoptiği Kravat'a Yapıştırmak
Fiberoptiği Kravat'a Yapıştırmak
Fiberoptiği Kravat'a Yapıştırmak
Fiberoptiği Kravat'a Yapıştırmak
Fiberoptiği Kravat'a Yapıştırmak

Tüm fiber optik kabloları kauçuk levhadan tellerin dışarı çıkmasını önlemek ve bağı düz hale getirmek için yapıştırdım.

Üzerine bastırırken kelepçeyi kravata yapıştırmadığımdan emin olmak için aralarına biraz kağıt koydum. O kadar harika görünmüyor ama iyi çalışıyor. Ve kapalıyken görmüyorsunuz.

Yapıştırıcı kuruduktan sonra ön taraftaki telleri kestim ve en yüksek telin hemen üzerindeki lastik tabakayı biraz kestim, çünkü bağ biraz fazla uzundu.

Beyaz gömlekli fotoğraflar, son lastik parçasını kesmeden önce çekildi.

Adım 8: Kod

Kravat için yazdığım kodun altında.

Tüm LED'lerin belirli bir "ortalama" değeri vardır (aslında ortalama değil, orta parlaklık).

Bu ortalamaya ulaşır ulaşmaz 3/4 şansla daha düşük bir parlaklığa gitmeye karar verecek. Ayrıca rastgele olarak yeni bir minimum parlaklık, maksimum parlaklık, minimum ve maksimum parlaklık için bekleme süresi ve her turda artırdığı veya azalttığı hızı (1-255) önceden ayarlanmış 5 değerden ayarlar. Sonra tekrar ortalamaya ulaşana kadar bir döngü yapacak. Aynı anda sadece 2 LED yüksek döngüde olabilir.

Her durum, ortalama düşük, düşük ortalama, düşük bekleme, güncelleme vb. olup olmadığını belirleyen bir tamsayı değeri (1-7) ile temsil edilir.

Arduino'ya kod yükleme hakkında bilgi için lütfen www.arduino.cc'ye bakın.

/* Starry Sky Tie * * Fiberoptik ile kullanıldığında yıldızlı bir gökyüzü gibi görünmek için rastgele daha düşük, daha yüksek ve zamanlama ayarları * ile 5 LED'i ortalamadan daha düşük * veya daha yüksek bir parlaklığa rastgele solduran bir komut dosyasıdır. * Bu durumda bunlar berabere uygulanacaktır. * * Yukarı/aşağı şansı = 1/4 yukarı, 3/4 aşağı, maksimum 2 * aynı anda maksimuma çıkıyor. * * Ortalama aynı kalır. * Minimum, maksimum ve zamanlama seçenekleri, bir LED tekrar ortalamaya ulaştığında 5 seçenek arasından rastgele * değişir. * * Mayıs 2019'da Billy Jaspers tarafından düzenlendi. *

/ Pinleri bildir

int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;

// Zaman değişkenleri

imzasız uzun currentTime; imzasız uzun bekleme süresi[5]; imzasız uzun lastRound;

// LED Değişkenler

int parlakMin [5] = { 10, 10, 10, 10, 10 }; // Minimum parlaklık int brightAvg [5] = { 200, 200, 200, 200, 200 }; // Ortalama parlaklık int parlakMax[5] = { 240, 240, 240, 240, 240 }; // Maksimum parlaklık int timeWaitLow[5] = { 1000, 1000, 1000, 1000, 1000 }; // Bekleme süresi int timeWaitAvg[5] = { 5000, 5000, 5000, 5000, 5000 }; // Bekleme süresi int timeWaitMax[5] = { 4000, 3000, 3000, 3000, 3000 }; // Bekleme süresi int artış[5] = { 2, 5, 4, 5, 2 }; // Parlaklıkta artış int akımParlak[5]= { 200, 230, 210, 210, 235 }; // Mevcut parlaklık

// LED Değişken Olanakları

int parlakMinPos[5] = { 5, 20, 40, 5, 20 }; // Minimum parlaklık olasılıkları int brightMaxPos[5] = { 240, 245, 230, 225, 245 }; // Maksimum parlaklık olasılıkları int timeLowPos[5] = { 3000, 5000, 4000, 2000, 1000 }; // Düşük parlaklık olasılıklarında bekleme süresi int timeHighPos[5] = { 3000, 1000, 500, 2000, 4000 }; // Yüksek parlaklık olasılıklarında bekleme süresi int timeAvgPos[5] = { 3000, 5000, 4000, 7000, 8000 }; // Ortalama parlaklık olasılıklarında bekleme süresi int incrementPos[5] = { 2, 4, 5, 3, 1 }; // parlaklık olasılıklarında artış

// Değişkenler

bool başlangıç = doğru; // Başlangıç ayarlarının başlatılması gerekiyor mu?

// Yön değişkenleri

/* 0 = Ortalamada Bekliyor 1 = Ort. Düşük'e gidiyor 2 = Düşük bekliyor 3 = Düşük'ten Ort'a gidiyor 4 = Ort. Maks'a gidiyor 5 = Maks'ta bekliyor 6 = Yüksekten Avg'a gidiyor 7 = Değişkenler güncelleniyor*/ int statusLED[5] = { 0, 0, 0, 0, 0 }; int miktarYüksekLED = 0; int yenilemeHızı = 50; bool statusWaiting[5] = { false, false, false, false, false}; // Led bekliyor mu?

// Rastgele değişkenler

uzun rastgeleSayı; // Rastgele sayıyı saklamak için uzun uzun randomNumberTwo; // İkinci rastgele sayıyı saklamak için uzun

// sayaçlar

int ben = 0; // Ana döngü için sayaç

geçersiz kurulum() {

Serial.başlangıç (115200); // Seri randomSeed'i başlat(analogRead(A0)); // Randomseed'i ayarla

// Çıktıları bildir

pinMode (LED01, ÇIKIŞ); pinMode (LED02, ÇIKIŞ); pinMode (LED03, ÇIKIŞ); pinMode (LED04, ÇIKIŞ); pinMode (LED05, ÇIKIŞ); }

// LED'lere veri yaz

void writeToLED(){ analogWrite(LED01, currentBright[0]); analogWrite(LED02, currentBright[1]); analogWrite(LED03, currentBright[2]); analogWrite(LED04, currentBright[3]); analogWrite(LED05, currentBright[4]); }

// Ana döngü

void loop() { if (başlangıç){ // Başlangıç ayarları lastRound = millis(); // önyükleme writeToLED() için lastRound'u ayarlayın; // Başlangıç verilerini LED başlangıcına yaz = false; // Başlatmayı kapat } currentTime = millis(); // Geçerli saati ayarla

if (currentTime - lastRound >= refreshRate){

for (i=0;i<5;i++){ if (statusLED == 7){ // -7- Güncelleme Led randomNumber = random(5); parlakMin = parlakMinPos[rastgeleSayı]; // Minimum parlaklık için rastgele değer ayarla randomNumber = random(5); parlakMax = parlakMaxPos[rastgeleSayı]; // Maksimum parlaklık için rastgele değer ayarla randomNumber = random(5); timeWaitLow = timeLowPos[rastgeleSayı]; // Düşük bekleme süresi için rastgele değer ayarla randomNumber = random(5); timeWaitMax = timeHighPos[rastgeleSayı]; // Yüksek bekleme süresi için rastgele değer ayarla randomNumber = random(5); timeWaitAvg = timeAvgPos[rastgeleSayı]; // Ortalama bekleme süresi için rastgele değer ayarla randomNumber = random(5); artış = artışPos[rastgeleSayı]; // Artış değeri için rastgele değer ayarla randomNumber = random(2); // Yön için rastgele değer ayarla randomNumberTwo = random(2); // Yön için rastgele değer ayarla if (randomNumber == 1 && randomNumberTwo == 0 && miktarYüksekLED = parlakAvg){ statusLED = 0; // En düşük noktadaysa: Bekleyen Ort }else{ currentBright = currentBright+increment'ye gidin; // Else: Daha Yüksek Parlaklık } }else if (statusLED == 2){ // -2- Waiting Low if (!statusWaiting){ // Beklemiyorsa: waitTime = millis(); // Bekleme süresini ayarla statusWaiting = true; // Beklemeye başla }else if(statusWaiting && currentTime-waitingTime >= timeWaitLow){ // Eğer bekliyor VE timeWaitAvg geçtiyse: statusWaiting = false; // Beklemeyi durdur durumLED = 3; // statusLed'i Güncelleme bekleniyor olarak ayarlayın } }else if (statusLED == 1){ // -1- Ort. Düşük'e Gidiyor if (currentBright <= brightMin){ statusLED = 2; // En düşük noktadaysa: Düşük Bekliyor'a gidin }else{ currentBright = currentBright-artış; // Else: Düşük Parlaklık } }else if (statusLED == 6){ // -6- Maks'tan Avg'a Gitmek if (currentBright = timeWaitMax){ // Eğer bekliyor VE timeWaitAvg geçtiyse: statusWaiting = false; // Beklemeyi durdur statusLED = 6; // statusLed'i Güncelleme bekleniyor olarak ayarlayın } }else if (statusLED == 4){ // -4- Ort.'a Gitmek if (currentBright >= brightMax){ statusLED = 5; // En düşük noktadaysa: Yüksek Bekleyen'e gidin }else{ currentBright = currentBright+increment; // Else: Daha Yüksek Parlaklık } }else if (statusLED == 0){ // -0- Ortalamada Bekliyor if (!statusWaiting){ // Beklemiyorsa: waitTime = millis(); // Bekleme süresini ayarla statusWaiting = true; // Beklemeye başla }else if(statusWaiting && currentTime-waitingTime >= timeWaitAvg){ // Eğer bekliyor VE timeWaitAvg geçtiyse: statusWaiting = false; // Beklemeyi durdur statusLED = 7; // statusLed'i Güncelleme bekleniyor olarak ayarlayın } } } i=0; lastRound = millis(); // Son turun ne zaman biteceğini ayarlayın. writeToLED(); // Tüm verileri LED'lere yazın } }

Adım 9: Nihai Ürün

Image
Image
Son ürün
Son ürün
Son ürün
Son ürün

Bence iyi sonuç verdi. Kravat çok kalın, sert, uzun veya ağır değil ve yıldız efekti harika görünüyor.

Önerilen: