Mục lục:

Starry Sky Led Tie: 9 bước (có hình ảnh)
Starry Sky Led Tie: 9 bước (có hình ảnh)

Video: Starry Sky Led Tie: 9 bước (có hình ảnh)

Video: Starry Sky Led Tie: 9 bước (có hình ảnh)
Video: Rồi cay luônn 🥹🥹 2024, Tháng mười một
Anonim
Image
Image
Starry Sky Led Tie
Starry Sky Led Tie
Starry Sky Led Tie
Starry Sky Led Tie

Một thời gian trước, tôi đã tìm thấy một món đồ chơi trẻ em bằng sợi quang tại một cửa hàng đô la và bắt đầu nghĩ về những gì tôi có thể làm với nó.

Một trong những ý tưởng điên rồ mà tôi có, đó là tạo ra một chiếc cà vạt với hiệu ứng của bầu trời đầy sao.

Tôi vẫn còn một số arduino pro mini, bo mạch và pin adafruit đặt xung quanh có thể phù hợp với dự án này.

Vì vậy, ngay sau khi tôi tìm thấy một chiếc cà vạt rộng đẹp trong một tiệm cầm đồ ở thị trấn của tôi và tìm thấy một chiếc hộp có thể phù hợp với phần cứng, tôi đã quyết định mua nó và thử chế tạo nó.

Hướng dẫn này cho bạn thấy tôi đã làm như thế nào.

Nó chạy trên arduino pro mini, bộ sạc adafruit powerboost 500, emmerich icr 18650nh-sp và 5 đèn LED trắng. Mã làm cho độ sáng thay đổi của đèn LED trở nên ngẫu nhiên. (40 giây đầu tiên của video có tốc độ gấp 3 lần)

Bước 1: Sơ đồ và phần cứng

Sơ đồ và phần cứng
Sơ đồ và phần cứng
Sơ đồ và phần cứng
Sơ đồ và phần cứng

Tôi đang sử dụng phần cứng sau:

- PCB với đèn LED trắng băng và điện trở 220 Ohm.

- Arduino pro mini (tôi đã sử dụng hàng nhái)

- Bộ sạc Adafruit Powerboost 500

- Pin Emmerich Li-ion ICR-18650NH-SP

- Sợi quang (với các kích cỡ khác nhau)

Bước 2: Làm cho PCB Hosting trở thành đèn LED

Làm cho PCB Hosting trở thành đèn LED
Làm cho PCB Hosting trở thành đèn LED
Làm cho PCB Hosting trở thành đèn LED
Làm cho PCB Hosting trở thành đèn LED
Làm cho PCB Hosting trở thành đèn LED
Làm cho PCB Hosting trở thành đèn LED

Tôi cắt một dải PCB để giữ đèn LED và sử dụng các chân LED để hàn nó vào PCB chính.

Kết nối tất cả các cực âm (-) với GND và sử dụng một nửa số chân để hàn nó bị mắc kẹt vào PCB chính.

Kết nối tất cả các cực dương (+) với điện trở và với cáp với arduino.

Mỗi đèn LED phải được kết nối với một trong các cổng PWM sau: 3, 5, 6, 9, 10, 11

Ngớ ngẩn là tôi đã mắc rất nhiều lỗi với dự án này và quên kiểm tra các cổng PWM chính xác, vì vậy tôi phải giải quyết một vài sau. Đã thử nghiệm với Cao / Thấp nên tôi chỉ nhận thấy điều này sau đó.

Tôi đã bắt đầu với 7 đèn LED, nhưng chỉ có 6 cổng PWM và một trong những đèn LED tôi bán lại đã chết. Tôi chỉ giữ 5 đèn LED hoạt động và không sử dụng đèn LED thứ 6.

Bước 3: Làm hộp

Làm hộp
Làm hộp
Làm hộp
Làm hộp
Làm hộp
Làm hộp
Làm hộp
Làm hộp

Tôi đã sử dụng Bosch GRO (như Dremel) và một mũi khoan để cắt hình dạng của pin, nút, cổng micro-usb, các tiêu đề từ Arduino và các sợi quang. (sử dụng mặt nạ chống bụi!)

Dán pin vào vỏ bằng 2 dải.

Đã sử dụng vít để gắn bo mạch Adafruit và PCB.

Ma sát khi đóng mở làm hỏng một số dây dẫn. Tôi đã phải giải quyết chúng và sử dụng keo để ngăn nó xảy ra lần nữa.

Bước 4: Chuẩn bị cà vạt

Chuẩn bị cà vạt
Chuẩn bị cà vạt
Chuẩn bị cà vạt
Chuẩn bị cà vạt
Chuẩn bị cà vạt
Chuẩn bị cà vạt

Tháo đường khâu từ phần dưới cùng của cà vạt để vừa với tấm cao su.

Để ẩn phần cứng và vẫn có thể truy cập nếu cần, tôi quyết định sử dụng dây kéo.

Tôi không giỏi về máy khâu, vì vậy mẹ tôi đã đặt một chiếc khóa kéo ở mặt sau của chiếc cà vạt.

Sau khi hoàn thành, tôi dán tấm cao su vào cà vạt. Tôi sợ sử dụng quá nhiều keo sẽ làm ướt vải và có thể nhìn thấy từ phía trước, vì vậy tôi đã cố gắng làm đều nó và không sử dụng quá nhiều. Nhìn chung thì có vẻ đẹp, nhưng ở một vài chỗ tôi nhận thấy quá nhiều hoặc quá ít keo, khiến nó thấm qua vải hoặc không dính vải tốt. May mắn thay, điều này hầu như chỉ có thể nhìn thấy từ khoảng cách gần trong ánh sáng rực rỡ.

Hộp và cà vạt bây giờ đã hoàn thành. Đã đến lúc kết dính các sợi quang học!

Bước 5: Keo sợi quang

Keo sợi quang
Keo sợi quang
Keo sợi quang
Keo sợi quang
Keo sợi quang
Keo sợi quang
Keo sợi quang
Keo sợi quang

Đồ chơi có một bó dây cáp quang lớn rất dễ bị đứt. Lúc đầu, tôi đã thử dán từng cái một, nhưng nhanh chóng nhận thấy rằng tốt hơn hết là tạo thành các bó nhỏ và dán chúng vào đèn LED cùng một lúc. Điều đó sẽ giúp bạn dễ dàng giữ ổn định cho đến khi keo khô. Lộn xộn đèn LED đầu tiên tìm ra điều này.

Hãy chắc chắn sử dụng một loại keo trong suốt! Cái tôi sử dụng khô rất chậm và keo khô nhanh mà tôi đã thử trên đèn LED đầu tiên chuyển sang màu trắng, làm cho một số sợi từ đèn LED đầu tiên kém sáng hơn.

Tôi đã dán các tấm cao su nhỏ màu đen để ngăn ánh sáng bị rò rỉ lên trên và để ngăn cách đèn LED.

Một trong những tấm ngăn không cho vỏ máy đóng lại nên tôi đã thêm một sợi dây chun để giữ cho nắp đóng lại.

Bước 6: Đưa sợi quang qua dây buộc

Đưa sợi quang qua dây buộc
Đưa sợi quang qua dây buộc
Đưa sợi quang qua dây buộc
Đưa sợi quang qua dây buộc
Đưa sợi quang qua dây buộc
Đưa sợi quang qua dây buộc

Bắt đầu từ phần dưới cùng, tôi dùng kim ghim các lỗ và luồn từng sợi một. Mỗi sợi của đèn LED trải rộng ngẫu nhiên trên dây buộc.

Tôi dán một dải màu đen ở mặt sau được cho là đi hết phần dây buộc nhỏ hơn để giữ trọng lượng của hộp, nhưng sau khi tôi đặt tất cả các dây qua và cảm thấy độ căng của dây, tôi quyết định dán tất cả mọi thứ với cà vạt là một ý tưởng tốt hơn và cắt bỏ dải.

Vì dây cáp quang của đồ chơi quá ngắn, nên rất khó để gắn chúng vào tất cả các dây buộc. Tôi bị hạn chế trong việc định vị hộp và gặp khó khăn trong việc làm cho mọi thứ phẳng như tôi muốn.

Bước 7: Dán sợi quang vào dây buộc

Keo sợi quang vào dây buộc
Keo sợi quang vào dây buộc
Keo sợi quang vào dây buộc
Keo sợi quang vào dây buộc
Keo sợi quang vào dây buộc
Keo sợi quang vào dây buộc
Keo sợi quang vào dây buộc
Keo sợi quang vào dây buộc

Tôi dán tất cả các dây cáp quang vào tấm cao su để tránh các dây bị kéo ra khỏi tấm cao su và làm cho dây buộc bằng phẳng.

Để đảm bảo rằng tôi không dán kẹp vào cà vạt khi tạo áp lực lên nó, tôi đặt một ít giấy vào giữa. Nó trông không tuyệt vời nhưng hoạt động tốt. Và bạn không nhìn thấy nó khi nó được đóng lại.

Sau khi keo khô, tôi cắt các dây ở mặt trước và cắt bớt một chút miếng cao su ngay trên dây cao nhất, vì dây buộc hơi dài.

Những bức ảnh với chiếc áo sơ mi trắng được thực hiện trước khi tôi cắt đoạn cao su cuối cùng đó.

Bước 8: Mã

Dưới đây là mã tôi đã viết cho cà vạt.

Tất cả các đèn LED đều có "mức trung bình" (không thực sự là mức trung bình mà là độ sáng trung bình).

Ngay khi đạt đến mức trung bình đó, nó sẽ quyết định 3/4 cơ hội chuyển sang độ sáng thấp hơn. Nó cũng đặt ngẫu nhiên độ sáng tối thiểu mới, độ sáng tối đa, thời gian chờ cho độ sáng tối thiểu và tối đa và tốc độ tăng hoặc giảm mỗi vòng (1-255) từ 5 giá trị đặt trước. Sau đó, nó sẽ thực hiện một chu kỳ cho đến khi nó đạt mức trung bình một lần nữa. Chỉ có 2 đèn LED có thể ở chu kỳ cao cùng một lúc.

Mọi trạng thái được biểu thị bằng một giá trị số nguyên (1-7) xác định xem nó có đang ở mức trung bình thấp, trung bình thấp, chờ thấp, đang cập nhật, v.v.

Để biết thông tin về cách tải mã lên arduino, vui lòng xem tại www.arduino.cc

/ * Starry Sky Tie * * Đây là một tập lệnh để làm mờ ngẫu nhiên 5 đèn LED từ độ sáng trung bình đến thấp hơn * hoặc cao hơn với các cài đặt thời gian thấp hơn, cao hơn và ngẫu nhiên * để trông giống như một bầu trời đầy sao khi được sử dụng với sợi quang. * Trong trường hợp này, những điều này sẽ được thực hiện một cách ràng buộc. * * Cơ hội tăng / giảm = 1/4 tăng, 3/4 giảm, với tối đa 2 * tăng lên tối đa cùng một lúc. * * Mức trung bình không đổi. * Các tùy chọn tối thiểu, tối đa và thời gian thay đổi ngẫu nhiên * từ 5 tùy chọn mỗi khi đèn LED đạt mức trung bình trở lại. * * Được tạo bởi Billy Jaspers, tháng 5 năm 2019. *

/ Khai báo các chân

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

// Biến thời gian

thời gian dài hiện tại không được ký; thời gian chờ đợi lâu không có dấu [5]; unsigned long lastRound;

// Biến LED

int BrightMin [5] = {10, 10, 10, 10, 10}; // Độ sáng tối thiểu int BrightAvg [5] = {200, 200, 200, 200, 200}; // Độ sáng trung bình int BrightMax [5] = {240, 240, 240, 240, 240}; // Độ sáng tối đa int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Thời gian chờ int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Thời gian chờ int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Thời gian chờ int increment [5] = {2, 5, 4, 5, 2}; // Tăng độ sáng int currentBright [5] = {200, 230, 210, 210, 235}; // Độ sáng hiện tại

// Khả năng biến LED

int BrightMinPos [5] = {5, 20, 40, 5, 20}; // Khả năng độ sáng tối thiểu int BrightMaxPos [5] = {240, 245, 230, 225, 245}; // Khả năng độ sáng tối đa int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Thời gian chờ ở các khả năng có độ sáng thấp int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Thời gian chờ ở các khả năng có độ sáng cao int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Thời gian chờ ở các khả năng có độ sáng trung bình int incrementPos [5] = {2, 4, 5, 3, 1}; // tăng khả năng độ sáng

// Biến

khởi động bool = true; // Có cần bắt đầu cài đặt bắt đầu không?

// Các biến định hướng

/ * 0 = Đang chờ ở mức Trung bình 1 = đang chờ Trung bình xuống Thấp 2 = đang chờ Thấp 3 = sắp Thấp đến Trung bình 4 = sắp Trung bình đến Tối đa 5 = chờ ở Tối đa 6 = sắp Cao đến Trung bình 7 = Đang cập nhật biến * / int statusLED [5] = {0, 0, 0, 0, 0}; int amountHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // Có phải Led đang chờ không?

// Các biến ngẫu nhiên

số ngẫu nhiên dài; // Long để lưu trữ số ngẫu nhiên dài randomNumberTwo; // Dài để lưu trữ số ngẫu nhiên thứ hai

// bộ đếm

int i = 0; // Bộ đếm cho vòng lặp chính

void setup () {

Serial.begin (115200); // Bắt đầu serial randomSeed (analogRead (A0)); // Đặt các hạt ngẫu nhiên

// Khai báo kết quả đầu ra

pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }

// Ghi dữ liệu vào đèn LED

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

// Vòng lặp chính

void loop () {if (startup) {// Cài đặt khởi động lastRound = millis (); // Đặt lastRound cho boot writeToLED (); // Ghi dữ liệu bắt đầu vào LED startup = false; // Tắt khởi động} currentTime = millis (); // Đặt thời gian hiện tại

if (currentTime - lastRound> = refreshRate) {

for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Đang cập nhật Led randomNumber = random (5); BrightMin = BrightMinPos [randomNumber]; // Đặt giá trị ngẫu nhiên cho độ sáng tối thiểu randomNumber = random (5); BrightMax = BrightMaxPos [randomNumber]; // Đặt giá trị ngẫu nhiên cho độ sáng tối đa randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Đặt giá trị ngẫu nhiên cho thời gian chờ thấp randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Đặt giá trị ngẫu nhiên cho thời gian chờ cao randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Đặt giá trị ngẫu nhiên cho thời gian chờ trung bình randomNumber = random (5); increment = incrementPos [randomNumber]; // Đặt giá trị ngẫu nhiên cho giá trị gia tăng randomNumber = random (2); // Đặt giá trị ngẫu nhiên cho hướng randomNumberTwo = random (2); // Đặt giá trị ngẫu nhiên cho hướng if (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = BrightAvg ) {statusLED = 0; // Nếu ở điểm thấp nhất: Chuyển đến Đang chờ Trung bình} else {currentBright = currentBright + increment ; // Khác: Độ sáng cao hơn}} else if (statusLED == 2) {// -2- Đang đợi Thấp if (! StatusWaiting ) {// Nếu không chờ đợi: waitTime = millis (); // Đặt trạng thái thời gian chờWaiting = true; // Bắt đầu chờ} else if (statusWaiting && currentTime-waitTime > = timeWaitLow ) {// Nếu chờ AND timeWaitAvg đã qua: statusWaiting = false; // Dừng trạng thái chờLED = 3; // Đặt statusLed thành Đang đợi cập nhật}} else if (statusLED == 1) {// -1- Chuyển từ Trung bình xuống Thấp if (currentBright <= BrightMin ) {statusLED = 2; // Nếu ở điểm thấp nhất: Chuyển đến Đang đợi Thấp} else {currentBright = currentBright -increment ; // Khác: Độ sáng thấp hơn}} else if (statusLED == 6) {// -6- Tối đa thành Trung bình if (currentBright = timeWaitMax ) {// Nếu chờ VÀ thời gianWaitAvg đã trôi qua: statusWaiting = false; // Dừng trạng thái chờLED = 6; // Đặt statusLed thành Đang chờ cập nhật}} else if (statusLED == 4) {// -4- Chuyển từ Avg thành Max if (currentBright > = BrightMax ) {statusLED = Số 5; // Nếu ở điểm thấp nhất: Chuyển đến Mức cao đang chờ} else {currentBright = currentBright + increment ; // Khác: Độ sáng cao hơn}} else if (statusLED == 0) {// -0- Đang đợi ở mức Trung bình if (! StatusWaiting ) {// Nếu không đợi: waitTime = millis (); // Đặt trạng thái thời gian chờWaiting = true; // Bắt đầu chờ} else if (statusWaiting && currentTime-waitTime > = timeWaitAvg ) {// Nếu chờ VÀ thời gianWaitAvg đã trôi qua: statusWaiting = false; // Dừng trạng thái chờLED = 7; // Đặt statusLed thành Đang chờ cập nhật}}} i = 0; lastRound = millis (); // Đặt khi vòng cuối cùng kết thúc. writeToLED (); // Ghi tất cả dữ liệu vào LED của}}

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

Image
Image
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

Tôi nghĩ rằng nó đã hoạt động tốt. Cà vạt không quá dày, cứng, dài hoặc nặng và hiệu ứng ngôi sao trông tuyệt vời.

Đề xuất: