สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
By dmtinkdevFollow เพิ่มเติมโดยผู้เขียน:
โครงการฟิวชั่น 360 »
หลังจากสร้างตะเกียง Minecraft ให้ลูก 7 ขวบของฉันแล้ว น้องชายของเขาต้องการอะไรที่คล้ายกัน เขาชอบ SuperMario มากกว่า Minecraft ดังนั้นไฟกลางคืนของเขาจะแสดงสไปรท์วิดีโอเกม
โปรเจ็กต์นี้อิงจากโปรเจ็กต์ The Neoboard แต่ชิ้นส่วนต่างๆ สามารถพิมพ์แบบ 3 มิติได้ และ Arduino ไม่จำเป็นต้องใช้การ์ด SD เพื่ออ่านภาพ (สามารถเก็บไว้ในหน่วยความจำแฟลชได้)
เสบียง
- 1x บอร์ด Arduino (Uno หรือ Nano ใช้ได้)
- 2x ฟิลาเมนต์ (สีดำสำหรับตัวเครื่องและโปร่งใสสำหรับดิฟฟิวเซอร์) แม้ว่าคุณจะต้องการสีที่ต่างออกไปสำหรับขาตั้งของคุณ คุณก็ยังต้องใช้ไส้หลอดสีดำสำหรับส่วนแยกไฟ LED ฉันเคยใช้ปลา
- 1 ปุ่มกด
- ตัวต้านทาน 300-500 โอห์ม 1 ตัว (สำหรับขาอินพุตข้อมูลของแถบ)
- ตัวเก็บประจุ 1x 1000 µF (เพื่อป้องกันแถบจากการเปลี่ยนแปลงอย่างกะทันหัน)
- 1 16x16 leds แผงเมทริกซ์
- วัสดุโดยทั่วไปของผู้ผลิต (กาว, สายไฟดูปองท์, ขั้วต่อแบบบัดกรีในตัว, สกรู M4 ฯลฯ)
ขั้นตอนที่ 1: ดาวน์โหลดโค้ดและประมวลผลรูปภาพของคุณ
คุณสามารถรับรหัสจากที่เก็บ GitHub
มีโปรไฟล์ Platformio สำหรับบอร์ด Arduino Uno และ Nano อยู่แล้ว
ในการประมวลผลภาพ เราจะใช้การประมวลผล (ทั้ง GUI หรือ cli-tool จะทำงาน) รหัสการประมวลผลจะอ่านภาพขนาด 16x16 และแปลงสีพิกเซลทั้งหมดเป็นอาร์เรย์ uint8 โดยจัดเรียงว่าโดยทั่วไปแล้วเมทริกซ์นำจะเชื่อมต่ออย่างไร
ใน 99% ของกรณีในการประมวลผลภาพของคุณอย่างถูกต้อง คุณจะต้อง:
- เปลี่ยนค่าเป็นตัวแปร inputFilename และ outputFilename
- คัดลอกเนื้อหาของไฟล์ outputFilename แล้ววางลงใน /src/sprites.h
ภายในรหัส Arduino คุณจะต้องเปลี่ยนด้วย
- ค่าสำหรับ LEDS_PIN, BUTTON_PIN และ TOTAL_SPRITES
- บางทีประเภท led ในตัวสร้างแถบ… แต่ไม่ควรเป็นเรื่องธรรมดา
- และ 'สวิตช์' ภายในฟังก์ชัน changeSprite() เพื่อแสดงภาพทั้งหมดของคุณ
ดังที่คุณเห็นในการประกาศอาร์เรย์ เราใช้คีย์เวิร์ด PROGMEM เพื่อจัดเก็บข้อมูลแบบแฟลชแทน SDRAM ด้วยวิธีนี้ เราไม่จำเป็นต้องใช้ SDCard เพื่อเก็บข้อมูลสีของรูปภาพ
ดังที่คุณเห็นในภาพด้านบน การจัดเก็บโค้ดและรูปภาพ SuperMario 10 รูป ต้องการเพียง 11kbytes เท่านั้น ดังนั้นจึงมีพื้นที่เหลือเฟือสำหรับรูปภาพเพิ่มเติม (และมากยิ่งขึ้นหากคุณใช้บอร์ด MEGA2650)
ขั้นตอนที่ 2: พิมพ์ชิ้นส่วนทั้งหมด
ฉันได้ออกแบบชิ้นส่วนโดยใช้ Fusion360 คุณสามารถดาวน์โหลดได้จาก:https://a360.co/2FUfcNQ
หรือถ้าคุณต้องการเฉพาะไฟล์ STL ก็มีอยู่ใน Thingiverse:
ฝาหลังนั้นพิมพ์ได้ไม่ปกติ และขาตั้งต้องการแค่การรองรับเท่านั้น (แต่ขึ้นอยู่กับว่าคุณวางมันอย่างไร คุณจะต้องการรองรับเพิ่มเติม หรือเครื่องพิมพ์/ฟิลาเมนต์ผสมที่สามารถพิมพ์บริดจ์ขนาดใหญ่ได้)
สำหรับตัวกระจายแสง เดิมทีฉันคิดว่าการใช้แผ่นเคลือบเรียบและรูปแบบเส้นโค้งของฮิลแบร์ตจะให้ผลลัพธ์ที่ดีที่สุด แต่ฉันได้ทดสอบการผสมผสานชั้นต่างๆ ความละเอียด แผ่นงาน และรูปแบบต่างๆ เข้าด้วยกัน และฉันได้ผลลัพธ์ที่ดีที่สุดโดยใช้ PLA แบบโปร่งใส ฟิลาเมนต์จาก BQ ด้วยการตั้งค่าเหล่านี้:
- แผ่น: แผ่นเคลือบผง
- ชั้น: 3
- ความละเอียด: 0.2
- รูปแบบ: เส้นตรง
แต่ขึ้นอยู่กับเส้นใยของคุณ ผู้ผลิตไฟ LED ในเมทริกซ์ของคุณ ระยะห่างจากตัวกระจายสัญญาณไปยัง LED และหากมีการแยกระหว่างไฟ LED ของคุณโดยสมบูรณ์ ผลลัพธ์ของคุณอาจแตกต่างกันไป อย่าถามฉันว่าทำไมฉันถึงเป็นผู้เชี่ยวชาญในไมโครซอกนี้:)
ฉันใช้ตัวเลือก PrusaSlicer เพื่อเปลี่ยนสีด้วยตนเองระหว่างการพิมพ์เพื่อสลับไปมาระหว่างเส้นใยโปร่งใสและเส้นใยสีดำ ดังนั้นฉันจึงมีตัวกระจายแสงและตัวแยกไฟ LED ในส่วนหนึ่ง (ไม่จำเป็นต้องติดกาว)
ขั้นตอนที่ 3: เชื่อมต่อทุกอย่าง
การเชื่อมต่อทุกส่วนไม่สามารถทำได้ง่ายไปกว่านี้อีกแล้ว: จ่ายไฟให้กับบอร์ดและนำเมทริกซ์ด้วยสาย USB 5V และเชื่อมต่อปุ่มกดและอินพุตสตริปกับพอร์ตบอร์ดที่กำหนด
โปรดจำไว้ว่าเพื่อหลีกเลี่ยงความเสียหายต่อเมทริกซ์ ขอแนะนำให้เพิ่มตัวเก็บประจุและตัวต้านทานต่อการเชื่อมต่อ
หากทำทุกอย่างถูกต้อง คุณจะเห็นนกเพนกวินมีความสุขในเมทริกซ์ของคุณ:)
วิธีตรวจสอบว่าทุกอย่างทำงานได้ดี:
- รูปภาพควรมีพื้นหลังไล่ระดับสีน้ำเงิน
- มุมมีลูกศรสีเขียว
- ลูกศรมุมล่างซ้ายถูกขยายด้วยพิกเซลสีแดง 2 อัน