Mục lục:

Đèn sợi quang in canvas: 5 bước
Đèn sợi quang in canvas: 5 bước

Video: Đèn sợi quang in canvas: 5 bước

Video: Đèn sợi quang in canvas: 5 bước
Video: How to make an ethernet cable , cách bấm dây mạng , cực dễ từ A-Z 2024, Tháng mười một
Anonim
Image
Image
Đèn sợi quang in canvas
Đèn sợi quang in canvas

Dự án này thêm một vòng quay độc đáo trên bản in canvas tiêu chuẩn. Tôi đã lập trình ở 4 chế độ chiếu sáng khác nhau nhưng bạn có thể dễ dàng thêm nhiều chế độ khác. Chế độ được thay đổi mỗi khi bạn tắt và bật lại thay vì có một nút riêng biệt để giảm thiểu thiệt hại cho khung hình. Pin sẽ kéo dài hơn 50 giờ sử dụng - tôi không thực sự chắc chắn, nhưng tôi đã thực hiện một dự án tương tự cho một người bạn và nó sử dụng số lượng đèn gấp 5 lần và đã kéo dài hơn 20 giờ trên một bộ pin.

Vật liệu

  • Bản in canvas với không gian khả thi - Tôi đã đặt hàng của mình từ https://www.easycanvasprints.com vì chúng có giá tốt và ưu đãi. Khung dày hơn 1,5 "là hoàn hảo và cho tôi nhiều không gian để uốn các sợi cáp quang. Ngoài ra, bạn muốn có một bức ảnh cung cấp cho bạn 3" x 8 "không gian có thể làm việc cho bộ pin, bộ vi điều khiển và dải đèn LED
  • Đèn dải LED - Tôi đã sử dụng dải LED WS2812 có địa chỉ. Đừng lo lắng, chúng thực sự dễ sử dụng với các thư viện FastLED hoặc Neopixel! Bạn cũng có thể sử dụng bất kỳ dải đèn LED tiêu chuẩn nào, bạn sẽ không thể điều khiển từng phần ánh sáng riêng lẻ nếu không có thêm nhiều dây dẫn.
  • Vi điều khiển - Tôi đã sử dụng Arduino Uno nhưng bạn có thể sử dụng bất cứ thứ gì cho dự án này.
  • Bộ pin - Tôi đã đặt hàng cái này từ eBay (từ Trung Quốc) và nó có tiêu đề "Giá đỡ pin 6 x 1,5V AA 2A CELL"
  • Các sợi cáp quang - một lần nữa, được đặt hàng từ Trung Quốc trên eBay - "Cáp quang bằng nhựa PMMA End Grow Led Light DIY Decor" hoặc "PMMA End Glow Fiber Optic Cable for Star Ceiling Light". Tôi đã sử dụng kích thước 1mm và 1.5mm, tôi thực sự khuyên bạn nên sử dụng nhỏ hơn thế.
  • Công tắc Bật / Tắt - "Công tắc bật / tắt SPDT Bật / Bật 2 vị trí thu nhỏ"
  • Kẹp tổ chức dây - Chúng giúp giữ cho các sợi cáp quang đẹp và gọn gàng.
  • Tấm xốp, dây nối lõi rắn, ống co nhiệt

Công cụ

  • Dremel - dùng để lồng công tắc bật / tắt vào khung ảnh. Điều này có thể được thực hiện với một mũi khoan và một mũi khoan thực sự lớn, nhưng tôi không khuyên bạn nên làm như vậy.
  • Hàn sắt - gắn dây vào dải đèn LED
  • Súng bắn keo nóng - theo đúng nghĩa đen là mọi bước của dự án này
  • Kim khâu lớn - để chọc lỗ qua vải và bảng xốp cho đèn

Bước 1: Bảng bọt, Bộ pin và Công tắc Bật / Tắt

Bảng bọt, Bộ pin và Công tắc bật / tắt
Bảng bọt, Bộ pin và Công tắc bật / tắt
Bảng bọt, Bộ pin và Công tắc bật / tắt
Bảng bọt, Bộ pin và Công tắc bật / tắt

Trước khi làm bất cứ thứ gì khác, bạn cần dán một miếng bìa xốp vào mặt sau của bức tranh in canvas. Điều này mang lại cho chúng tôi một bề mặt rắn đẹp để gắn mọi thứ khác vào và giúp giữ các sợi cáp quang tại chỗ. Chỉ cần sử dụng một con dao chính xác hoặc máy cắt hộp để cắt một miếng ván xốp theo đúng kích thước và dán keo nóng vào nhiều vị trí. Tôi khuyên bạn nên sử dụng bảng xốp màu đen để nó không cho phép nhiều ánh sáng lọt qua.

Tôi đã sử dụng mũi khoan dremel trông giống như một mũi khoan bình thường nhưng thực sự rất tốt để loại bỏ vật liệu. Đó là một trong những thứ nên đi kèm với bất kỳ loại dremel nào. Sử dụng một lon khí nén để loại bỏ mùn cưa khỏi vỏ máy.

Keo nóng tất cả mọi thứ tại chỗ. Đảm bảo rằng bộ pin được gắn thật tốt bởi vì để lắp / tháo pin cần phải có một chút lực mạnh và bạn không muốn hộp đựng pin rơi ra bất cứ đâu.

Bước 2: Vi điều khiển và mạch

Vi điều khiển và mạch
Vi điều khiển và mạch
Vi điều khiển và mạch
Vi điều khiển và mạch
Vi điều khiển và mạch
Vi điều khiển và mạch

Tôi đặt công tắc nguồn trước Arduino UNO để khi bạn bật công tắc thì không có gì sử dụng năng lượng từ các bộ pin. Điều này sẽ giúp pin kéo dài lâu nhất có thể khi dự án không được bật. Bo mạch Arduino nổi tiếng là kém quản lý điện năng - chúng sử dụng rất nhiều dòng điện nếu chúng được bật ngay cả khi chúng không chủ động làm bất cứ điều gì.

Cắm đầu dương của bộ pin vào VIN (đầu vào điện áp) của bộ vi điều khiển để nó sử dụng bộ điều chỉnh điện áp tích hợp của bộ điều khiển để giảm điện áp xuống 5V mà nó cần. Nếu chúng tôi cấp nguồn cho nhiều đèn hơn, chúng tôi có thể cần sử dụng bộ điều chỉnh điện áp riêng cho chúng, nhưng UNO sẽ có thể xử lý 5 đèn LED.

Tôi đã sử dụng một điện trở giữa đầu ra dữ liệu và dải đèn LED để làm mịn tín hiệu - nếu không có điện trở, bạn có thể nhận được các pixel nhấp nháy ngẫu nhiên. Kích thước của điện trở không thực sự quan trọng, bất cứ thứ gì từ 50Ω đến 400Ω đều hoạt động.

Bước 3: Đèn sợi quang

Image
Image
Đèn sợi quang
Đèn sợi quang
Đèn sợi quang
Đèn sợi quang

Sau một số thử nghiệm và sai sót, cuối cùng tôi đã tìm ra một cách tốt để đưa các sợi cáp quang qua canvas.

  1. Dùng chiếc kim khâu lớn nhất mà bạn có để chọc một lỗ qua mặt trước của tấm vải và tấm xốp. Tôi khuyên bạn nên chọc mọi lỗ mà bạn muốn ngay từ đầu để bạn có thể lật lại và xem nơi bạn có thể / không thể đặt các kẹp tổ chức cáp của mình
  2. Lấy một chiếc kìm có mũi kim và lấy sợi cáp quang cách đầu chưa đầy một cm
  3. Chọc sợi cáp quang qua lỗ bạn đã tạo bằng kim
  4. Định tuyến sợi qua các kẹp nhựa khác nhau đến nơi nó dài hơn một chút so với mức cần thiết - chúng ta sẽ cắt nó sau
  5. Với súng bắn keo nóng của bạn ở cài đặt nhiệt độ THẤP (nếu có tùy chọn đó), hãy nhỏ một giọt keo nóng lên sợi quang nơi nó chọc qua bảng xốp. Ngoài ra, bạn có thể sử dụng thứ màu xanh lam đó. Keo nóng làm biến dạng sợi một chút nhưng nó không có vẻ làm rối loạn chất lượng quang học quá nhiều
  6. Cắt sợi vải ra khỏi tấm vải một chút bằng cách sử dụng máy cắt dây.

Để đẩy nhanh quá trình, bạn có thể chọc nhiều sợi liên tiếp trước khi thực hiện keo nóng. Chúng thường phải ở đúng vị trí của riêng bạn.

Hãy cẩn thận để không làm đứt hoặc bẹp các sợi cáp quang trên bàn - chúng sẽ bị đứt và nếu làm cho sợi quá ngắn thì bạn sẽ rất buồn và phải làm lại. Sử dụng bộ pin làm đối trọng để bạn có thể đặt khung ảnh ít hơn một nửa trên bàn làm việc.

Bởi vì tôi đã sử dụng bảng xốp màu trắng thay vì màu đen nên có rất nhiều ánh sáng chiếu qua khi đèn LED bật sáng. Để khắc phục, tôi đã dán một số lá nhôm vào giữa đèn và khung.

Sử dụng ống co nhiệt để giữ từng bó sợi quang lại với nhau.

  1. Cắt các sợi cho bó có chiều dài xấp xỉ bằng nhau
  2. Đưa phần qua ống co nhiệt
  3. Sử dụng súng nhiệt hoặc mỏ hàn để làm co lại. Nếu bạn đang sử dụng bàn ủi hàn, chỉ cần để mặt của bàn ủi chạm nhẹ vào ống và nó sẽ co lại. Nó không nên làm chảy ống vì nó được thiết kế cho một ít nhiệt.

Cuối cùng, tôi sử dụng keo nóng để gắn phần cuối của bó vào mỗi đèn LED. Tôi đã sử dụng rất nhiều keo nóng để các sợi thực sự nhận được ánh sáng từ mỗi điốt đỏ / xanh lá cây / xanh lam trong ánh sáng - khi các sợi thực sự gần với ánh sáng sẽ có màu "trắng" (thực sự là đỏ và xanh lá cây và xanh lam) sau đó một số sợi sẽ chỉ có màu đỏ và một số sẽ có màu xanh lá cây, thay vì tất cả đều có màu trắng. Điều này có thể được cải thiện bằng cách sử dụng một mảnh giấy hoặc thứ gì đó khác để khuếch tán nó, nhưng keo nóng đã hoạt động đủ tốt đối với tôi.

Bước 4: Lập trình

Trong lập trình này, tôi đã sử dụng threelibraries

FastLED - một thư viện tuyệt vời để điều khiển dải LED WS2812 (và nhiều dải LED có địa chỉ khác) -

Arduino Low Power - Tôi không biết điều này thực sự tiết kiệm được bao nhiêu điện năng, nhưng nó rất dễ thực hiện và sẽ giúp tiết kiệm một chút điện năng trên chức năng chỉ là đèn trắng và sau đó trì hoãn mãi mãi.

EEPROM - Được sử dụng để đọc / lưu trữ chế độ hiện tại của dự án. Điều này cho phép dự án tăng chế độ màu mỗi khi bạn tắt và bật lại, điều này giúp loại bỏ sự cần thiết của một nút riêng biệt để thay đổi chế độ. Thư viện EEPROM được cài đặt bất cứ khi nào bạn cài đặt Arduino IDE.

Tôi cũng sử dụng một bản phác thảo để làm lấp lánh ánh sáng mà người khác đã thiết lập. Nó làm sáng ngẫu nhiên một pixel từ màu cơ bản đến màu cao nhất và sau đó giảm xuống. https://gist.github.com/kriegsman/88954aae22b03a66… (nó cũng sử dụng thư viện FastLED)

Tôi cũng đã sử dụng plugin vMicro cho Visual Studio - đây là phiên bản nâng cấp của Arduino IDE. Nó có rất nhiều chức năng tự động hoàn thành hữu ích và làm nổi bật các vấn đề trong mã của bạn mà không cần phải biên dịch nó. Nó có giá 15 đô la nhưng rất xứng đáng nếu bạn định thực hiện nhiều hơn một dự án Arduino và nó sẽ buộc bạn phải tìm hiểu về Visual Studio, một chương trình siêu mạnh mẽ.

(Tôi cũng đính kèm tệp.ino mã vì máy chủ lưu trữ có thể hướng dẫn của Github Gist phá hủy rất nhiều không gian trống trong tệp)

Mã Arduino chạy 4 chế độ màu trên Arduino UNO cho một số đèn dải LED WS2812B sử dụng thư viện FastLED

#bao gồm
#bao gồm
#bao gồm
// Thiết lập FastLED
# xác địnhNUM_LEDS4
# definePIN3 // Chân dữ liệu cho dải LED
CRGB đã dẫn [NUM_LEDS];
// Thiết lập lấp lánh
#defineBASE_COLORCRGB (2, 2, 2) // Màu nền cơ bản
#definePEAK_COLORCRGB (255, 255, 255) // Màu cao nhất lấp lánh lên đến
// Số lượng để tăng màu theo từng vòng lặp khi nó trở nên sáng hơn:
#defineDELTA_COLOR_UPCRGB (4, 4, 4)
// Số lượng để giảm màu theo từng vòng lặp khi nó trở nên mờ hơn:
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Cơ hội mỗi pixel bắt đầu sáng lên.
// 1 hoặc 2 = một vài pixel sáng tại một thời điểm.
// 10 = nhiều pixel sáng cùng một lúc.
# xác địnhCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
byte runMode;
byte globalBright = 150;
byte globalDelay = 20; // Tốc độ trễ cho lấp lánh
địa chỉ byte = 35; // Địa chỉ để lưu chế độ chạy
voidsetup ()
{
FastLED.addLeds (đã dẫn, NUM_LEDS);
FastLED.setCorrection (Tiêu biểuLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Lấy chế độ để chạy
runMode = EEPROM.read (địa chỉ);
// Tăng runmode lên 1
EEPROM.write (địa chỉ, runMode + 1);
}
voidloop ()
{
chuyển đổi (runMode)
{
// Màu trắng đồng nhất
case1: fill_solid (led, NUM_LEDS, CRGB:: White);
FastLED.show ();
DelayForever ();
nghỉ;
// Chập chờn từ từ
case2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
nghỉ;
// Lấp lánh nhanh chóng
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
nghỉ;
//Cầu vồng
case4:
RunRainbow ();
nghỉ;
// Chỉ mục ngoài phạm vi, đặt lại thành 2 và sau đó chạy chế độ 1.
// Khi arduino khởi động lại, nó sẽ chạy chế độ 2, nhưng bây giờ hãy chạy chế độ 1
vỡ nợ:
EEPROM.write (địa chỉ, 2);
runMode = 1;
nghỉ;
}
}
voidRunRainbow ()
{
byte * c;
uint16_t tôi, j;
trong khi (đúng)
{
for (j = 0; j <256; j ++) {// 1 chu kỳ của tất cả các màu trên bánh xe
cho (i = 0; i <NUM_LEDS; i ++) {
c = Bánh xe (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, * c, * (c + 1), * (c + 2));
}
FastLED.show ();
trì hoãn (globalDelay);
}
}
}
byte * Bánh xe (byte WheelPos) {
byte tĩnh 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;
}
khác {
WheelPos - = 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
trả lại c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
trong khi (đúng)
{
cho (uint16_t i = 0; i <NUM_LEDS; i ++) {
if (PixelState == SteadyDim) {
// pixel này hiện là: SteadyDim
// vì vậy chúng tôi ngẫu nhiên xem xét việc làm cho nó bắt đầu sáng hơn
nếu (ngẫu nhiên8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// pixel này hiện là: GettingBrighter
// vì vậy nếu nó ở màu cao nhất, hãy chuyển nó sang mờ hơn một lần nữa
if (leds > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
khác {
// nếu không, chỉ cần tiếp tục làm sáng nó:
đã dẫn + = DELTA_COLOR_UP;
}
}
else {// lại mờ đi
// pixel này hiện là: GettingDimmerAgain
// vì vậy nếu nó trở lại màu cơ bản, hãy chuyển nó sang độ mờ ổn định
if (leds <= BASE_COLOR) {
đã dẫn = BASE_COLOR; // đặt lại về màu cơ bản chính xác, trong trường hợp chúng tôi chụp quá mức
PixelState = SteadyDim;
}
khác {
// nếu không, chỉ cần tiếp tục làm mờ nó:
đã dẫn - = DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // khởi tạo tất cả các pixel thành SteadyDim.
fill_solid (dẫn, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
trong khi (đúng)
{
chậm trễ (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, byte đỏ, byte xanh, byte xanh) {
// FastLED
đèn led [Pixel].r = red;
đèn led [Pixel].g = xanh lục;
led [Pixel].b = blue;
}

xem rawFiberOptic_ClemsonPic.ino được lưu trữ với ❤ bởi GitHub

Bước 5: Sản phẩm cuối cùng

Sản phẩm cuối cùng
Sản phẩm cuối cùng
Sản phẩm cuối cùng
Sản phẩm cuối cùng
Sản phẩm cuối cùng
Sản phẩm cuối cùng

Ta-da! Tôi hy vọng tài liệu có thể hướng dẫn này sẽ truyền cảm hứng cho những người khác thực hiện dự án tương tự của riêng họ. Nó thực sự không khó để làm và tôi ngạc nhiên là chưa có ai làm và viết một hướng dẫn cặn kẽ về nó.

Đề xuất: