สารบัญ:
- ขั้นตอนที่ 1: ทฤษฎี
- ขั้นตอนที่ 2: ฮาร์ดแวร์: LED Cube Build
- ขั้นตอนที่ 3: LED Rows
- ขั้นตอนที่ 4: การประกอบเลเยอร์
- ขั้นตอนที่ 5: การเดินสายไฟลูกบาศก์
- ขั้นตอนที่ 7: บอร์ดควบคุม Arduino + Bluetooth
- ขั้นตอนที่ 8: ทางเลือก: การแกะสลักแผงวงจร
- ขั้นตอนที่ 9: เชื่อมต่อ Cube
- ขั้นตอนที่ 10: ซอฟต์แวร์: วงจรมัลติเพล็กซ์
- ขั้นตอนที่ 11: แอนิเมชั่นแบบกำหนดเอง
- ขั้นตอนที่ 12: เพิ่มเติม: AnimationCreator
- ขั้นตอนที่ 13: แอป Bluetooth
- ขั้นตอนที่ 14: ตู้โชว์
วีดีโอ: RGB LED Cube พร้อม Bluetooth App + AnimationCreator: 14 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
นี่เป็นคำแนะนำเกี่ยวกับวิธีการสร้างลูกบาศก์ LED 6x6x6 RGB LED (แอโนดทั่วไป) ที่ควบคุมโดยแอพ Bluetooth โดยใช้ Arduino Nano โครงสร้างทั้งหมดสามารถปรับให้เข้ากับลูกบาศก์ขนาด 4x4x4 หรือ 8x8x8 ได้อย่างง่ายดาย โครงการนี้ได้รับแรงบันดาลใจจาก GreatScott ฉันตัดสินใจที่จะสร้างที่ซับซ้อนมากขึ้นโดยใช้ไฟ LED ที่ใหญ่กว่า (8 มม.) โดยมีระยะทางน้อยกว่า + เพิ่มการสื่อสารด้วย Bluetooth ซึ่งทำให้การเพิ่มฟังก์ชั่นใหม่ ๆ ง่ายขึ้นมาก และยังเพิ่มความสามารถในการสร้างแอพเพื่อควบคุมคิวบ์ สิ่งนี้ยังช่วยให้ฉันสามารถเช่น โค้ดเกม Snake (วิดีโอแสดงครั้งที่ 3 ในตอนท้าย) ยิ่งไปกว่านั้น ฉันได้เพิ่มโหมด Audio Visualizer ซึ่งช่วยให้ลูกบาศก์มองเห็นอินพุต AUX เช่น เพลงที่ใช้ MSGEQ7 (วิดีโอโชว์เคสในตอนท้าย) นอกจากนี้ ฉันยังเขียนแอปพลิเคชัน AnimationCreator ใน Java ด้วย UI ที่ใช้งานง่ายเพื่อสร้างและปรับแต่งแอนิเมชั่น เพื่อให้ทุกคนสามารถสร้างแอนิเมชั่นแบบกำหนดเองได้อย่างรวดเร็ว ดังนั้นแอพ Sketch + Bluetooth จึงมีกรอบงานสำหรับการกำหนดค่า LED Cube และด้วย Animation Creator คุณไม่จำเป็นต้องกังวลเกี่ยวกับการใช้แอนิเมชั่นแบบกำหนดเอง
ลิงค์ไปยัง Arduino Sketch และแอพ Bluetooth:
RGBCube_Arduino Sketch (Github)+Animation Creator.jar
แอพ Cubo Bluetooth (Github)
รายการชิ้นส่วนสำหรับ Cube:
- 216x RGB LED (แอโนดทั่วไป) (8 มม.) (AliExpress / Ebay) -> 6x6x6 = 216
- สายริบบิ้น (1 ม. 40 พินน่าจะเพียงพอ) (AliExpress / Ebay / Amazon)
- ส่วนหัวของเพศหญิงและชาย (อย่างน้อย 4x40 พินต่ออัน) (AliExpress / Ebay / Amazon)
- ทองแดงกระป๋อง/ลวดเงิน 0.8 มม. (~ 25 เมตร) (AliExpress / Ebay / Amazon)
- ท่อหด (AliExpress / Ebay / Amazon)
รายการชิ้นส่วนสำหรับแผงควบคุม:
- 7 x TLC5940 ไดร์เวอร์ LED (อีเบย์ / AliExpress)
- 6 x IRF 9540 P-Channel MOSFETs (Amazon / Ebay / AliExpress)
- ตัวเก็บประจุขนาด 8 x 10 ยูเอฟ (Amazon / Ebay / AliExpress)
- ตัวเก็บประจุขนาด 3 x 1000 uF (Amazon / Ebay / AliExpress)
- ตัวต้านทาน 14x 2.2kOhm (Amazon / Ebay / AliExpress)
- ตัวต้านทาน 1 x 1kOhm (Amazon / Ebay / AliExpress)
- 7x28pin ซ็อกเก็ต IC (Amazon/Ebay/AliExpress)
- 1 x Arduino นาโน (Amazon / Ebay / AliExpress)
- 1 x 1N4001 Diode (ไดโอดทั่วไปใดๆ) (Amazon/Ebay/AliExpress)
- ตัวเก็บประจุ 8 x 0.1uF (อีเบย์)
- 1 x DC แจ็ค PCB Mount (Amazon/Ebay/AliExpress)
- 1 x HC-05 โมดูลบลูทูธ (Amazon/Ebay/AliExpress)
ขั้นตอนที่ 1: ทฤษฎี
หากคุณไม่สนใจทฤษฎีเกี่ยวกับมัลติเพล็กซ์ ให้ข้ามไปที่ขั้นตอนที่ 2 เพื่อเริ่มบิลด์จริง
เนื่องจากฮาร์ดแวร์และซอฟต์แวร์เป็นส่วนสำคัญของโปรเจ็กต์นี้ เรามาดูทฤษฎีกันก่อนดีกว่า
สมองของลูกบาศก์คือ Arduino Nano ให้ I/O เพียงพอที่จะโต้ตอบกับไดรเวอร์ LED ที่ใช้แล้ว รวมทั้งสร้างการเชื่อมต่อ Bluetooth กับโมดูล HC-05 และฮาร์ดแวร์ควบคุมอื่นๆ หากคุณได้ดู LED Cube บิลด์อื่นๆ คุณจะรู้ว่าคนส่วนใหญ่ใช้ Shift register อย่างง่ายเพื่อเก็บค่าความสว่างของสีของ LED แต่ละดวง บิลด์นี้ไม่ได้ใช้ Shift register แต่เรียกว่า "TLC5940" LED Drivers อย่างที่เราจะได้เห็นกันในภายหลัง วิธีนี้ช่วยเราประหยัดเวลาได้มาก เช่นเดียวกับฮาร์ดแวร์เพิ่มเติมอีกจำนวนมาก (เช่น ตัวต้านทาน)
ฟังก์ชันพื้นฐานของการควบคุมคิวบ์ใช้มัลติเพล็กซ์ ในกรณีนี้ เรากำลังทำการมัลติเพล็กซ์ 6 เลเยอร์ของคิวบ์ ซึ่งหมายความว่าแอโนด (+) ของ LED ทั้งหมดในเลเยอร์จะเชื่อมต่อกัน ในขณะที่แคโทดแต่ละตัวของ LED ทั้งหมดในคอลัมน์เดียวกันจะเชื่อมต่อกันที่ด้านล่าง ซึ่งหมายความว่าหากคุณต้องการให้ไฟ LED สว่างขึ้นที่ตำแหน่ง x=1, y=2, z=3, สี: สีเขียว คุณต้องระบุ 5V ที่ Anode ของ Layer 3 และเชื่อมต่อ GND กับ Cathode ของคอลัมน์ที่สอดคล้องกับ หมุดสีเขียวของ x=1, y=2 ในความเป็นจริง ณ จุดหนึ่งมีการเปิด Cube เพียงชั้นเดียวเท่านั้น แต่อย่างที่คุณเห็นในภายหลังในรหัส เรากำลังปิดและเปิดแต่ละชั้นอย่างรวดเร็วจนตาของเราคิดว่าลูกบาศก์ทั้งหมดเปิดอยู่.
ในการควบคุมสิ่งต่างๆ เช่น ความสว่าง ภาพเคลื่อนไหว และอื่นๆ เราใช้โมดูลบลูทูธ HC-05 ที่เชื่อมต่อกับ Arduino Nano ง่ายมากที่จะใช้โมดูลกับ Arduino เนื่องจากคุณต้องการเพียงการเชื่อมต่อ 4 พิน และสามารถเชื่อมต่อโมดูลผ่าน Serial-Commuincation เริ่มต้นของ Arduino ในตอนท้ายของคำแนะนำนี้ คุณจะเห็นว่าการเขียนแอพ Bluetooth ของคุณเองเพื่อควบคุม Cube นั้นง่ายเพียงใด
บันทึก
ในแผนผังวงจร Arduino ของฉัน คุณสามารถเห็นแผนผังเล็ก ๆ สำหรับเชื่อมต่ออินพุตเสียงของกระบวนการ MSGEQ7 chipto ซึ่งไม่จำเป็นสำหรับคิวบ์จริง ๆ และเป็นเพียงฟังก์ชันเพิ่มเติมที่ฉันเพิ่มเข้าไป ดังนั้นคุณก็สามารถละเว้น Schematic ที่ทำเครื่องหมายไว้ได้ ด้วย "MSGEQ7"
ขั้นตอนที่ 2: ฮาร์ดแวร์: LED Cube Build
มาดูวิธีการสร้าง Cube กันก่อนจะพูดถึงวงจรควบคุมรอบๆ Arduino Nano
รายการชิ้นส่วนสำหรับการก่อสร้างลูกบาศก์:
- 216x RGB LED (แอโนดทั่วไป) (AliExpress / Ebay) -> 6x6x6=216
- สายริบบิ้น (1 ม. 40 พินน่าจะเพียงพอ) (AliExpress / Ebay / Amazon)
- ส่วนหัวของเพศหญิงและชาย (อย่างน้อย 4x40 พิน) (AliExpress / Ebay / Amazon)
- ทองแดงกระป๋อง/ลวดเงิน 0.8 มม. (~ 25 เมตร) (AliExpress / Ebay / Amazon)
- ท่อหด (AliExpress / Ebay / Amazon)
สิ่งแรกที่ต้องทำและตอนนี้มันน่าเบื่อ แต่จำเป็น เราต้องทดสอบ LED ในการทำเช่นนั้น เราเชื่อมต่อแหล่งจ่ายไฟอย่างง่าย เช่น บล็อกแบตเตอรี่ 9V พร้อมคลิปหนีบเข้ากับบอร์ดบอร์ด ดังที่คุณเห็นในภาพ 3 พินที่ยาวที่สุดของ LED คือขั้วบวก (+) ดังนั้นคุณจึงเชื่อมต่อพินนี้กับ +9V ของแบตเตอรี่ ตอนนี้ก่อนที่จะเชื่อมต่อ GND กับแต่ละสี แคโทด(แดง, เขียว, น้ำเงิน) ให้เพิ่มตัวต้านทาน 220Ohm ให้กับแคโทดแต่ละตัวเพื่อจำกัดกระแส ตอนนี้ขอให้สนุกกับการทดสอบสีของไฟ LED ทั้งหมด 216 ดวงทุกสี
ในขั้นตอนต่อไป เราจะเตรียมไฟ LED ที่ทดสอบแล้ว เพื่อให้สามารถประกอบเป็นคอลัมน์ได้อย่างง่ายดายในภายหลัง
ขั้นตอนที่ 3: LED Rows
ก่อนที่เราจะประสานไฟ LED ลงในแถวนั้น เราต้องดัดและตัดลีดก่อน
ดังที่คุณเห็นในภาพแรก ฉันเจาะรูขนาด 8 มม. (สำหรับ LED 8 มม.) ลงในชิ้นไม้อย่างง่าย และเจาะสว่านขนาดเล็กมาก 3 อันทางด้านซ้ายของรู LED และอีกอันทางด้านขวาของรู ดอกสว่านเหล่านี้เป็นเครื่องหมายสำหรับการดัดสายอย่างถูกต้องและควรมีระยะห่างประมาณ 1 ซม. จากกึ่งกลางของรูสำหรับ LED
เทคนิคนี้ได้รับแรงบันดาลใจจาก Steve Manley คุณสามารถหาวิดีโอของเขาทำสิ่งนี้ในรูปแบบเล็กน้อยบน YouTube
ก่อนที่คุณจะตัดและงอลีดรอบดอกสว่านตามที่เห็นในภาพที่ 2 และ 3 ตรวจสอบให้แน่ใจว่าการวางแนวของลีดนั้นสอดคล้องกับภาพที่ 1 (สีน้ำเงินอยู่ด้านบนซ้าย จากนั้นเป็นสีเขียว ตามด้วยแอโนด + ไปทางขวา และ ซ้ายแดงอีกแล้ว) วงกลมที่คุณงอเข้าไปในลีดควรมีเส้นผ่านศูนย์กลางใหญ่พอที่จะพอดีกับลวดทองแดงกระป๋อง (0.8 มม.) ขั้นตอนนี้ทำให้การประสานไฟ LED เข้าที่ได้ง่ายขึ้นอย่างยอดเยี่ยม
เมื่อเตรียม LED ทั้งหมดแล้ว เราต้องการประกอบเป็นแถว 6 อันที่เชื่อมต่อ Anodes(+):
- สร้างจิ๊กขนาดเล็กตามภาพที่ 6 เจาะ 6 รู (เส้นผ่านศูนย์กลาง 0.8 มม.) ระยะห่าง 2.5 ซม. ถึงรูถัดไป ซึ่งช่วยให้เราใส่ไฟ LED ได้ครั้งละ 6 ดวงในจิ๊ก
- ในการเชื่อมต่อแอโนด เราต้องใช้ลวดทองแดงกระป๋องตรงที่มีความยาว ~ 16 ซม. (มีระยะขอบพิเศษบางส่วน) เพื่อให้ได้ลวดที่ดีและตรง คุณสามารถติดปลายสายด้านหนึ่งเข้ากับ เช่น สว่านไฟฟ้า ยึดสายไฟไว้บนโต๊ะครั้งละ 2 ม. จากนั้นจับสว่านเพื่อให้ลวดยืดและแน่นและเปิดสว่าน ไม่กี่วินาทีโดยดึงลวดให้ตรงอย่างรวดเร็ว จากนั้นคุณสามารถตัดลวดตรงตำแหน่งที่คุณยึดชิ้นส่วนไว้ได้ คุณยังสามารถใช้คีมสองตัวและขันลวดชิ้นเล็ก ๆ ให้แน่นในแต่ละครั้งก็ได้ แต่นั่นก็น่าเบื่อกว่ามาก
- เมื่อคุณมีสายไฟยาว 16 ซม. ให้นำสายไฟผ่านรูแอโนด (+) ของ LED ในจิ๊กและบัดกรีหมุดแอโนดเข้ากับสายไฟ (ภาพที่ 7)
สำหรับลูกบาศก์ทั้งหมดเราต้องการ 6x6 = 36 ของแถว LED เหล่านี้
ขั้นตอนที่ 4: การประกอบเลเยอร์
ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ เราจะทวีคูณเลเยอร์ของคิวบ์ แต่สำหรับการประกอบนั้น ง่ายกว่าในการสร้าง 6 วอลล์ของ 6x6 LEDs จากนั้นจึงประกอบเข้าด้วยกันและใช้ลวดทองแดงกระป๋องเส้นเดียวที่เชื่อมต่อแอโนดของ เรียงกันเป็นชั้นๆ
ระวังว่าขั้นตอนนี้ต้องใช้เวลาและความอดทนอย่างมากในการทำให้ถูกต้อง โดยรวมแล้วคุณจะต้องบัดกรีข้อต่อบัดกรีประมาณ 1,000 ข้อต่อเพื่อสร้าง ดังนั้นใช้เวลาของคุณ!
ในการสร้างกำแพง LED:
- สำหรับจิ๊ก: เราต้องการชิ้นไม้ที่มีเส้นแกะสลัก 6 เส้นเพื่อให้พอดีกับ 6 แถวที่อยู่เหนือแถวอื่นเพื่อสร้างกำแพง คุณสามารถเห็นตัวจิ๊กเองได้ในรูปที่ 2 (ระยะห่างระหว่างแถว: 2.5 ซม.)
- คุณใส่ไฟ LED 6 แถวลงในงานแกะสลักโดยให้ลวดแอโนดคว่ำลงในเส้นแกะสลักเพื่อให้ 3 แคโทด (R, G, B) หงายขึ้น
- ในการเชื่อมต่อแคโทดที่อยู่เหนือกัน (ดูรูปที่ 2) เราจำเป็นต้องมีลวดเพิ่มเติม (ดังนั้นอีกครั้งเรา 6 คอลัมน์ x 3 แคโทด x 6 กำแพง = 108 ชิ้นลวดกระป๋องตามที่อธิบายไว้ในขั้นตอนสุดท้าย (2.) (ความยาวเท่ากัน))
- เลื่อนชิ้นลวดจากด้านล่างของคอลัมน์ผ่านรูของแคโทดไปที่แถวบนสุด และประสานลวดเข้าที่ที่ LED แต่ละดวง
คุณทำเช่นนี้ 6 ครั้งเพื่อรับ 6 Walls of LEDs
ตอนนี้เราสามารถประกอบ Walls เข้าเป็นลูกบาศก์จริงได้ แต่เพื่อยึดลูกบาศก์ เราต้องสร้างระนาบพื้นบางประเภท สำหรับสิ่งนี้ ฉันเพียงแค่ใช้ไม้อัดบางๆ และเจาะรูเล็กๆ 0.8 มม. เข้าไป เพื่อให้พอดีกับสายไฟที่ห้อยลงมาจากแถว LED ที่ต่ำที่สุด (สำหรับผนัง LED ทั้ง 6 ดวง) การวัดรูของ LED เดี่ยวได้รับการบันทึกไว้ในขั้นตอนที่ 3 และระยะห่างระหว่าง LED แต่ละดวงคือ 2.5 ซม.
เมื่อรูเข้าที่ ตอนนี้เรานำกำแพงแรกแล้วเคลื่อนเข้าไปในรูทางด้านซ้ายสุดของไม้อัด แถว LED ที่ด้านล่างควรนั่งบนไม้ เพื่อให้ผนังทั้งหมดอยู่ในแนวเดียวกันในที่สุด
ทำสิ่งเดียวกันกับส่วนที่เหลือของ LED Walls แต่จำไว้ว่า Anodes of the Walls มักจะหันไปทางเดียวกัน (ในรูปที่ 3 Anodes of the Walls ทั้งหมดหันไปทางซ้าย)
เมื่อคิวบ์ทั้งหมดเข้าที่แล้ว เราจำเป็นต้องประสานแอโนดของแต่ละเลเยอร์เข้าด้วยกัน ในการทำเช่นนี้ เราใช้ลวดเส้นตรงอีกประมาณ 16 ซม. แล้ววางบนชั้นแรก เพื่อให้ลวดสัมผัสกับสายแอโนดทั้งหมดของ 6 ผนังในชั้นเดียว ระวังว่าลวดใหม่จะไม่สัมผัสกับแคโทดใดๆ ประสานลวดเข้าที่และทำซ้ำใน 5 ชั้นที่เหลือ
ขั้นตอนที่ 5: การเดินสายไฟลูกบาศก์
ชิ้นส่วนสำหรับ LED Driver Board:
- 7 x TLC5940
- 6/7 x 10 uF ตัวเก็บประจุ
- ตัวเก็บประจุ 2 x 1,000 ยูเอฟ
- ตัวต้านทาน 7x 2.2kOhm
- ซ็อกเก็ต IC 7 x 28pin
- ตัวเก็บประจุ 7 x 0.1uF
- สายริบบิ้น
มาต่อกันที่วงจรควบคุม มาดูที่ LED Driver board กันก่อนครับ ดังที่ได้กล่าวไว้ก่อนหน้านี้ว่าเราต้องการ 7 TLC5940 ที่เชื่อมต่อกับ Arduino Nano ชิป TLC5940 ทั้งหมดถูกล่ามโซ่แบบเดซี่ซึ่งหมายความว่าพินควบคุมทั้งหมดของไดรเวอร์เชื่อมต่อกัน (เช่น พินว่างของ TLC ตัวแรกเชื่อมต่อกับ BLANK ของวินาที สาม สี่ … TLC) และทั้งหมดเชื่อมต่อกับ Arduinowith สายเดียวกัน ยกเว้น Serial In ที่เชื่อมต่อครั้งแรกจาก Arduino Digital Pin กับ TLC ตัวแรก จากนั้น Serial Out pin ของ TLC ตัวแรกนี้จะเชื่อมต่อกับพิน SIN ของ TLC ตัวที่สอง เป็นต้น (ดูรูปที่ 4)…
ดังนั้นแผนผังของ TLC Board จึงค่อนข้างง่ายอย่างที่คุณเห็นในแผนผังที่แนบมา
(ถ้าคุณต้องการ ETCH กระดานกระโดดไปที่ขั้นตอนที่ 8)
ฉันยังแนบภาพหน้าจอของแผนผังใน frizz ซึ่งรวมถึงป้ายกำกับพินและไฟล์ GIMP.xcf ที่มีเลเยอร์สำหรับการเชื่อมต่อ Control Pin แต่ละรายการแยกจากกัน
เริ่มต้นด้วยการบัดกรีซ็อกเก็ต IC ทั้งหมดให้เข้าที่ จากนั้นเพิ่มตัวเก็บประจุ 100nF ให้กับ TLC แต่ละตัว ตามด้วยตัวต้านทาน 2.2kOhm สำหรับ IREFand GND และส่วนหัว 7 พินที่มุมบนขวา หลังจากนั้น คุณสามารถทำตามไฟล์.xcf ได้โดยง่าย เริ่มต้นด้วย "เลเยอร์ SIN" ในไฟล์ Gimp ซึ่งแสดงวิธีเชื่อมต่อพิน Serial IN/OUT ของไดรเวอร์โดยใช้สายริบบิ้น จากนั้นเปิดใช้งาน CLK Layer ใน GIMP เป็นต้น ตรวจสอบให้แน่ใจว่าคุณมีการเชื่อมต่อที่ดีของ + และ - พินกับพิน ส่วนหัวที่ด้านบนขวา ส่วนที่เหลือของแผนผังควรอธิบายได้ด้วยตนเอง แต่ให้แน่ใจว่าคุณเพิ่มตัวเก็บประจุ 1000uF และ 10uF ลงในบอร์ดเพียงพอ มันไม่เกี่ยวข้องกันตรงไหน คุณวางตำแหน่งพวกเขา
เมื่อบอร์ดนี้เสร็จสิ้น คุณสามารถไปยัง Arduino Board ได้ในขั้นตอนถัดไป
ขั้นตอนที่ 7: บอร์ดควบคุม Arduino + Bluetooth
ชิ้นส่วนสำหรับแผงควบคุม:
- 6 x IRF 9540 P-Channel MOSFETs
- ตัวเก็บประจุ 1 x 10 ยูเอฟ
- ตัวเก็บประจุ 1 x 1000 ยูเอฟ
- ตัวต้านทาน 7 x 2.2kOhm
- ตัวต้านทาน 1 x 1kOhm
- หัวเข็มหมุดตัวเมีย 2 x 14 ตัว
- 1 x Arduino นาโน
- 1 x 1N4001 ไดโอด
- ตัวเก็บประจุ 1 x 0.1uF
- 1 x DC แจ็ค PCB Mount
- 1 x HC-05 โมดูลบลูทูธ
- แจ็คเสียง 1 x 3.5 มม.
บอร์ดควบคุม Arduino ส่วนใหญ่จัดการกับมัลติเพล็กซ์เช่นเดียวกับส่วนหัวพินของบอร์ดไดรเวอร์ LED
การบัดกรีบนบอร์ด perfboard:
- วางส่วนหัวพินตัวเมียสองตัวเพื่อทำหน้าที่เป็นซ็อกเก็ตสำหรับ Arduino ตรงกลางกระดาน
- วาง MOSFET 6 ตัวในแถวที่อยู่ติดกันทางด้านขวาของ Arduino (ด้านที่มี Analog Pins) และเพิ่มตัวต้านทาน 2.2kOhm ระหว่างพินแรกและพินสุดท้ายแต่ละตัว
- ตอนนี้วางส่วนหัว 6 พินที่ด้านหน้าของ MOSFET (ตรงกลางของแถว) และเชื่อมต่อพิน 6 DRAIN ของ FET (พินกลาง) กับส่วนหัวและพิน GATE (พินซ้าย) ของ FET กับพิน Arduino Analog ตามลำดับ.
- จากนั้นประสานส่วนหัว 7pin สำหรับการเชื่อมต่อ LEDDriver ที่อีกด้านหนึ่งของ Arduino ปล่อยให้มีที่ว่างสำหรับสายเคเบิลและบัดกรีการเชื่อมต่อทั้งหมดจาก Arduino ไปยังส่วนหัวของพิน
- เพิ่มตัวเก็บประจุ (1-2 1000uF, 1 10uF, 100nF ถัดจาก Arduino) สำหรับท่อระบายน้ำที่เป็นไปได้
- ประสานส่วนหัว 4 พินถัดจากด้านหลังของ Arduino สำหรับโมดูล HC-05 และทำการเชื่อมต่อ 4 อันกับ VCC, RX, TX, GND และอย่าลืมสร้างตัวแบ่งแรงดันจาก RX Pin ของ HC-05 และ TX Pin ของ Arduino (ดูที่นี่)
- วาง DC Jack ไว้ที่ขอบด้านใดด้านหนึ่งของบอร์ดโดยให้สวิตช์อยู่ติดกัน และต่อพินด้านขวาของสวิตช์ไปที่ + Pin ของ DC Jack
- สุดท้ายทำการเชื่อมต่อพลังงานที่จำเป็นทั้งหมดจาก GND Pin ของ DC Jack และพินด้านขวาของสวิตช์ (VCC) ไปยัง Arduino, MOSFETs, Capacitors และ HC-05 ตามที่เห็นในแผนผัง อย่าลืมเพิ่ม Diode ที่อนุญาตเฉพาะพลังงานจากพิน VCC ของสวิตช์เพื่อไหลเข้าสู่พิน Arduinos 5V ไม่ใช่วิธีอื่น (ซึ่งจะปกป้อง Arduino เมื่อตั้งโปรแกรมผ่านการเชื่อมต่อ USB)
สำหรับการต่อสายไฟ ฉันใช้แจ็คไฟ DC กับสวิตช์ธรรมดา คุณสามารถใช้ตัวเชื่อมต่อ USB ได้หากต้องการ ฉันเอาคอนเน็กเตอร์จ่ายไฟไปยังแผงวงจรขนาดเล็กอีกอันเพื่อให้พอดีกับกล่องไม้ของฉัน แต่คุณสามารถใส่โดยตรง ลงบนบอร์ด Arduino ดังที่กล่าวไว้ในขั้นตอนแรก ยังมีวงจรการเชื่อมต่อ MSGEQ7 ในแผนผัง แต่เพียงเพิกเฉยหากคุณไม่ได้ใช้ MSGEQ7 (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน MSGEQ7 คลิกที่นี่)
อย่าลืมทำสายริบบิ้น 7 พินอีกอันที่มีส่วนหัวพินตัวผู้ที่ปลายแต่ละด้านสำหรับเชื่อมต่อบอร์ด Arduino กับบอร์ดไดรเวอร์
ขั้นตอนที่ 8: ทางเลือก: การแกะสลักแผงวงจร
ดังนั้นหากคุณไม่ชอบการบัดกรีสายเคเบิลจำนวนมาก คุณยังสามารถสลัก PCB ที่จำเป็นได้หากต้องการ
ใน Cube ของฉัน บอร์ด Arduino และบอร์ดตัวเชื่อมต่อ Power/Audio เป็นบอร์ดที่สลักไว้โดยใช้ไฟล์ schematic/EAGLE ที่แนบมา ครั้งแรกที่ฉันทำผิดพลาดในแผนผังดังนั้นฉันจึงต้องทำ LED Driver board ใหม่เหมือนที่ฉันทำในขั้นตอนที่แล้ว ไม่มีข้อดีมากมายในการกัดบอร์ดแทนที่จะใช้ต่อบอร์ด ดังนั้นอย่าลังเลที่จะกัดบอร์ดหรือบัดกรีบอร์ดบนบอร์ด
ในไฟล์.zip ที่แนบมา คุณจะพบทั้งไฟล์ BOARD และไฟล์ SCHEMATIC
ขอให้สังเกตว่ารอยชั้นบน (สีแดง) ควรจะเป็นสะพานลวด (เนื่องจากฉันไม่สามารถกัดกระดานสองด้านที่บ้านได้) ร่องรอยที่ไม่ได้กำหนดเส้นทางแสดงการเชื่อมต่อที่จะทำผ่านสายเคเบิลสำหรับส่วนหัวของพินตัวเมีย
แผนผังประกอบด้วยคุณลักษณะ MSGEQ7 ซึ่งคุณสามารถละเว้นได้โดยการลบส่วนของแผนผังที่มีเครื่องหมาย "(MSGEQ7)" ในภาพหน้าจอของแผนผัง.pdf
ขั้นตอนที่ 9: เชื่อมต่อ Cube
ในการเชื่อมต่อทุกส่วนของ Cube ให้เริ่มต้นด้วยการเสียบสายเคเบิล 7pin เข้ากับบอร์ด Arduino และบอร์ดไดรเวอร์ (ตรวจสอบให้แน่ใจว่าการวางแนวถูกต้อง!) ถัดไป เสียบโมดูล HC05 เข้ากับส่วนหัว 4 พิน และเชื่อมต่อ Power Board หากแยกจากกัน
ในการเชื่อมต่อส่วนหัวพิน 7x16 ของ Cube ตรวจสอบให้แน่ใจว่าได้เริ่มต้นด้วย TLC ตัวแรก (อันที่มีพิน SIN เชื่อมต่อกับ Arduino โดยตรง) ค้นหาสายเคเบิล 16 พินที่ถูกต้องจาก Cube และเชื่อมต่อกับส่วนหัวพินของ TLC ตัวแรก (ตรวจสอบให้แน่ใจว่าสายเคเบิลสำหรับ Cathode Nr.0 เชื่อมต่อกับพิน TLC OUT0 ตัวแรก!) ต่อและเชื่อมต่อสายเคเบิล 16 พินอื่นๆ เข้ากับส่วนหัว TLC ที่เกี่ยวข้องในลำดับที่ถูกต้อง
สุดท้ายแต่ไม่ท้ายสุด เชื่อมต่อสาย 6Pin สำหรับ Anodes จาก Cube กับส่วนหัว 6Pin บนแผงควบคุมถัดจาก MOSFET
ในการทำให้ Cube เสร็จ ฉันได้เพิ่มผนังเข้าไปในเคสด้วยไม้อัดอีกจำนวนหนึ่งที่มีสีดำทาทับแล้วติดกาวเข้าไป
ตอนนี้เราเสร็จสิ้นด้วยฮาร์ดแวร์ทั้งหมดที่จำเป็นสำหรับงานสร้างทั้งหมดแล้ว!
ขั้นตอนที่ 10: ซอฟต์แวร์: วงจรมัลติเพล็กซ์
ตามทฤษฎีแล้ว Arduino กำลังดำเนินการตามรอบต่อไปนี้อย่างต่อเนื่อง:
- หากผ่าน LayerDuration แล้ว ให้โหลด Values สำหรับ Layer ถัดไปไปยัง TLC, ปิด Layer ปัจจุบัน, เปิด Layer ถัดไป, รีเซ็ต LayerDuration, คอมมิต Value ใหม่ให้กับ TLC
- หาก FrameDuration ผ่านไป ให้โหลด Frame ใหม่ของแอนิเมชั่นปัจจุบันโดยจัดเก็บค่าสำหรับ LED และสีทั้งหมดลงในบัฟเฟอร์ ValueLed รีเซ็ต FrameDuration
- หากมีข้อมูล Bluetooth ให้ตอบสนอง (เปลี่ยนภาพเคลื่อนไหว ความสว่าง …) (ข้อมูลเพิ่มเติมในภายหลัง)
อย่างที่คุณเห็นจุดเน้นหลักของโค้ดคือความเร็ว สิ่งสำคัญคือเวลาในการเปลี่ยนเลเยอร์นั้นน้อยที่สุด
ยิ่งคุณเปิด/ปิดเลเยอร์ได้เร็วเท่าไร คุณก็จะได้ "เฟรม" มากขึ้นเท่านั้น สำหรับ Cube LED RGB ขนาด 6x6x6 แบบนี้ ฉันพบว่า Layer Duration อยู่ที่ 1700 microSec ดีพอที่จะให้ริบหรี่น้อยที่สุดและควรทิ้งไว้ที่ค่านี้ FrameDuration ควบคุมความเร็วของแอนิเมชั่นได้มากขึ้น จึงสามารถเปลี่ยนแปลงได้สำหรับแอนิเมชั่นต่างๆ
ในขั้นตอนต่อไป เราจะมาดูกันว่าเราจะเขียนแอนิเมชั่นของเราเองได้อย่างไร
ขั้นตอนที่ 11: แอนิเมชั่นแบบกำหนดเอง
ในการใช้งานแอนิเมชั่น เราต้องตั้งค่าบัฟเฟอร์ ValueLed เป็นค่าที่เราต้องการสำหรับเฟรมถัดไปทุกครั้งที่ FrameDuration ผ่านไป เราทำได้โดยการเรียกฟังก์ชันมาโคร "SETLED(x, y, z, COLOR, Brightness)"
x, y, z คือพิกัดของ LED ที่เราต้องการตั้งค่า และ COLOR (RED, GREEN หรือ BLUE) คือสีที่เราต้องการตั้งค่า และ Brightness คือค่าจริงสำหรับสีที่เราตั้งค่าไว้
ตัวอย่างเช่น ใช้แอนิเมชั่นที่แสดงสีแดง สีเขียว และสีน้ำเงินแบบสุ่มทั่วทั้งลูกบาศก์ คุณสามารถทำได้ดังนี้:
เป็นโมฆะ randomLedsFull(){
สำหรับ (uint8_t j = 0; j < CUBE_SIZE; j++){ สำหรับ (uint8_t x = 0; x < CUBE_SIZE; x++){ สำหรับ (uint8_t y = 0; y < CUBE_SIZE; y++) { uint8_t rand = random8 (3); SETLED(x, y, j, rand, maxBright); } } } }
เมธอดนี้ถูกเรียกทุกครั้งที่ FrameDuration ผ่านไป และเลือกจากคำสั่ง switch-case ในลูป () หากคุณเขียนแอนิเมชั่นใหม่ คุณสามารถเพิ่มได้โดยเพียงแค่เพิ่มลงในสวิตช์เคส
ขั้นตอนที่ 12: เพิ่มเติม: AnimationCreator
ฉันยังเขียน AnimationCreator โดยใช้ JavaFX และ Java3D
ทำให้การสร้างและแก้ไขแอนิเมชั่นแบบกำหนดเองทำได้ง่ายมากโดยให้ UI ที่เข้าใจง่าย
คุณสามารถสร้าง แก้ไข เปลี่ยนชื่อ และกำหนดค่าแอนิเมชั่นใหม่สำหรับ 4x4x4, 6x6x6 หรือ 8x8x8 LED Cubes
ในการสร้างแอนิเมชั่นใหม่ เพียงกด File>New ภายใต้ "Cube" คุณสามารถเลือกขนาด Cube เพื่อตั้งค่าสีของ LED ให้เลือกสีที่คุณต้องการด้วยตัวเลือกสีทางด้านซ้ายแล้วคลิกซ้ายที่ LED ที่คุณต้องการ สีนั้นสำหรับกรอบนั้น หากต้องการเพิ่มเฟรมอื่น ให้กด "ถัดไป" หรือ "+" ส่วนที่เหลือของการควบคุม UI นั้นค่อนข้างอธิบายได้ง่าย ช่องทำเครื่องหมายที่อยู่ถัดจากเลเยอร์คิวบ์คือการตรวจสอบว่าเลเยอร์ใดควรได้รับผลกระทบจากการเปลี่ยนและ "เก็บเฟรม" เพียงทดสอบแล้วคุณจะพบทุกสิ่งในเวลาไม่นาน
นอกจากนี้ เพื่อจำลองแอนิเมชัน คุณสามารถคลิกปุ่ม "ดู 3D" ซึ่งเปิดหน้าต่างอื่นด้วยโมเดล Java3D ของคิวบ์ คุณสามารถหมุนกล้องในขณะที่กดปุ่มซ้ายของเมาส์ค้างไว้ (กดปุ่ม R เพื่อรีเซ็ตกล้อง) หากต้องการเล่น/หยุดภาพเคลื่อนไหวชั่วคราว ให้กดปุ่ม P เพื่อรีเซ็ตภาพเคลื่อนไหวให้กด Q ช่องข้อความด้านล่างปุ่ม "ดู 3 มิติ" หมายถึงปัจจุบัน FrameTime ตามความเร็วของแอนิเมชั่นของคุณ
เมื่อคุณใช้แอนิเมชั่นเสร็จแล้ว ให้ตั้งชื่อและกด File>Save As… และบันทึกแอนิเมชั่นไว้ในโฟลเดอร์เดียวกับ Cubo_Control.ino Sketch
หากต้องการรวมแอนิเมชั่นใหม่ใน Sketch ให้เปิด Cubo_Control.ino และเพิ่มโค้ดต่อไปนี้ที่ด้านบนของ Sketch:
#include "RGBit.h" //แทนที่
เลื่อนลงไปที่ BTEvent() และเพิ่มคำสั่ง case ให้กับ switch-case ของ animations
สวิตช์ (curAnim){
… กรณีที่ 10: แอนิเมชั่น= &ani_cubesmove[0][0]; FRAME_TIME= ANI_CUBESMOVE_FRAMTIME; maxCount= ANI_CUBESMOVE_FRAMES; หยุดพัก; กรณีที่ 11: //ภาพเคลื่อนไหวใหม่ของคุณ = &ani_rgbit[0][0]; FRAME_TIME= RGBIT_FRAMETIME; maxCount= ANI_RGBIT_FRAMES; หยุดพัก; }
ขั้นตอนที่ 13: แอป Bluetooth
ในการควบคุม Cube ได้อย่างแท้จริง ด้วยโมดูล HC-05 ทำให้ง่ายต่อการสร้างแอป Bluetooth เพื่อเชื่อมต่อโทรศัพท์ของคุณกับ Cube
ลิงก์ไปยังแอป:Github
แอพนี้เป็นโอเพ่นซอร์ส ดังนั้นอย่าลังเลที่จะเพิ่มแอนิเมชั่น/คุณสมบัติเพิ่มเติมด้วยตัวคุณเอง
- เริ่มแอพจะขอให้คุณเปิด Bluetooth
- คลิก "ค้นหา" และรายการการเชื่อมต่อ Bluetooth ที่พร้อมใช้งานจะปรากฏขึ้น ระบุโมดูล HC-05 จากลูกบาศก์และคลิกที่มัน
- หากมีข้อผิดพลาดขณะพยายามเชื่อมต่อกับ Cube ให้ลองจับคู่โมดูล HC-05 ในการตั้งค่า Bluetooth ด้วยตนเอง
- เมื่อเชื่อมต่อแล้ว แอปจะสลับไปที่หน้าจอควบคุมและเชื่อมต่อบลูทูธเรียบร้อยแล้ว
การควบคุม
- ความเร็วและความสว่าง: เปลี่ยนค่าตัวเลื่อนเพื่อเพิ่มความเร็ว/ลดความเร็วของแอนิเมชันหรือเปลี่ยนความสว่าง
- แอนิเมชั่น: คลิกที่ปุ่มเพื่อเปลี่ยนแอนิเมชั่น โดยค่าเริ่มต้นแอนิเมชั่นจะวนซ้ำ (เริ่มจากด้านบนซ้ายปุ่มจะสอดคล้องกับ currAnim)
- เลื่อนข้อความ: คลิกปุ่ม "ข้อความ" ซึ่งจะแสดงกล่องโต้ตอบเพื่อป้อนข้อความซึ่งจะถูกเลื่อนผ่านลูกบาศก์
- คำสั่ง: คุณสามารถป้อนคำสั่งด้วยตนเองด้วย Command TextField (ดูในวิธี BTEvent() ของ Cubo_Control.ino สำหรับไวยากรณ์)
- Snake: เกมงูคลาสสิก (สีแดง:แอปเปิ้ล สีเขียว:หัวงู สีน้ำเงิน:หางย่อง) (การควบคุม: ปุ่มทิศทาง 4 ปุ่ม การขึ้นและลงจะถูกทริกเกอร์โดยการหมุนโทรศัพท์ไปข้างหน้า (ขึ้น) หรือย้อนกลับ (ลง))
- โปรแกรมสร้างภาพเสียง: MSGEQ7 ใช้เพื่อแสดงภาพ 6 แถบเสียงจากแจ็ค AUX (ปุ่มสำหรับแอนิเมชั่น 7)
ขั้นตอนที่ 14: ตู้โชว์
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
BOSEBerry Pi Internet Radio: 4 ขั้นตอน (พร้อมรูปภาพ)
BOSEBerry Pi Internet Radio: ฉันชอบฟังวิทยุ! ฉันใช้วิทยุ DAB ในบ้าน แต่พบว่าการรับสัญญาณค่อนข้างหยาบและเสียงขาดหาย ดังนั้นฉันจึงตัดสินใจสร้างวิทยุอินเทอร์เน็ตของตัวเอง ฉันมีสัญญาณ wifi แรงรอบบ้านและพี่ชายดิจิทัล
นาฬิกาบอกตำแหน่ง 'วีสลีย์' ด้วย 4 เข็มนาฬิกา: 11 ขั้นตอน (พร้อมรูปภาพ)
นาฬิกาบอกตำแหน่ง 'Weasley' แบบมี 4 เข็ม: ดังนั้น ด้วย Raspberry Pi ที่ใช้งานมาระยะหนึ่งแล้ว ฉันต้องการค้นหาโครงการดีๆ ที่จะช่วยให้ฉันใช้งานได้ดีที่สุด ฉันเจอนาฬิกาบอกตำแหน่งวีสลีย์ที่สอนได้ดีเยี่ยมนี้โดย ppeters0502 และคิดว่า
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: 9 ขั้นตอน (พร้อมรูปภาพ)
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: LineaMeteoStazione เป็นสถานีตรวจอากาศที่สมบูรณ์แบบซึ่งสามารถเชื่อมต่อกับเซ็นเซอร์ระดับมืออาชีพจาก Sensirion รวมถึงส่วนประกอบ Davis Instrument (Rain Gauge, เครื่องวัดความเร็วลม) โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อเป็นสถานีตรวจอากาศแบบ DIY แต่ต้องใช้