Daftar Isi:

Lampu Serat Optik dalam Cetak Kanvas: 5 Langkah
Lampu Serat Optik dalam Cetak Kanvas: 5 Langkah

Video: Lampu Serat Optik dalam Cetak Kanvas: 5 Langkah

Video: Lampu Serat Optik dalam Cetak Kanvas: 5 Langkah
Video: TUTORIAL CARA MEMBUAT NEON BOX SENDIRI 2024, Juli
Anonim
Image
Image
Lampu Serat Optik dalam Cetakan Kanvas
Lampu Serat Optik dalam Cetakan Kanvas

Proyek ini menambahkan putaran unik pada cetakan kanvas standar. Saya memprogram dalam 4 mode pencahayaan yang berbeda tetapi Anda dapat dengan mudah menambahkan lebih banyak. Mode berubah setiap kali Anda mematikan dan menghidupkannya kembali alih-alih memiliki tombol terpisah untuk meminimalkan kerusakan pada bingkai. Baterai harus bertahan selama 50+ jam penggunaan - Saya tidak begitu yakin, tetapi saya membuat proyek serupa untuk seorang teman dan menggunakan 5x lebih banyak lampu dan telah bertahan 20+ jam dengan satu set baterai.

Bahan:

  • Cetakan kanvas dengan ruang yang bisa diterapkan - Saya memesan milik saya dari https://www.easycanvasprints.com karena harganya bagus dan buka kembali. Bingkai 1,5" yang lebih tebal sempurna dan memberi saya banyak ruang untuk menekuk untaian serat optik. Selain itu, Anda menginginkan gambar yang memberi Anda ruang kerja 3" kali 8" untuk paket baterai dan mikrokontroler serta strip LED
  • Lampu strip LED - Saya menggunakan strip LED WS2812 yang dapat dialamatkan. Jangan terintimidasi, mereka sangat mudah digunakan dengan perpustakaan FastLED atau Neopixel! Anda juga dapat menggunakan strip LED standar apa pun, Anda hanya tidak akan dapat mengontrol setiap bagian lampu satu per satu tanpa lebih banyak kabel.
  • Mikrokontroler - Saya menggunakan Arduino Uno tetapi Anda dapat menggunakan apa saja untuk proyek ini.
  • Paket baterai - Saya memesan yang ini dari eBay (dari China) dan diberi judul "6 x 1.5V AA 2A CELL Battery Battery Holder"
  • Untaian serat optik - sekali lagi, dipesan dari China di eBay - "Kabel Serat Optik Plastik PMMA End Grow Led Light DIY Decor" atau "Kabel Serat Optik PMMA End Glow untuk Kit Lampu Langit-Langit Bintang". Saya menggunakan ukuran 1mm dan 1.5mm, saya sebenarnya merekomendasikan menggunakan yang lebih kecil dari itu.
  • Sakelar Nyala/Mati - "Saklar Toggle Miniatur On/On 2 Posisi SPDT"
  • Klip organisasi kawat - Ini membantu menjaga untaian serat optik tetap bagus dan rapi.
  • Papan busa, kawat konektor inti padat, tabung panas menyusut

Peralatan

  • Dremel - digunakan untuk memasang sakelar hidup/mati di bingkai foto. Ini mungkin bisa dicapai dengan latihan dan sedikit yang sangat besar, tetapi saya tidak merekomendasikan itu.
  • Besi solder - memasang kabel ke strip LED
  • Pistol lem panas - secara harfiah setiap langkah proyek ini
  • Jarum jahit besar - untuk melubangi kanvas dan papan busa untuk lampu

Langkah 1: Papan Busa, Paket Baterai, dan Sakelar Nyala/Mati

Papan Busa, Paket Baterai, dan Sakelar Nyala/Mati
Papan Busa, Paket Baterai, dan Sakelar Nyala/Mati
Papan Busa, Baterai, dan Sakelar Nyala/Mati
Papan Busa, Baterai, dan Sakelar Nyala/Mati

Sebelum hal lain, Anda perlu menempelkan sepotong papan busa ke bagian belakang cetakan kanvas. Ini memberi kita permukaan padat yang bagus untuk menempelkan segala sesuatu yang lain dan membantu menahan untaian serat optik di tempatnya. Cukup gunakan pisau eksak atau pemotong kotak untuk memotong papan busa dengan ukuran yang tepat dan lem panas di banyak tempat. Saya sarankan menggunakan papan busa hitam sehingga tidak memungkinkan banyak cahaya untuk menembus.

Saya menggunakan mata bor dremel yang terlihat seperti mata bor biasa tetapi sebenarnya bagus untuk menghilangkan material. Ini adalah salah satu bagian yang harus disertakan dengan dremel apa pun. Gunakan sekaleng udara bertekanan untuk menghilangkan serbuk gergaji dari dremel.

Lem panas semuanya di tempatnya. Pastikan baterai terpasang dengan sangat baik karena memerlukan sedikit tenaga untuk memasukkan/mengeluarkan baterai dan Anda tidak ingin dudukan baterai pergi ke mana pun.

Langkah 2: Mikrokontroler dan Sirkuit

Mikrokontroler dan Sirkuit
Mikrokontroler dan Sirkuit
Mikrokontroler dan Sirkuit
Mikrokontroler dan Sirkuit
Mikrokontroler dan Sirkuit
Mikrokontroler dan Sirkuit

Saya meletakkan sakelar daya sebelum Arduino UNO sehingga ketika Anda mengaktifkan sakelar maka tidak ada yang menggunakan daya dari paket baterai. Ini akan membantu baterai bertahan selama mungkin saat proyek tidak dihidupkan. Papan Arduino terkenal buruk dalam manajemen daya - mereka menggunakan banyak arus jika dihidupkan bahkan jika mereka tidak aktif melakukan apa pun.

Colokkan ujung positif paket baterai ke VIN (input tegangan) mikrokontroler sehingga menggunakan pengatur tegangan bawaan pengontrol untuk menurunkan tegangan ke 5V yang dibutuhkan. Jika kami menyalakan lebih banyak lampu, kami mungkin perlu menggunakan pengatur tegangan kami sendiri untuknya, tetapi UNO harus dapat menangani 5 LED.

Saya menggunakan resistor antara output data dan strip LED untuk menghaluskan sinyal - tanpa resistor Anda mungkin mendapatkan piksel yang berkedip secara acak. Ukuran resistor tidak terlalu penting, apa pun antara 50Ω dan 400Ω harus berfungsi.

Langkah 3: Lampu serat optik

Image
Image
Lampu serat optik
Lampu serat optik
Lampu serat optik
Lampu serat optik

Setelah beberapa percobaan dan kesalahan akhirnya saya menemukan cara yang baik untuk mendapatkan untaian serat optik melalui kanvas.

  1. Gunakan jarum jahit terbesar yang Anda miliki untuk membuat lubang melalui bagian depan kanvas dan papan busa. Saya sarankan menyodok setiap lubang yang Anda inginkan di awal sehingga Anda dapat membaliknya dan melihat di mana Anda dapat/tidak dapat meletakkan klip organisasi kabel Anda
  2. Ambil sepasang tang berhidung jarum dan ambil untaian serat optik kurang dari satu sentimeter dari ujungnya
  3. Tusuk untaian serat optik melalui lubang yang Anda buat dengan jarum
  4. Rutekan untaian melalui berbagai klip plastik ke tempat yang sedikit lebih panjang dari yang diperlukan - kami akan memotongnya nanti
  5. Dengan pistol lem panas Anda pada pengaturan suhu RENDAH (jika memiliki opsi itu) letakkan setetes lem panas pada untaian serat optik di mana lem itu menembus papan busa. Sebagai alternatif, Anda bisa menggunakan barang norak biru itu. Lem panas memang sedikit merusak untaian tetapi tampaknya tidak terlalu mengacaukan kualitas optik
  6. Potong untaian sedikit menjauh dari kanvas menggunakan pemotong kawat.

Untuk mempercepat prosesnya, Anda bisa menyodok banyak serat secara berurutan sebelum melakukan lem panas. Mereka umumnya harus tetap di tempatnya sendiri.

Berhati-hatilah untuk tidak mematahkan atau meremas untaian serat optik di atas meja - mereka akan putus dan jika membuat untaian terlalu pendek maka Anda akan sedih dan harus mengulanginya. Gunakan baterai sebagai penyeimbang sehingga Anda dapat memiliki bingkai foto kurang dari setengah di atas meja.

Karena saya menggunakan papan busa putih alih-alih hitam, ada banyak cahaya yang bersinar saat LED menyala. Sebagai perbaikan, saya menempelkan beberapa aluminium foil di antara lampu dan kanvas.

Gunakan tabung heat shrink untuk menyatukan setiap bundel untaian serat optik.

  1. Potong untaian untuk bundel dengan panjang yang kira-kira sama
  2. Letakkan bagian melalui tabung panas menyusut
  3. Gunakan senapan panas atau besi solder untuk mengecilkannya. Jika Anda menggunakan besi solder, biarkan sisi besi sedikit menyentuh pipa dan itu akan menyusut. Seharusnya tidak melelehkan tabung karena dirancang untuk sedikit panas.

Akhirnya saya menggunakan lem panas untuk menempelkan ujung bundel ke setiap lampu LED. Saya menggunakan banyak lem panas sehingga serat benar-benar mendapat cahaya dari setiap dioda merah/hijau/biru dalam cahaya - ketika serat benar-benar dekat dengan cahaya warna "putih" (yang sebenarnya merah dan hijau dan biru) maka beberapa serat hanya akan berwarna merah dan beberapa akan berwarna hijau, bukannya semuanya menjadi putih. Ini dapat ditingkatkan dengan menggunakan selembar kertas atau sesuatu yang lain untuk menyebarkannya, tetapi lem panas bekerja cukup baik untuk saya.

Langkah 4: Pemrograman

Dalam pemrograman ini saya menggunakan threelibraries

FastLED - perpustakaan hebat untuk mengontrol strip LED WS2812 (dan banyak strip LED beralamat lainnya) -

Arduino Low Power - Saya tidak tahu berapa banyak daya yang sebenarnya dihemat, tetapi sangat mudah diterapkan dan akan membantu menghemat sedikit daya pada fungsi yang hanya menyala putih dan kemudian menunda selamanya.

EEPROM - Digunakan untuk membaca/menyimpan mode proyek saat ini. Ini memungkinkan proyek untuk meningkatkan mode warna setiap kali Anda mematikan dan menghidupkannya kembali, yang menghilangkan kebutuhan tombol terpisah untuk mengubah mode. Pustaka EEPROM diinstal setiap kali Anda menginstal Arduino IDE.

Saya juga menggunakan sketsa untuk mengedipkan lampu yang dipasang orang lain. Ini secara acak menyalakan piksel dari warna dasar ke warna puncak dan kemudian kembali ke bawah. https://Gist.github.com/kriegsman/88954aae22b03a66… (menggunakan perpustakaan FastLED juga)

Saya juga menggunakan plugin vMicro untuk Visual Studio - ini adalah versi Arduino IDE yang ditingkatkan. Ini memiliki banyak fungsi pelengkapan otomatis yang membantu dan menyoroti masalah dalam kode Anda tanpa harus mengompilasinya. Biayanya $15 tetapi sangat berharga jika Anda akan membuat lebih dari satu proyek Arduino, dan itu akan memaksa Anda untuk belajar tentang Visual Studio yang merupakan program yang sangat kuat.

(Saya juga melampirkan file kode.ino karena Instructable hosting dari Github Gist menghancurkan banyak ruang kosong dalam file)

Kode Arduino menjalankan 4 mode warna pada Arduino UNO untuk beberapa lampu strip LED WS2812B menggunakan perpustakaan FastLED

#termasuk
#termasuk
#termasuk
//Pengaturan LED Cepat
#defineNUM_LEDS4
#definePIN3//Pin data untuk strip LED
LED CRGB[NUM_LEDS];
//Pengaturan berkelap-kelip
#defineBASE_COLORCRGB(2, 2, 2) //Warna latar belakang dasar
#definePEAK_COLORCRGB(255, 255, 255) //Warna puncak untuk berkelap-kelip hingga
// Jumlah untuk menambah warna setiap loop saat menjadi lebih cerah:
#defineDELTA_COLOR_UPCRGB(4, 4, 4)
// Jumlah untuk mengurangi warna dengan setiap loop saat semakin redup:
#defineDELTA_COLOR_DOWNCRGB(4, 4, 4)
// Peluang setiap piksel mulai cerah.
// 1 atau 2 = beberapa piksel cerah sekaligus.
// 10 = banyak piksel yang cerah pada satu waktu.
#defineCHANCE_OF_TWINKLE2
enum { SteadyDim, GettingBrighter, GettingDimmerAgain };
uint8_t PixelState[NUM_LEDS];
byte runMode;
byte globalBright = 150;
byte globalDelay = 20; // Kecepatan tunda untuk kedipan
alamat byte = 35; //Alamat untuk menyimpan mode run
pengaturan kosong()
{
FastLED.addLeds(leds, NUM_LEDS);
FastLED.setCorrection(TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness(globalBright);
//Dapatkan mode untuk dijalankan
runMode = EEPROM.read(alamat);
//Meningkatkan runmode sebesar 1
EEPROM.write(alamat, runMode + 1);
}
batal ()
{
beralih (runMode)
{
//putih pekat
case1: fill_solid(leds, NUM_LEDS, CRGB::White);
FastLED.show();
Tunda Selamanya();
merusak;
// Berkedip agak lambat
case2: FastLED.setBrightness(255);
globalDelay = 10;
TwinkleMapPixels();
merusak;
//Berkedip dengan cepat
case3: FastLED.setBrightness(150);
globalDelay = 2;
TwinkleMapPixels();
merusak;
//Pelangi
kasus4:
JalankanPelangi();
merusak;
//Indeks di luar jangkauan, setel ulang ke 2 dan kemudian jalankan mode 1.
// Ketika arduino restart itu akan menjalankan mode 2, tetapi untuk sekarang menjalankan mode 1
bawaan:
EEPROM.write(alamat, 2);
runMode = 1;
merusak;
}
}
voidRunRainbow()
{
byte *c;
uint16_t i, j;
sementara (benar)
{
for (j = 0; j < 256; j++) { // 1 siklus semua warna pada roda
untuk (i = 0; i < NUM_LEDS; i++) {
c = Roda(((i * 256 / NUM_LEDS) + j) & 255);
setPixel(i, *c, *(c + 1), *(c + 2));
}
FastLED.show();
penundaan (penundaan global);
}
}
}
byte * Roda(byte WheelPos) {
byte statis c[3];
if (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;
}
lain {
WheelPos -= 170;
c[0] = 0;
c[1] = WheelPos * 3;
c[2] = 255 - WheelPos * 3;
}
kembali c;
}
voidTwinkleMapPixels()
{
InitPixelStates();
sementara (benar)
{
for (uint16_t i = 0; i < NUM_LEDS; i++) {
if (PixelState == SteadyDim) {
// piksel ini saat ini: SteadyDim
// jadi kami secara acak mempertimbangkan untuk membuatnya menjadi lebih cerah
jika (random8() < CHANCE_OF_TWINKLE) {
PixelState = Menjadi Lebih Terang;
}
}
elseif (PixelState == Menjadi Lebih Terang) {
// piksel ini saat ini: GettingBrighter
// jadi kalau sudah di peak color, ubah jadi redup lagi
if (led >= PEAK_COLOR) {
PixelState = MendapatkanDimmerAgain;
}
lain {
// jika tidak, tetap cerahkan:
leds += DELTA_COLOR_UP;
}
}
else { // redup lagi
// piksel ini saat ini: GettingDimmerAgain
// jadi jika kembali ke warna dasar, alihkan ke redup stabil
if (led <= BASE_COLOR) {
leds = BASE_COLOR; // reset ke warna dasar yang tepat, jika kita overshot
PixelState = SteadyDim;
}
lain {
// jika tidak, terus redupkannya:
led -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show();
FastLED.delay (penundaan global);
}
}
voidInitPixelStates()
{
memset(PixelState, ukuran(PixelState), SteadyDim); // inisialisasi semua piksel ke SteadyDim.
fill_solid(led, NUM_LEDS, BASE_COLOR);
}
voidDelaySelamanya()
{
sementara (benar)
{
penundaan(100);
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip() {
FastLED.show();
}
voidsetPixel(int Pixel, byte merah, byte hijau, byte biru) {
// LED Cepat
leds[Pixel].r = merah;
leds[Pixel].g = hijau;
leds[Pixel].b = biru;
}

lihat rawFiberOptic_ClemsonPic.ino dihosting dengan ❤ oleh GitHub

Langkah 5: Produk Akhir

Produk akhir
Produk akhir
Produk akhir
Produk akhir
Produk akhir
Produk akhir

Ta-da! Saya harap Instructable ini menginspirasi orang lain untuk membuat proyek serupa mereka sendiri. Itu benar-benar tidak sulit untuk dilakukan dan saya terkejut bahwa tidak ada yang melakukannya dan menulis instruksi menyeluruh tentang itu.

Direkomendasikan: