สารบัญ:

LED Cube 4x4x4: 11 ขั้นตอน (พร้อมรูปภาพ)
LED Cube 4x4x4: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: LED Cube 4x4x4: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: LED Cube 4x4x4: 11 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: My LED Cube 2024, กรกฎาคม
Anonim
LED Cube 4x4x4
LED Cube 4x4x4
LED Cube 4x4x4
LED Cube 4x4x4
LED Cube 4x4x4
LED Cube 4x4x4

จอแสดงผล LED 3 มิติที่น่าตื่นตาตื่นใจ ไฟ LED 64 ดวงประกอบเป็นลูกบาศก์ขนาด 4 x 4 คูณ 4 ลูกบาศก์ซึ่งควบคุมโดยไมโครคอนโทรลเลอร์ Atmel Atmega16 LED แต่ละตัวสามารถระบุแยกกันได้ในซอฟต์แวร์ ทำให้สามารถแสดงแอนิเมชั่น 3 มิติที่น่าทึ่งได้! ลูกบาศก์ LED 8x8x8 พร้อมใช้งานแล้วตามความต้องการยอดนิยม:https://www.instructables.com/id/Led-Cube-8x8x8/

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ

สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ

ก่อนอื่น คุณต้องใช้เวลาพอสมควรในการประสานไฟ LED 64 ดวงเข้าด้วยกัน;) รายการความรู้:

  • ทักษะทางอิเล็กทรอนิกส์และการบัดกรีเบื้องต้น
  • รู้วิธีตั้งโปรแกรมไมโครคอนโทรลเลอร์ AVR - ฉันจะไม่ครอบคลุมในคำแนะนำนี้

รายการส่วนประกอบ:

  • โปรโตบอร์ด ชนิดที่มีวงกลมทองแดง
  • Atmel AVR Atmega16 ไมโครคอนโทรลเลอร์
  • โปรแกรมเมอร์ลงโปรแกรม Atmega16
  • 64 Leds
  • ไฟ LED แสดงสถานะ 2 ดวง ฉันใช้สีแดงและสีเขียว (ไม่จำเป็น)
  • ชิป Max232 rs-232 หรือเทียบเท่า
  • ตัวต้านทาน 16 ตัวสำหรับไฟ LED (100-400ohms) จะกลับมาที่นี้
  • ตัวต้านทาน 2x 470 โอห์ม สำหรับไฟ LED แสดงสถานะ
  • ตัวต้านทาน 1x 10k
  • ตัวต้านทาน 4x 2.2k
  • 4x NPN ทรานซิสเตอร์ BC338 (หรือทรานซิสเตอร์อื่นที่สามารถสลับ 250-ish mA)
  • ตัวเก็บประจุ 1x 10uF
  • ตัวเก็บประจุ 1x 1000uF
  • 6x 0.1uF ตัวเก็บประจุเซรามิก
  • ตัวเก็บประจุเซรามิก 2x 22pF
  • 1x คริสตัล 14.7456 MHz
  • 2x ปุ่มสัมผัส
  • สวิตช์ pwr เสริม
  • คอนเนคเตอร์สำหรับไฟ 12v
  • ขั้วต่อเสริมสำหรับไฟ 5v

ขั้นตอนที่ 2: มัลติเพล็กซ์

มัลติเพล็กซ์
มัลติเพล็กซ์
มัลติเพล็กซ์
มัลติเพล็กซ์

จะควบคุมไฟ LED 64 ดวงโดยไม่ต้องใช้สายไฟ 64 เส้นได้อย่างไร ทวีคูณ!

การเดินสายไปยังขั้วบวกของตัวนำแต่ละเส้นนั้นเห็นได้ชัดว่าไม่สามารถทำได้และจะดูแย่มาก วิธีหนึ่งในการแก้ปัญหานี้คือการแบ่งลูกบาศก์ออกเป็น 4 ชั้นของไฟ LED 16x16 ไฟ LED ทั้งหมดที่จัดแนวในคอลัมน์แนวตั้งใช้ขั้วบวกร่วมกัน (+) ไฟ LED ทั้งหมดบนเลเยอร์แนวนอนใช้แคโทดร่วมกัน (-) ตอนนี้ ถ้าฉันต้องการจุดไฟ LED ที่มุมซ้ายบนที่ด้านหลัง (0, 0, 3) ฉันก็แค่ใส่ GND (-) ไปที่ชั้นบน และ VCC (+) ไปที่คอลัมน์ที่มุมซ้าย ถ้าฉันต้องการให้ไฟสว่างทีละดวงหรือสว่างมากกว่าหนึ่งชั้นในเวลาเดียวกัน.. ก็ใช้ได้ดี อย่างไรก็ตาม หากฉันต้องการทำให้มุมขวาล่างด้านหน้าสว่างขึ้น (3, 3, 0) ฉันพบปัญหา เมื่อฉันใส่ GND ให้กับชั้นล่างและ VCC ที่คอลัมน์ด้านซ้ายด้านหน้า ฉันยังทำให้ไฟ LED ด้านขวาบนที่ด้านหน้าสว่างขึ้น (3, 3, 3) และไฟ LED ด้านล่างซ้ายที่ด้านหลัง (0, 0, 0). เอฟเฟกต์ ghosting นี้ไม่สามารถแก้ไขได้โดยไม่ต้องเพิ่มสายไฟ 64 เส้น วิธีแก้ไขคือให้สว่างขึ้นทีละชั้นเท่านั้น แต่ทำอย่างรวดเร็วจนตาไม่รับรู้ว่ามีแสงเพียงชั้นเดียวเท่านั้นเมื่อใดก็ได้ สิ่งนี้ขึ้นอยู่กับปรากฏการณ์ที่เรียกว่าการคงอยู่ของการมองเห็น แต่ละเลเยอร์เป็นภาพขนาด 4x4 (16) ถ้าเราแฟลชภาพ led 4 16 ภาพทีละภาพ เร็วมาก เราจะได้ภาพ 3 มิติ 4x4x4!

ขั้นตอนที่ 3: การสร้างลูกบาศก์ เทมเพลต

การสร้างลูกบาศก์ เทมเพลต
การสร้างลูกบาศก์ เทมเพลต
การสร้างลูกบาศก์ เทมเพลต
การสร้างลูกบาศก์ เทมเพลต
การสร้างลูกบาศก์ เทมเพลต
การสร้างลูกบาศก์ เทมเพลต

การบัดกรีกริดของ LED 4x4 ด้วยมือเปล่าจะดูแย่มาก! ในการได้กริด LED 4x4 ที่สมบูรณ์แบบ 4 อัน เราใช้เทมเพลตเพื่อยึดพวกมันเข้าที่ ฉันต้องการทำให้ลูกบาศก์ง่ายที่สุดเท่าที่จะทำได้ ดังนั้นฉันจึงเลือกใช้ LED ขาของตัวเองให้มากที่สุด ระยะห่างระหว่างเส้นในตารางขึ้นอยู่กับความยาวของขา LED ฉันพบว่า 25 มม. (ประมาณหนึ่งนิ้ว) เป็นระยะห่างที่เหมาะสมที่สุดระหว่างแต่ละ LED (ระหว่างจุดศูนย์กลางของ LED แต่ละตัวนั่นเอง!) เพื่อเปิดใช้งานการบัดกรีโดยไม่ต้องเพิ่มหรือตัดลวด

  • หาชิ้นไม้ที่ใหญ่พอที่จะทำตาราง 4x4 ขนาด 2, 5 ซม.
  • วาดเส้นตารางขนาด 4x4
  • ทำรอยบุบในทุกจุดตัดด้วยหมัดตรงกลาง
  • หาสว่านที่ทำให้รูเล็กพอที่ไฟ LED จะอยู่กับที่อย่างแน่นหนา และใหญ่พอที่จะดึงไฟ LED ออกได้ง่าย (โดยไม่ต้องดัดสายไฟ..)
  • เจาะ 16 รู.
  • เทมเพลต ledcube ของคุณเสร็จแล้ว

ขั้นตอนที่ 4: การสร้างลูกบาศก์ ประสานเลเยอร์

ทำลูกบาศก์ ประสานเลเยอร์
ทำลูกบาศก์ ประสานเลเยอร์
ทำลูกบาศก์ ประสานเลเยอร์
ทำลูกบาศก์ ประสานเลเยอร์
ทำลูกบาศก์ ประสานเลเยอร์
ทำลูกบาศก์ ประสานเลเยอร์

เราสร้างลูกบาศก์ด้วยไฟ LED 4x4 4 ชั้น จากนั้นประสานเข้าด้วยกันสร้างเลเยอร์:

  • ใส่ไฟ LED ที่ด้านหลังและด้านหนึ่งแล้วประสานเข้าด้วยกัน
  • ใส่ LED อีกแถวหนึ่งแล้วประสานเข้าด้วยกัน ทำทีละแถวเพื่อออกจากที่สำหรับหัวแร้ง!
  • ทำซ้ำขั้นตอนข้างต้นอีก 2 ครั้ง
  • เพิ่มการค้ำยันไขว้ที่ด้านหน้าซึ่งไม่ได้เชื่อมต่อแถวนำ
  • ทำซ้ำ 4 ครั้ง

ขั้นตอนที่ 5: การสร้างลูกบาศก์ การเชื่อมต่อเลเยอร์

การสร้างลูกบาศก์ การเชื่อมต่อเลเยอร์
การสร้างลูกบาศก์ การเชื่อมต่อเลเยอร์
การสร้างลูกบาศก์ การเชื่อมต่อเลเยอร์
การสร้างลูกบาศก์ การเชื่อมต่อเลเยอร์
การสร้างลูกบาศก์ การเชื่อมต่อเลเยอร์
การสร้างลูกบาศก์ การเชื่อมต่อเลเยอร์

ตอนนี้เรามี 4 ชั้นแล้ว สิ่งที่เราต้องทำคือประสานเข้าด้วยกัน

ใส่เลเยอร์กลับเข้าไปในเทมเพลต นี่จะเป็นชั้นบนสุด ดังนั้นให้เลือกอันที่สวยที่สุด:) วางอีกเลเยอร์หนึ่งไว้ด้านบน และจัดมุมมุมใดมุมหนึ่งให้พอดี 25 มม. (หรือระยะใดก็ตามที่คุณใช้ในกริดของคุณ) เหนือเลเยอร์แรก นี่คือระยะห่างระหว่างสายแคโทด ใช้มือช่วยจับมุมเข้าที่และประสานขั้วบวกมุมของชั้นแรกกับขั้วบวกมุมของชั้นที่สอง ทำแบบนี้กับทุกซอกทุกมุม ตรวจสอบว่าเลเยอร์ต่างๆ อยู่ในแนวเดียวกันในทุกมิติหรือไม่ ถ้าไม่โค้งเล็กน้อยให้ปรับ หรือจะบัดกรีใหม่ก็ได้ระยะความสูงที่ปิดอยู่ เมื่อเรียงตัวกันอย่างสมบูรณ์แล้ว ให้บัดกรีขั้วบวกที่เหลืออีก 12 ตัวเข้าด้วยกัน ทำซ้ำ 3 ครั้ง

ขั้นตอนที่ 6: การเลือกค่าตัวต้านทาน

การเลือกค่าตัวต้านทาน
การเลือกค่าตัวต้านทาน
การเลือกค่าตัวต้านทาน
การเลือกค่าตัวต้านทาน

มีสองสิ่งที่ควรคำนึงถึงเมื่อเลือกค่าตัวต้านทานสำหรับไฟ LED ของคุณ

1) ไฟ LED 2) AVR AVR มีพิกัดกระแสไฟรวมสูงสุด 200 mA สิ่งนี้ทำให้เราทำงานได้ 12mA ต่อ LED คุณไม่ต้องการให้เกินกระแสสูงสุดที่ไฟ LED ของคุณได้รับการจัดอันดับ ฉันใช้ตัวต้านทาน 220 โอห์มกับลูกบาศก์ของฉัน สิ่งนี้ทำให้ฉันประมาณ 12mA ต่อ led

ขั้นตอนที่ 7: ตัวควบคุม

ผู้ควบคุม
ผู้ควบคุม
ผู้ควบคุม
ผู้ควบคุม
ผู้ควบคุม
ผู้ควบคุม

วงจรที่ควบคุมคิวบ์นำถูกอธิบายไว้ในภาพแผนผังที่แนบมา

อินเทอร์เฟซ RS-232 เป็นอุปกรณ์เสริม และสามารถละเว้นได้ นั่นคือ IC2 และส่วนประกอบทั้งหมดที่เชื่อมต่ออยู่ เฟิร์มแวร์ในอนาคตจะเปิดใช้งานการสื่อสารกับพีซี.. เริ่มต้นด้วยการจัดวางส่วนประกอบทั้งหมดบนแผงวงจรของคุณในเลย์เอาต์ที่ช่วยให้ส่วนประกอบทั้งหมดสามารถเชื่อมต่อด้วยสายไฟจำนวนน้อยที่สุด หากทุกอย่างลงตัว ให้บัดกรีวงจร ฉันจะไม่ให้คำแนะนำเพิ่มเติมเกี่ยวกับเรื่องนี้ เนื่องจากวงจรจะดูแตกต่างจากลูกบาศก์ถึงลูกบาศก์มาก ขึ้นอยู่กับขนาดของแผงวงจร ฯลฯ.. ข้อมูลเกี่ยวกับวิธีการต่อลูกบาศก์กับวงจรควบคุมอยู่ในตอนต่อไป ขั้นตอน

ขั้นตอนที่ 8: วางสาย Cube

ต่อคิวบ์
ต่อคิวบ์
ต่อคิวบ์
ต่อคิวบ์
ต่อคิวบ์
ต่อคิวบ์

รูปภาพอธิบายสิ่งนี้ได้ดีกว่าคำพูด โปรดดูภาพ

ขั้นตอนที่ 9: คอมไพล์และโปรแกรม

ตอนนี้คุณมีคิวบ์นำ เพื่อใช้งานมัน จำเป็นต้องมีซอฟต์แวร์บางอย่าง ฉันได้สร้างไดรเวอร์สำหรับแสดงพื้นที่ข้อมูล 3 มิติบนคิวบ์ และฟังก์ชันเพื่อแสดงเอฟเฟกต์ภาพสุดเจ๋งบนคิวบ์ คุณสามารถใช้โค้ดของฉัน เขียนโค้ดของคุณเอง หรือสร้างต่อ รหัสของฉันและสร้างเอฟเฟกต์เพิ่มเติม หากคุณสร้างเอฟเฟกต์ของคุณเอง โปรดส่งรหัสมาให้ฉัน ฉันอยากเห็นสิ่งที่คุณทำ!เพื่อรวบรวมโปรแกรม เพียงเปิดคำสั่ง promt ป้อนไดเร็กทอรีที่มีซอร์สโค้ดประเภท "make" ในบรรทัดคำสั่ง หากคุณต้องการใช้ ATMega32 แทน ATMega16 เพียงเปลี่ยนการตั้งค่า mcu ใน Makefile และคอมไพล์ใหม่ (ประเภท make) หากคุณใช้ m32 และไม่ทำตามขั้นตอนนี้ ลูกบาศก์จะไม่สามารถบู๊ตได้อย่างถูกต้อง (ไฟสีแดงและสีเขียวจะกะพริบตลอดไป) ตอนนี้คุณควรมีไฟล์ชื่อ main.hex ในไดเรกทอรีต้นทาง ขั้นตอนต่อไป จะแสดงวิธีรับรหัสนั้นลงในคิวบ์ของคุณ

ขั้นตอนที่ 10: ตั้งโปรแกรมไมโครคอนโทรลเลอร์

โปรแกรมไมโครคอนโทรลเลอร์
โปรแกรมไมโครคอนโทรลเลอร์
โปรแกรมไมโครคอนโทรลเลอร์
โปรแกรมไมโครคอนโทรลเลอร์
โปรแกรมไมโครคอนโทรลเลอร์
โปรแกรมไมโครคอนโทรลเลอร์

หากคุณกำลังประสบปัญหาเกี่ยวกับความเร็วและ/หรือไฟ LED บางดวงไม่สว่างขึ้น โปรดอ่านขั้นตอนนี้อย่างละเอียด เพื่อตั้งโปรแกรมไมโครคอนโทรลเลอร์ ฉันใช้ avrdude และโปรแกรมเมอร์ USBTinyISP

  • https://savannah.nongnu.org/projects/avrdude/
  • https://www.ladyada.net/make/usbtinyisp/
  • https://www.adafruit.com/index.php?main_page=index&cPath=16

ตัวอย่างของฉันจะอยู่บนระบบ Ubuntu Linux ขั้นตอนควรจะค่อนข้างเหมือนกันบน Windows แต่ฉันไม่สามารถช่วยคุณได้ หากคุณใช้โปรแกรมเมอร์อื่น โปรดอ่านคู่มือสำหรับโปรแกรมเมอร์นั้นและ avrdude ก่อนอื่น มาดูกันว่าเราสามารถติดต่อกับ AVR ได้หรือไม่ เชื่อมต่อโปรแกรมเมอร์กับคิวบ์และคอมพิวเตอร์ของคุณ คำสั่งคือ "avrdude -c usbtiny -p m16" โดยที่ -c ระบุโปรแกรมเมอร์ และ -p โมเดล AVR คุณสามารถเห็นผลลัพธ์ในภาพด้านล่าง ตอนนี้ อัปโหลดเฟิร์มแวร์: "avrdude -c usbtiny -p m16 -U flash:w:main.hex" ในตอนนี้ ลูกบาศก์ควรรีบูตและเริ่มทำสิ่งต่างๆ มันจะทำงานที่ 1mhz (ช้ามาก) โดยใช้ออสซิลเลเตอร์ภายใน และไฟ LED บางตัวจะไม่ทำงาน เนื่องจากพอร์ต GPIO บางพอร์ตใช้สำหรับ JTAG โดยค่าเริ่มต้น ในการเปิดใช้งานออสซิลเลเตอร์ภายนอกและปิดใช้งาน JTAG เราจำเป็นต้องตั้งโปรแกรมฟิวส์ไบต์:เรียกใช้ "avrdude -c usbtiny -p m16 -U lfuse:w:0xef:m"และ "avrdude -c usbtiny -p m16 -U hfuse:w:0xc9:m" ระวังเมื่อทำตามขั้นตอนนี้! หากคุณเข้าใจผิด คุณสามารถทำลายไมโครคอนโทรลเลอร์ของคุณอย่างถาวรได้! หากคุณกำลังใช้ไมโครคอนโทรลเลอร์ตัวอื่นที่ไม่ใช่ ATMega16 โปรดอ่านเอกสารข้อมูลอย่างละเอียดก่อนที่จะเปลี่ยนไบต์ฟิวส์! หลังจากเขียนไบต์ฟิวส์ที่ถูกต้อง ลูกบาศก์ควรรีบูตและเริ่มการทำงานด้วยความเร็วปกติโดยที่ไฟ LED ทั้งหมดทำงาน เพลิดเพลินไปกับลูกบาศก์ใหม่ของคุณ: NS

ขั้นตอนที่ 11: ใหญ่ขึ้น - 8x8x8

ไปใหญ่ - 8x8x8
ไปใหญ่ - 8x8x8
ไปใหญ่ - 8x8x8
ไปใหญ่ - 8x8x8
ไปใหญ่ - 8x8x8
ไปใหญ่ - 8x8x8
ไปใหญ่ - 8x8x8
ไปใหญ่ - 8x8x8

หลังจากสร้างลูกบาศก์ขนาด 4x4x4 อันสวยงามนี้แล้ว ฉันก็ได้สร้างลูกบาศก์ขนาด 8x8x8 ขนาดมหึมาด้วย ฉันจะทำคำสั่งสำหรับสิ่งนั้นเมื่อฉันมีเวลา ในขณะเดียวกันดูภาพ:-)

คุณสามารถค้นหารุ่น 8x8x8 ได้ที่นี่: https://www.instructables.com/id/Led-Cube-8x8x8/ โปรดให้คะแนนคำแนะนำนี้หากคุณต้องการ!:)

แนะนำ: