İçindekiler:

Kanvas Baskıda Fiber Optik Işıklar: 5 Adım
Kanvas Baskıda Fiber Optik Işıklar: 5 Adım

Video: Kanvas Baskıda Fiber Optik Işıklar: 5 Adım

Video: Kanvas Baskıda Fiber Optik Işıklar: 5 Adım
Video: GergiTablo - Türkiye'de Bir İlk... Gergi Tavan'dan GergiTablo'ya 2024, Temmuz
Anonim
Image
Image
Kanvas Baskıda Fiber Optik Işıklar
Kanvas Baskıda Fiber Optik Işıklar

Bu proje, standart bir kanvas baskıya benzersiz bir dönüş katıyor. 4 farklı aydınlatma modunda programladım ama siz kolayca daha fazlasını ekleyebilirsiniz. Çerçeveye verilen zararı en aza indirmek için ayrı bir düğmeye sahip olmak yerine, modu her kapatıp açtığınızda değişir. Piller 50+ saat kullanım için dayanmalıdır - Tam olarak emin değilim, ancak bir arkadaşım için benzer bir proje yaptım ve 5 kat daha fazla ışık kullandı ve tek bir pil setinde 20+ saat sürdü.

Malzemeler

  • Çalışılabilir alana sahip kanvas baskı - Benimkini https://www.easycanvasprints.com adresinden sipariş ettim çünkü fiyatları iyi ve arkası açıktı. Daha kalın olan 1,5" çerçeve mükemmeldi ve bana fiber optik şeritleri bükmek için çok yer verdi. Ek olarak, pil takımı, mikro denetleyici ve LED şeritler için size 3" x 8" çalışma alanı sağlayan bir resim istiyorsunuz.
  • LED şerit ışıkları - Adreslenebilir WS2812 LED şeritleri kullandım. Korkmayın, FastLED veya Neopixel kitaplıklarıyla kullanımı gerçekten çok kolay! Herhangi bir standart LED şeridi de kullanabilirsiniz, çok daha fazla kablolama olmadan her bir ışık bölümünü ayrı ayrı kontrol edemezsiniz.
  • Mikrodenetleyici - Bir Arduino Uno kullandım ama bu proje için hemen hemen her şeyi kullanabilirsiniz.
  • Pil takımı - Bunu eBay'den (Çin'den) sipariş ettim ve başlığı "6 x 1.5V AA 2A HÜCRE Pil Pil Tutucusu" idi.
  • Fiber optik teller - bir kez daha eBay'de Çin'den sipariş edildi - "PMMA Plastik Fiber Optik Kablo Ucu Grow Led Işık DIY Dekor" veya "Yıldız Tavan Işık Kiti için PMMA End Glow Fiber Optik Kablo". 1mm ve 1.5mm boyutları kullandım, aslında bundan daha küçüğünü kullanmanızı tavsiye ederim.
  • Açma/Kapama anahtarı - "SPDT Açık/Açık 2 Konumlu Minyatür Geçiş Anahtarları"
  • Tel düzenleme klipsleri - Bunlar, fiber optik şeritlerin güzel ve düzenli kalmasına yardımcı olur.
  • Köpük levha, katı çekirdek bağlantı teli, ısıyla daralan makaron

Aletler

  • Dremel - açma/kapama düğmesini resim çerçevesine yerleştirmek için kullanılır. Bu belki bir matkapla ve gerçekten büyük bir parçayla başarılabilir, ancak bunu tavsiye etmiyorum.
  • Havya - kabloları LED şeride takmak
  • Sıcak tutkal tabancası - kelimenin tam anlamıyla bu projenin her adımı
  • Büyük dikiş iğnesi - ışıklar için kanvas ve köpük levhada delikler açmak için

Adım 1: Köpük Pano, Pil Takımı ve Açma/Kapama Anahtarı

Köpük Pano, Pil Takımı ve Açma/Kapama Anahtarı
Köpük Pano, Pil Takımı ve Açma/Kapama Anahtarı
Köpük Pano, Pil Takımı ve Açma/Kapama Anahtarı
Köpük Pano, Pil Takımı ve Açma/Kapama Anahtarı

Her şeyden önce, kanvas baskının arkasına bir parça köpük tahta yapıştırmanız gerekir. Bu bize diğer her şeyi tutturmak için güzel bir katı yüzey sağlar ve fiber optik şeritleri yerinde tutmaya yardımcı olur. Bir parça köpük levhayı doğru boyutta kesmek için bir exacto bıçağı veya kutu kesici kullanın ve birçok yerde sıcak tutkalla yapıştırın. Çok fazla ışığın sızmasına izin vermemek için siyah köpük tahta kullanmanızı öneririm.

Normal bir matkap ucuna benzeyen ama aslında malzemeyi çıkarmak için harika olan dremel ucunu kullandım. Herhangi bir dremel ile gelmesi gereken parçalardan biridir. Dremel'deki talaşlardan kurtulmak için bir kutu basınçlı hava kullanın.

Her şeyi yerine sıcak tutkalla yapıştırın. Pil takımının çok iyi takıldığından emin olun çünkü pili takmak/çıkarmak için biraz güç gerekir ve pil tutucunun herhangi bir yere gitmesini istemezsiniz.

Adım 2: Mikrodenetleyici ve Devre

Mikrodenetleyici ve Devre
Mikrodenetleyici ve Devre
Mikrodenetleyici ve Devre
Mikrodenetleyici ve Devre
Mikrodenetleyici ve Devre
Mikrodenetleyici ve Devre

Güç anahtarını Arduino UNO'nun önüne koydum, böylece anahtarı değiştirdiğinizde pil paketlerinden hiçbir şey güç kullanmaz. Bu, proje açılmadığında pillerin mümkün olduğunca uzun süre dayanmasına yardımcı olacaktır. Arduino kartları güç yönetiminde kötüdür - aktif olarak hiçbir şey yapmasalar bile açıksa çok fazla akım kullanırlar.

Pil takımının pozitif ucunu mikro denetleyicinin VIN'ine (voltaj girişi) takın, böylece voltajı ihtiyaç duyduğu 5V'a düşürmek için denetleyicinin yerleşik voltaj regülatörünü kullanır. Daha fazla ışığa güç veriyor olsaydık, onlar için kendi voltaj regülatörümüzü kullanmamız gerekebilir, ancak UNO 5 LED'i işleyebilmelidir.

Sinyali yumuşatmak için veri çıkışı ile LED şerit arasında bir direnç kullandım - direnç olmadan piksellerin rastgele yanıp sönmesini sağlayabilirsiniz. Direncin boyutu gerçekten önemli değil, 50Ω ile 400Ω arasındaki herhangi bir şey çalışmalıdır.

Adım 3: Fiber Optik Işıklar

Image
Image
Fiber optik Işıklar
Fiber optik Işıklar
Fiber optik Işıklar
Fiber optik Işıklar

Bazı deneme yanılmalardan sonra, sonunda fiber optik telleri tuvalden geçirmenin iyi bir yolunu buldum.

  1. Tuvalin ve köpük levhanın önünden bir delik açmanız gereken en büyük dikiş iğnesini kullanın. İstediğiniz her deliği en baştan açmanızı tavsiye ederim, böylece ters çevirebilir ve kablo düzenleme klipslerinizi nereye koyabileceğinizi / koyamayacağınızı görebilirsiniz.
  2. Bir pense alın ve fiber optik ipliği uçtan bir santimetreden daha kısa mesafede tutun
  3. Fiber optik ipliği iğne ile yaptığınız delikten geçirin.
  4. İpi, gerekenden biraz daha uzun olan çeşitli plastik klipslerden geçirin - daha sonra keseceğiz
  5. Sıcak tutkal tabancanız DÜŞÜK sıcaklık ayarındayken (eğer bu seçeneğe sahipse), köpük levhanın içinden geçtiği fiber optik şeridin üzerine bir damla sıcak tutkal koyun. Alternatif olarak, o mavi yapışkan şeyi kullanabilirsin. Sıcak tutkal ipliği biraz deforme ediyor ama optik nitelikleri çok fazla bozmuyor
  6. Tel kesiciler kullanarak ipliği tuvalden biraz uzağa kesin.

İşlemi hızlandırmak için, sıcak tutkalı yapmadan önce birçok elyafı arka arkaya dürtebilirsiniz. Genellikle kendi başınıza yerinde kalmalıdırlar.

Masanın üzerindeki fiber optik kabloları kırmamaya veya ezmemeye dikkat edin - kırılırlar ve eğer kablo çok kısa olursa üzülür ve yeniden yapmanız gerekir. Pil takımını karşı ağırlık olarak kullanın, böylece resim çerçevesinin yarısından daha azını masanın üzerinde tutabilirsiniz.

Siyah yerine beyaz köpük tahta kullandığım için LED'ler açıkken çok fazla ışık parlıyordu. Bir düzeltme olarak, ışıklar ve tuval arasına bir miktar alüminyum folyo bantladım.

Her bir fiber optik şerit demetini bir arada tutmak için ısıyla daralan makaron kullanın.

  1. Demet için telleri yaklaşık olarak aynı uzunlukta kesin
  2. Bölümü ısıyla daralan makaron içinden geçirin
  3. Küçültmek için bir ısı tabancası veya havya kullanın. Bir havya kullanıyorsanız, ütünün kenarının boruya hafifçe dokunmasına izin verin, büzüşecektir. Biraz ısı için tasarlandığından boruyu eritmemelidir.

Sonunda, demetin ucunu her bir LED ışığına tutturmak için sıcak tutkal kullandım. Liflerin ışıktaki her kırmızı/yeşil/mavi diyottan ışık alması için çok fazla sıcak tutkal kullandım - lifler ışığa gerçekten yakın olduğunda bir "beyaz" renk (aslında kırmızı, yeşil ve mavidir) o zaman bazı lifler tamamen beyaz olmak yerine sadece kırmızı ve bazıları yeşil olacaktır. Bu, dağıtmak için bir kağıt parçası veya başka bir şey kullanılarak geliştirilebilir, ancak sıcak tutkal benim için yeterince iyi çalıştı.

Adım 4: Programlama

Bunu programlamada üç kitaplık kullandım

FastLED - WS2812 LED şeritlerini (ve diğer birçok adreslenebilir LED şeritlerini) kontrol etmek için harika bir kitaplık -

Arduino Low Power - Bunun gerçekte ne kadar güç tasarrufu sağladığını bilmiyorum, ancak uygulanması çok kolaydı ve sadece beyaz ışıklar olan ve ardından sonsuza kadar geciktiren işlevde küçük bir miktar güç tasarrufuna yardımcı olmalıdır. https://github.com/rocketscream/Düşük Güç

EEPROM - Projenin mevcut modunu okumak/saklamak için kullanılır. Bu, projenin renk modunu her kapatıp açtığınızda artırmasını sağlar, bu da modu değiştirmek için ayrı bir düğme ihtiyacını ortadan kaldırır. Arduino IDE'yi her kurduğunuzda EEPROM kütüphanesi kurulur.

Ayrıca başka birinin ayarladığı ışıkları yakmak için bir eskiz kullandım. Temel renkten en yüksek renge kadar bir pikseli rastgele aydınlatır ve sonra tekrar kapatır. https://Gist.github.com/kriegsman/88954aae22b03a66… (FastLED kitaplığını da kullanır)

Ayrıca Visual Studio için vMicro eklentisini kullandım - bu Arduino IDE'nin güçlendirilmiş bir versiyonudur. Bir sürü yardımcı otomatik tamamlama işlevine sahiptir ve kodunuzdaki sorunları derlemek zorunda kalmadan vurgular. 15$'a mal oluyor ama birden fazla Arduino projesi yapacaksanız buna değer ve sizi süper güçlü bir program olan Visual Studio'yu öğrenmeye zorlayacak.

(Ayrıca.ino dosyasını ekliyorum çünkü Github Gist'in Eğitilebilir barındırması dosyadaki birçok boş alanı yok ediyor)

FastLED kitaplığını kullanan bazı WS2812B LED şerit ışıkları için Arduino UNO'da 4 renk modu çalıştıran Arduino kodu

#Dahil etmek
#Dahil etmek
#Dahil etmek
//Hızlı LED kurulumu
#defineNUM_LEDS4
#definePIN3//LED şerit için veri pini
CRGB led'leri[NUM_LEDS];
// Parıltı kurulumu
#defineBASE_COLORCRGB(2, 2, 2) //Temel arka plan rengi
#definePEAK_COLORCRGB(255, 255, 255) //Parıldamak için en yüksek renk
// Parlaklaştıkça her döngüde rengi artırma miktarı:
#defineDELTA_COLOR_UPCRGB(4, 4, 4)
// Renk azaldıkça her döngüde rengi azaltacak miktar:
#defineDELTA_COLOR_DOWNCRGB(4, 4, 4)
// Her pikselin parlamaya başlama şansı.
// 1 veya 2 = bir seferde birkaç parlak piksel.
// 10 = bir seferde çok sayıda piksel parlıyor.
#defineCHANCE_OF_TWINKLE2
enum { SteadyDim, GettingBrighter, GettingDimmerAgain };
uint8_t PixelState[NUM_LEDS];
bayt runMode;
bayt globalBright = 150;
bayt globalGecikme = 20; // Pırıltı için gecikme hızı
bayt adresi = 35; //Çalışma modunun saklanacağı adres
geçersiz kurulum()
{
FastLED.addLed'ler(led'ler, NUM_LEDS);
FastLED.setDüzeltme(TipikLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness(globalBright);
// Çalıştırılacak modu alın
runMode = EEPROM.read(adres);
//Çalışma modunu 1 artır
EEPROM.write(adres, runMode + 1);
}
boşluk döngüsü()
{
geçiş (runMode)
{
//Katı beyaz
case1: fill_solid(led'ler, NUM_LEDS, CRGB::Beyaz);
FastLED.show();
DelayForever();
kırmak;
// Yavaşça parılda
case2: FastLED.setBrightness(255);
küreselGecikme = 10;
TwinkleMapPixels();
kırmak;
// Hızlıca parılda
case3: FastLED.setBrightness(150);
küreselGecikme = 2;
TwinkleMapPixels();
kırmak;
//Gökkuşağı
durum4:
RunRainbow();
kırmak;
//İndeks aralık dışı, 2'ye sıfırlayın ve ardından mod 1'i çalıştırın.
//Arduino yeniden başladığında mod 2'yi çalıştıracak, ancak şimdilik mod 1'i çalıştıracak
varsayılan:
EEPROM.write(adres, 2);
runMode = 1;
kırmak;
}
}
voidRunRainbow()
{
bayt *c;
uint16_t ben, j;
süre (doğru)
{
for (j = 0; j < 256; j++) { // çarkta tüm renklerin 1 döngüsü
for (i = 0; i < NUM_LEDS; i++) {
c = Tekerlek(((i * 256 / NUM_LEDS) + j) & 255);
setPixel(i, *c, *(c + 1), *(c + 2));
}
FastLED.show();
gecikme (genelGecikme);
}
}
}
bayt * Tekerlek(bayt WheelPos) {
statik bayt c[3];
if (WheelPos < 85) {
c[0] = WheelPos * 3;
c[1] = 255 - WheelPos * 3;
c[2] = 0;
}
elseif (WheelPos < 170) {
TekerlekPos -= 85;
c[0] = 255 - WheelPos * 3;
c[1] = 0;
c[2] = WheelPos * 3;
}
Başka {
TekerlekPos -= 170;
c[0] = 0;
c[1] = WheelPos * 3;
c[2] = 255 - WheelPos * 3;
}
dönüş c;
}
voidTwinkleMapPixels()
{
InitPixelStates();
süre (doğru)
{
for (uint16_t i = 0; i < NUM_LEDS; i++) {
if (PixelState == SteadyDim) {
// bu piksel şu anda: SteadyDim
// bu yüzden rastgele olarak daha parlak hale gelmesini sağlamayı düşünüyoruz
if (random8() <CHANCE_OF_TWINKLE) {
PixelState = Daha Parlak;
}
}
elseif (PixelState == Daha Parlaklaşıyor) {
// bu piksel şu anda: GettingBrighter
// yani, en yüksek renkteyse, tekrar kararmaya çevirin
if (ledler >= PEAK_COLOR) {
PixelState = AlmaDimmerAgain;
}
Başka {
// aksi takdirde, onu aydınlatmaya devam edin:
ledler += DELTA_COLOR_UP;
}
}
else { // tekrar kararıyor
// bu piksel şu anda: BaşlarkenDimmerAgain
// yani, temel renge geri dönerse, onu sabit olarak loş hale getirin
if (led'ler <= BASE_COLOR) {
ledler = BASE_COLOR; // aşmamız durumunda tam temel renge sıfırla
PixelState = SteadyDim;
}
Başka {
// aksi takdirde, karartmaya devam edin:
ledler -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show();
FastLED.delay(globalDelay);
}
}
voidInitPixelStates()
{
memset(PixelState, sizeof(PixelState), SteadyDim); // tüm pikselleri SteadyDim'e başlat.
fill_solid(ledler, NUM_LEDS, BASE_COLOR);
}
voidDelayForever()
{
süre (doğru)
{
gecikme(100);
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip() {
FastLED.show();
}
voidsetPixel(int Piksel, bayt kırmızı, bayt yeşil, bayt mavi) {
// HızlıLED
ledler[Piksel].r = kırmızı;
ledler[Piksel].g = yeşil;
ledler[Piksel].b = mavi;
}

GitHub tarafından ❤ ile barındırılan rawFiberOptic_ClemsonPic.ino'yu görüntüleyin

Adım 5: Nihai Ürün

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

Ta-da! Umarım bu Eğitilebilirlik, başka birine kendi benzer projesini yapması için ilham verir. Bunu yapmak gerçekten zor değildi ve henüz kimsenin yapmadığına ve bu konuda kapsamlı bir talimat yazmadığına şaşırdım.

Önerilen: