สารบัญ:
- ขั้นตอนที่ 1: แผนผังและฮาร์ดแวร์
- ขั้นตอนที่ 2: การสร้าง PCB Hosting LED's
- ขั้นตอนที่ 3: การทำกล่อง
- ขั้นตอนที่ 4: เตรียมเน็คไท
- ขั้นตอนที่ 5: ติดกาวไฟเบอร์ออปติก
- ขั้นตอนที่ 6: การใส่ไฟเบอร์ออปติกผ่านเน็คไท
- ขั้นตอนที่ 7: การติดไฟเบอร์ออปติกกับ Tie
- ขั้นตอนที่ 8: รหัส
- ขั้นตอนที่ 9: ผลิตภัณฑ์ขั้นสุดท้าย
วีดีโอ: Starry Sky Led Tie: 9 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ไม่นานมานี้ ฉันพบของเล่นเด็กที่มีไฟเบอร์ออปติกที่ร้านขายเงินดอลลาร์ และเริ่มคิดว่าฉันจะทำอะไรกับมันได้บ้าง
ความคิดบ้าๆ อย่างหนึ่งที่ฉันมี คือการผูกมัดกับเอฟเฟกต์ของท้องฟ้าที่เต็มไปด้วยดวงดาว
ฉันยังมีบอร์ด adafruit และแบตเตอรี่ของ arduino pro mini อยู่ ซึ่งน่าจะเหมาะกับโครงการนี้
ทันทีที่ฉันพบเนคไทแบบกว้างๆ ในโรงรับจำนำในเมืองของฉัน และพบกล่องที่พอดีกับฮาร์ดแวร์ ฉันตัดสินใจไปหามันและลองสร้างมันขึ้นมา
คำแนะนำนี้แสดงให้คุณเห็นว่าฉันสร้างมันขึ้นมาได้อย่างไร
มันทำงานบน Arduino pro mini, ที่ชาร์จ adafruit powerboost 500, emmerich icr 18650nh-sp และ LED สีขาว 5 ดวง รหัสทำให้การเปลี่ยนแปลงความสว่างของ LED แบบสุ่ม (40 วินาทีแรกของวิดีโอมีความเร็ว 3x)
ขั้นตอนที่ 1: แผนผังและฮาร์ดแวร์
ฉันใช้ฮาร์ดแวร์ต่อไปนี้:
- PCB พร้อมไฟ LED สีขาวน้ำแข็งและตัวต้านทาน 220 โอห์ม
- Arduino pro mini (ฉันใช้น็อคออฟ)
- สายชาร์จ Adafruit Powerboost 500
- Emmerich Li-ion accu ICR-18650NH-SP
- ใยแก้วนำแสง (ขนาดต่างๆ)
ขั้นตอนที่ 2: การสร้าง PCB Hosting LED's
ฉันตัดแถบ PCB ออกเพื่อยึด LED และใช้หมุด LED เพื่อบัดกรีกับ PCB หลัก
เชื่อมต่อแคโทด (-) ทั้งหมดเข้ากับ GND และใช้พินครึ่งหนึ่งในการบัดกรีที่ติดอยู่กับ PCB หลัก
เชื่อมต่อแอโนดทั้งหมด (+) เข้ากับตัวต้านทาน และต่อสายเคเบิลเข้ากับ Arduino
LED แต่ละดวงจะต้องเชื่อมต่อกับพอร์ต PWM ใดพอร์ตหนึ่งต่อไปนี้: 3, 5, 6, 9, 10, 11
ฉันทำผิดพลาดมากมายกับโปรเจ็กต์นี้ และลืมตรวจสอบพอร์ต PWM ที่ถูกต้อง ดังนั้นฉันจึงต้องขายต่อในภายหลัง ทดสอบด้วย High/Low ดังนั้นฉันจึงสังเกตเห็นในภายหลังเท่านั้น
ฉันเริ่มต้นด้วย LED 7 ดวง แต่มีพอร์ต PWM เพียง 6 พอร์ตและหนึ่งใน LED ที่ฉันขายต่อเสียชีวิต ฉันเพิ่งเก็บไฟ LED ที่ใช้งานได้ 5 ดวงและไม่ได้ใช้อันที่ 6
ขั้นตอนที่ 3: การทำกล่อง
ฉันใช้ Bosch GRO (เช่น Dremel) และสว่านเพื่อตัดรูปร่างของแบตเตอรี่ ปุ่ม พอร์ต micro-usb ส่วนหัวจาก Arduino และใยแก้วนำแสง (ใช้หน้ากากกันฝุ่น!)
ติดแบตเตอรี่เข้ากับเคสด้วยแถบ 2 แถบ
ใช้สกรูยึดบอร์ด Adafruit และ PCB
แรงเสียดทานจากการเปิดและปิดทำให้สายไฟบางเส้นเสียหาย ฉันต้องขายต่อและใช้กาวเพื่อป้องกันไม่ให้เกิดขึ้นอีก
ขั้นตอนที่ 4: เตรียมเน็คไท
นำตะเข็บออกจากส่วนล่างของเนคไทเพื่อให้พอดีกับแผ่นยาง
เพื่อซ่อนฮาร์ดแวร์และยังสามารถเข้าถึงได้หากจำเป็น ฉันตัดสินใจใช้ซิป
ฉันไม่ค่อยถนัดจักรเย็บผ้า แม่เลยเอาซิปที่หลังเนคไท
เสร็จแล้วก็ติดแผ่นยางในเนคไท ฉันกลัวที่จะใช้กาวมากเกินไปที่จะทำให้ผ้าอิ่มตัวและมองเห็นได้จากด้านหน้า ดังนั้นฉันจึงพยายามทำให้มันเท่ากันและอย่าใช้มากเกินไป โดยรวมแล้วดูดี แต่มีบางจุดที่ฉันสังเกตเห็นกาวมากเกินไปหรือน้อยเกินไป เพราะมันทะลุผ่านผ้าหรือติดผ้าได้ไม่ค่อยดี โชคดีที่สิ่งนี้แทบจะมองไม่เห็นจากระยะใกล้ในแสงจ้า
กล่องและเน็คไทเสร็จแล้ว ได้เวลาติดใยแก้วนำแสงแล้ว!
ขั้นตอนที่ 5: ติดกาวไฟเบอร์ออปติก
ของเล่นมีสายไฟเบอร์ออปติกมัดใหญ่หนึ่งเส้นที่แตกง่าย ตอนแรกฉันพยายามติดกาวทีละชิ้น แต่ไม่นานก็สังเกตเห็นว่าจะดีกว่าถ้าทำเป็นมัดเล็กๆ แล้วติดมันไว้กับ LED ในคราวเดียว ซึ่งจะทำให้ง่ายต่อการคงตัวจนกว่ากาวจะแห้ง ทำให้ LED ดวงแรกเกิดความสับสน
อย่าลืมใช้กาวใส! อันที่ฉันใช้ทำให้แห้งช้ามาก และกาวที่แห้งเร็วที่ฉันลองกับ LED ตัวแรกเปลี่ยนเป็นสีขาว ทำให้เส้นใยบางส่วนจาก LED ตัวแรกสว่างน้อยลง
ฉันติดแผ่นยางสีดำขนาดเล็กเพื่อป้องกันแสงรั่วที่ด้านบนและเพื่อแยกหลอด LED
แผ่นหนึ่งป้องกันไม่ให้เคสปิด ดังนั้นฉันจึงเพิ่มแถบยางเพื่อปิดฝา
ขั้นตอนที่ 6: การใส่ไฟเบอร์ออปติกผ่านเน็คไท
เริ่มจากด้านล่าง ฉันเจาะรูด้วยเข็มแล้วสอดเส้นใยเข้าไปทีละชิ้น เส้นใยของ LED แต่ละตัวจะกระจายแบบสุ่มทั่วเนคไท
ฉันติดแถบสีดำที่ด้านหลังซึ่งควรจะไปถึงส่วนเล็ก ๆ ของเนคไทเพื่อรักษาน้ำหนักของกล่อง แต่หลังจากที่ฉันใส่สายไฟทั้งหมดเข้าไปและรู้สึกถึงความตึงของสายไฟ ฉันก็ตัดสินใจติดกาว ทุกอย่างที่ผูกเป็นความคิดที่ดีกว่าและตัดแถบออก
เนื่องจากสายไฟเบอร์ออปติกของของเล่นนั้นสั้นมาก มันจึงรัดแน่นไปหมด ฉันถูกจำกัดการวางตำแหน่งกล่องและมีเวลาที่ยากลำบากในการทำทุกอย่างให้แบนราบตามที่ฉันต้องการ
ขั้นตอนที่ 7: การติดไฟเบอร์ออปติกกับ Tie
ฉันติดสายไฟเบอร์ออปติกทั้งหมดเข้ากับแผ่นยางเพื่อป้องกันไม่ให้สายดึงออกจากแผ่นยางและทำให้เนคไทแบนราบ
เพื่อให้แน่ใจว่าฉันไม่ได้ติดที่หนีบกับเนคไทขณะกดดัน ฉันจึงใส่กระดาษไว้ตรงกลาง มันดูไม่ค่อยดีนัก แต่ใช้งานได้ดี และคุณไม่เห็นมันเมื่อมันถูกปิด
หลังจากที่กาวแห้ง ฉันตัดสายไฟที่ด้านหน้าและตัดแผ่นยางที่อยู่เหนือเส้นลวดด้านบนออกเล็กน้อย ทำให้เนคไทยาวไปหน่อย
รูปถ่ายกับเสื้อเชิ้ตสีขาวเป็นภาพก่อนที่ฉันจะตัดยางชิ้นสุดท้ายออก
ขั้นตอนที่ 8: รหัส
ใต้รหัสที่ฉันเขียนเพื่อผูกเน็คไท
LED ทั้งหมดมีการตั้งค่า " เฉลี่ย " (จริง ๆ แล้วไม่ใช่ค่าเฉลี่ย แต่เป็นความสว่างระดับกลาง)
ทันทีที่ถึงค่าเฉลี่ยนั้น มันจะตัดสินใจโดยมีโอกาส 3/4 ที่จะปรับความสว่างให้ต่ำลง นอกจากนี้ยังสุ่มตั้งค่าความสว่างขั้นต่ำใหม่ ความสว่างสูงสุด เวลารอความสว่างต่ำสุดและสูงสุด และความเร็วที่เพิ่มขึ้นหรือลดลงทุกรอบ (1-255) จากค่าที่ตั้งไว้ล่วงหน้า 5 ค่า จากนั้นจะทำวงจรจนกว่าจะถึงค่าเฉลี่ยอีกครั้ง มีเพียง 2 LEDs เท่านั้นที่สามารถอยู่ในรอบสูงได้ในเวลาเดียวกัน
ทุกสถานะจะแสดงด้วยค่าจำนวนเต็ม (1-7) ซึ่งกำหนดว่าจะมีค่าเฉลี่ยต่ำ เฉลี่ยต่ำ รอต่ำ อัปเดต ฯลฯ
สำหรับข้อมูลเกี่ยวกับการอัปโหลดโค้ดไปยัง Arduino โปรดดูที่ www.arduino.cc
/* Starry Sky Tie * * นี่คือสคริปต์ที่จะสุ่มหรี่ไฟ LED 5 ดวงจากค่าเฉลี่ยเป็นความสว่างที่ต่ำกว่า * หรือสูงกว่าด้วยการตั้งค่าสุ่มที่ต่ำกว่า สูงขึ้น และเวลา * เพื่อให้ดูเหมือนท้องฟ้าเต็มไปด้วยดวงดาวเมื่อใช้กับไฟเบอร์ออปติก * ในกรณีนี้ สิ่งเหล่านี้จะถูกนำมาใช้เสมอกัน * * โอกาสขึ้น/ลง = 1/4 ขึ้น, 3/4 ลง โดยสูงสุด 2 * ขึ้นไปสูงสุดพร้อมกัน * * ค่าเฉลี่ยยังคงเท่าเดิม * ตัวเลือกต่ำสุด สูงสุด และเวลาจะเปลี่ยนแบบสุ่ม * จาก 5 ตัวเลือกทุกครั้งที่ LED ไปถึงค่าเฉลี่ยอีกครั้ง * * สร้างโดย Billy Jaspers พฤษภาคม 2019 *
/ ประกาศหมุด
int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;
// ตัวแปรเวลา
ปัจจุบันเวลายาวที่ไม่ได้ลงนาม; เวลารอนานที่ไม่ได้ลงนาม[5]; LastRound ยาวที่ไม่ได้ลงนาม;
// ตัวแปร LED
int brightMin [5] = { 10, 10, 10, 10, 10 }; // ความสว่างขั้นต่ำ int brightAvg [5] = { 200, 200, 200, 200, 200 }; // ความสว่างเฉลี่ย int brightMax [5] = { 240, 240, 240, 240, 240 }; // ความสว่างสูงสุด int timeWaitLow[5] = { 1000, 1000, 1000, 1000, 1000 }; // เวลารอ int timeWaitAvg[5] = { 5000, 5000, 5000, 5000, 5000 }; // เวลารอ int timeWaitMax[5] = { 4000, 3000, 3000, 3000, 3000 }; // เวลารอเพิ่มขึ้นทีละขั้น [5] = { 2, 5, 4, 5, 2 }; // เพิ่มความสว่าง int currentBright[5]= { 200, 230, 210, 210, 235 }; // ความสว่างปัจจุบัน
// ความเป็นไปได้ของตัวแปร LED
int brightMinPos[5] = { 5, 20, 40, 5, 20 }; // ความเป็นไปได้ของความสว่างขั้นต่ำ int brightMaxPos [5] = { 240, 245, 230, 225, 245 }; // ความเป็นไปได้ของความสว่างสูงสุด int timeLowPos[5] = { 3000, 5000, 4000, 2000, 1000 }; // เวลารอสำหรับความเป็นไปได้ของความสว่างต่ำ int timeHighPos[5] = { 3000, 1000, 500, 2000, 4000 }; // เวลารอสำหรับความเป็นไปได้ของความสว่างสูง int timeAvgPos[5] = { 3000, 5000, 4000, 7000, 8000 }; // เวลารอสำหรับความเป็นไปได้ของความสว่างโดยเฉลี่ย int incrementPos[5] = { 2, 4, 5, 3, 1 }; // เพิ่มความเป็นไปได้ของความสว่าง
// ตัวแปร
บูลเริ่มต้น = จริง; // จำเป็นต้องเริ่มการตั้งค่าเริ่มต้นหรือไม่?
// ตัวแปรทิศทาง
/* 0 = กำลังรอที่ค่าเฉลี่ย 1 = กำลังไปเฉลี่ยไปต่ำสุด 2 = รอต่ำ 3 = กำลังไปต่ำถึงค่าเฉลี่ย 4 = กำลังรอโดยเฉลี่ยถึงสูงสุด 5 = รอที่ค่าสูงสุด 6 = กำลังขึ้นสูงไปยังค่าเฉลี่ย 7 = กำลังอัปเดตตัวแปร*/ สถานะ intLED[5] = { 0, 0, 0, 0, 0 }; จำนวนเต็ม HighLED = 0; int refreshRate = 50; bool statusWaiting[5] = { เท็จ เท็จ เท็จ เท็จ เท็จ }; // ลีดรออยู่ไหม?
// ตัวแปรสุ่ม
RandomNumber ยาว; // ยาวเพื่อเก็บหมายเลขสุ่มยาว randomNumberTwo; // ลองเก็บเลขสุ่มตัวที่สอง
// เคาน์เตอร์
int ผม = 0; // ตัวนับสำหรับลูปหลัก
การตั้งค่าเป็นโมฆะ () {
Serial.begin (115200); // เริ่มอนุกรม randomSeed(analogRead(A0)); // ตั้งค่าสุ่มเมล็ด
// ประกาศผลลัพธ์
โหมดพิน (LED01, เอาต์พุต); โหมดพิน (LED02, เอาต์พุต); โหมดพิน (LED03, เอาต์พุต); โหมดพิน (LED04, เอาต์พุต); โหมดพิน (LED05, เอาต์พุต); }
// เขียนข้อมูลไปยัง LEDs
เป็นโมฆะ writeToLED () { analogWrite (LED01, currentBright[0]); analogWrite (LED02, ปัจจุบันสว่าง [1]); analogWrite (LED03, ปัจจุบันสว่าง [2]); analogWrite (LED04, ปัจจุบันสดใส[3]); analogWrite (LED05, ปัจจุบันสว่าง [4]); }
// วงหลัก
วงเป็นโมฆะ () { ถ้า (เริ่มต้น) { // การตั้งค่าเริ่มต้น lastRound = millis (); // ตั้งค่า lastRound สำหรับการบูต writeToLED(); // เขียนข้อมูลเริ่มต้นเพื่อเริ่มต้น LED = false; // ปิดการเริ่มต้น } currentTime = millis(); // ตั้งเวลาปัจจุบัน
ถ้า (เวลาปัจจุบัน - รอบสุดท้าย >= อัตราการรีเฟรช){
สำหรับ (i=0;i<5;i++){ if (statusLED == 7){ // -7- กำลังอัปเดต Led randomNumber = random(5); brightMin = brightMinPos[randomNumber]; // ตั้งค่าสุ่มสำหรับความสว่างขั้นต่ำ randomNumber = random(5); brightMax = brightMaxPos[randomNumber]; // ตั้งค่าสุ่มสำหรับความสว่างสูงสุด randomNumber = random(5); timeWaitLow = timeLowPos[randomNumber]; // ตั้งค่าสุ่มสำหรับเวลารอน้อย randomNumber = สุ่ม(5); timeWaitMax = timeHighPos[randomNumber]; // ตั้งค่าสุ่มสำหรับเวลารอสูง randomNumber = สุ่ม(5); timeWaitAvg = timeAvgPos[randomNumber]; // ตั้งค่าสุ่มสำหรับเวลารอเฉลี่ย randomNumber = สุ่ม(5); การเพิ่มขึ้น = incrementPos[randomNumber]; // ตั้งค่าสุ่มสำหรับค่าที่เพิ่มขึ้น randomNumber = random(2); // ตั้งค่าสุ่มสำหรับทิศทาง randomNumberTwo = random(2); // ตั้งค่าสุ่มสำหรับทิศทาง if (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg){ statusLED = 0; // ถ้าอยู่ที่จุดต่ำสุด: ไปที่ Waiting Avg }else{ currentBright = currentBright+increment; // Else: Higher Brightness } }else if (statusLED == 2){ // -2- Waiting Low if (!statusWaiting){ // ถ้าไม่รอ: waitTime = millis(); // ตั้งค่าเวลารอ statusWaiting = true; // เริ่มรอ }else if(statusWaiting && currentTime-waitingTime >= timeWaitLow){ // หากรอ AND timeWaitAvg ผ่านไป: statusWaiting = false; // หยุดรอ statusLED = 3; // ตั้งค่า statusLed เป็น Waiting for update } }else if (statusLED == 1){ // -1- กำลังเฉลี่ยไปที่ Low if (currentBright <= brightMin){ statusLED = 2; // ถ้าจุดต่ำสุด: ไปที่ Waiting Low }else{ currentBright = currentBright-increment; // อื่นๆ: ลดความสว่าง } }else if (statusLED == 6){ // -6- กำลังสูงสุดเป็น Avg if (currentBright = timeWaitMax){ // หากรอ AND timeWaitAvg: statusWaiting = false; // หยุดรอ statusLED = 6; // ตั้งค่า statusLed เป็น Waiting for update } }else if (statusLED == 4){ // -4- กำลังเฉลี่ยไปที่ Max if (currentBright >= brightMax){ statusLED = 5; // ถ้าจุดต่ำสุด: ไปที่ Waiting High }else{ currentBright = currentBright+increment; // Else: Higher Brightness } }else if (statusLED == 0){ // -0- Waiting at Average if (!statusWaiting){ // ถ้าไม่รอ: waitTime = millis(); // ตั้งค่าเวลารอ statusWaiting = true; // เริ่มรอ }else if(statusWaiting && currentTime-waitingTime >= timeWaitAvg){ // หากรอ AND timeWaitAvg ผ่านไป: statusWaiting = false; // หยุดรอ statusLED = 7; // ตั้งค่า statusLed เป็น Waiting for update } } } i=0; LastRound = มิลลิวินาที (); // กำหนดเมื่อรอบที่แล้วเสร็จ writeToLED(); // เขียนข้อมูลทั้งหมดไปยัง LED } }
ขั้นตอนที่ 9: ผลิตภัณฑ์ขั้นสุดท้าย
ฉันคิดว่ามันใช้ได้ผลดี เนคไทไม่หนา แข็ง ยาวหรือหนักเกินไป และเอฟเฟกต์รูปดาวดูน่าทึ่ง
แนะนำ:
Grid Tie Inverter: 10 ขั้นตอน (พร้อมรูปภาพ)
Grid Tie Inverter: โปรเจ็กต์เนื้อแน่น ห้ามพลาด! อินเวอร์เตอร์แบบ Grid Tie ช่วยให้คุณสามารถดันพลังงานเข้าสู่เต้ารับไฟฟ้าซึ่งเป็นความสามารถที่ยอดเยี่ยม ฉันพบว่าระบบอิเล็กทรอนิกส์กำลังและระบบควบคุมที่เกี่ยวข้องกับการออกแบบนั้นน่าสนใจ ดังนั้นฉันจึงสร้างระบบขึ้นมาเอง รายงานนี้เ
Tie Time Keeper: 6 ขั้นตอน (พร้อมรูปภาพ)
Tie Time Keeper: สิ่งสำคัญคือต้องสามารถบอกเวลาได้ แต่ใช่ว่าทุกคนจะชอบใส่นาฬิกาและใช้สมาร์ทโฟนของเราเพื่อตรวจสอบเวลาซึ่งดูเหมือนไม่จำเป็นเลยสักนิด ฉันชอบที่จะให้มือของฉันปลอดจากแหวน สร้อยข้อมือ และนาฬิกา เมื่อทำงานในอาชีพ
Sonic Bow Tie โดย David Boldevin Engen: 4 ขั้นตอน (พร้อมรูปภาพ)
Sonic Bow Tie โดย David Boldevin Engen: โบว์ไทด์ขนาดกะทัดรัดที่สามารถแสดงเสียงรอบข้างอย่างต่อเนื่องในความถี่ที่แตกต่างกันสี่ความถี่บนอาร์เรย์ LED 4x5 ที่มิเรอร์สองอัน บทช่วยสอนนี้จะอธิบายวิธีการทำหูกระต่ายที่จะทำให้คุณโดดเด่น ในฝูงชนใด ๆ สิ่งที่คุณจะเ
The Holi-Tie: 8 ขั้นตอน (พร้อมรูปภาพ)
The Holi-Tie: นี่คือ Holi-Tie เนคไทเทศกาลที่ออกแบบมาเพื่อสวมใส่ในช่วงวันหยุด Holi-Tie อิงจาก Ampli-Tie โดย Becky Stern ซึ่งใช้บอร์ด Flora อย่างหลวมๆ ใช้ไมโครคอนโทรลเลอร์ Circuit Python Express (CPX) เพื่อขับเคลื่อนแอนิเมชั่น NeoPixel และ
DIY Bow Tie --- มีไฟ!!: 9 ขั้นตอน (พร้อมรูปภาพ)
ผูกโบว์ทำเอง --- มีไฟ!!: เหมาะสำหรับงานแต่งงาน งานพรอม งานพิเศษ งานกลางคืน และทุกเวลาที่คุณต้องการเป็นคนที่เจ๋งที่สุดในห้อง!ทำไมไม่ลองผูกโบว์แบบมีไฟ ? อีกอย่าง อย่าอายนะสาวๆ ผูกโบว์แบบเบาๆ ได้ด้วยนะ :) เครดิตภาพ