สารบัญ:

LED Matrix Game of Life 32 X 32: 8 ขั้นตอน
LED Matrix Game of Life 32 X 32: 8 ขั้นตอน

วีดีโอ: LED Matrix Game of Life 32 X 32: 8 ขั้นตอน

วีดีโอ: LED Matrix Game of Life 32 X 32: 8 ขั้นตอน
วีดีโอ: AZDelivery MAX7219 Dot Matrix MCU LED 4 en 1 8 x 32 Module d'Affichage Compatible 2024, มิถุนายน
Anonim
เกมเมทริกซ์ LED แห่งชีวิต 32 X 32
เกมเมทริกซ์ LED แห่งชีวิต 32 X 32

ฉันได้รับแรงบันดาลใจจาก Game of Life ขนาด 16 x16 ของ Jptrsn แต่สุดท้ายก็ใหญ่ขึ้นสี่เท่า ฉันพบ MAX7219 Dot Matrix Module 4-in-1 Display สำหรับบอร์ด Arduino ที่ Bangood.com ในราคา 3.50 ปอนด์เมื่อพวกเขามาถึง ค่อนข้างยากที่จะแยกพวกมันออกจากกันและใช้ในตารางขนาด 16x16 ตามที่ฉันวางแผนไว้ ดังนั้นฉันจึงตัดสินใจสร้างตารางขนาด 32x32 นั่นคือเมื่อสิ่งต่างๆ กลายเป็นเรื่องยุ่งยาก เนื่องจากคุณไม่สามารถปรับขนาดโค้ดให้ใหญ่ขึ้นได้

ขั้นตอนที่ 1: อะไหล่

ฉันได้ชิ้นส่วนของฉันจาก BangGood แต่คุณสามารถจัดหาชิ้นส่วนเหล่านี้ได้จากทุกที่ 1. Arduino Nano (~£2) 2. 4 1x4 Led Matrixes (~ £3.50 x 4) หรือมองหาแพ็กใหญ่ซึ่งบางครั้งถูกกว่า 3. สายบางตัว 4. ซ็อกเก็ตไมโคร USB (< £1) 5. A USB แหล่งจ่ายไฟ (<£5)6. กรอบรูปกล่องขนาด 6"x6" /15cmx15cm (~£4) จากร้านงานฝีมือในพื้นที่

ขั้นตอนที่ 2: เครื่องมือ

1. ปืนกาวร้อน

2. หัวแร้ง

3. เครื่องปอกสายไฟ

4. มีดคม

ขั้นตอนที่ 3: สร้างเขียงหั่นขนม

สร้างเขียงหั่นขนม
สร้างเขียงหั่นขนม

สิ่งหนึ่งที่ฉันเรียนรู้ ณ จุดนี้คือนาโน (และอาจเป็น Arduinos อื่น ๆ) ไม่สามารถให้พลังงานเพียงพอที่จะเรียกใช้เมทริกซ์ทั้ง 4 โดยไม่ทำให้แหล่งจ่ายไฟหมด! ได้รับการเตือน

เมื่อบอร์ดของฉันมาถึง พวกเขามีเพียงหมุดที่ปลายอินพุตและหมุดเอาต์พุตหลวมในกระเป๋า หรือในกรณีหนึ่งติดอยู่ใต้จอแสดงผลทำให้หมุดขาด ปรากฎว่าไม่ดีสำหรับจอแสดงผลเหล่านี้ (ดีมากฉันซื้อ 6) คุณจะต้องประสานพินเอาต์พุตเข้ากับเมทริกซ์ LED สองตัวหากไม่ได้ติดตั้งไว้บนของคุณ

เลย์เอาต์ค่อนข้างตรงไปตรงมา คุณสามารถโยงเมทริกซ์สองเมทริกซ์เข้าด้วยกันเพื่อสร้างโซ่สองอันโดยเพียงแค่เชื่อมต่อพินเอาต์พุตกับพินอินพุตที่ตรงกัน คุณไม่สามารถโยงทั้งหมดได้ในการรันครั้งเดียว เนื่องจากไลบรารี LedControl จำกัดการแสดง 8 จอต่อครั้ง

จากนั้นเสียบ DataIn เข้ากับพิน 12, โหลด (หรือ CS) ไปที่พิน 11 และ Clock (หรือ CLK) เพื่อพิน 10 และสำหรับเชนอื่น ๆ ถึง 5, 4 & 3 หรือคุณสามารถเลือกพินดิจิทัลที่คุณต้องการเพียงแค่อย่าลืมเปลี่ยน รหัสเพื่อแสดงตัวเลือกของคุณ จากนั้นเพิ่มซ็อกเก็ต USB เข้ากับเขียงหั่นขนม จากนั้นเชื่อมโยง v+ และหมุดกราวด์กับรางของเขียงหั่นขนม จากนั้นคุณต้องเสียบสายไฟจาก 2 โซ่ไปที่ +ve และกราวด์แล้วผูกกราวด์ Arduino กับกราวด์ เมื่อเราเขียนโปรแกรมบอร์ดเสร็จแล้ว คุณสามารถเชื่อมโยง Arduino vin กับ v+ และไม่ต้องเสียบ Aurdino USB อีกเลย

ขั้นตอนที่ 4: รหัส

ตอนแรก ฉันคิดว่าทั้งหมดที่ฉันต้องทำคือนำโค้ดที่มีอยู่แล้วขยายขนาดเป็น 32x32 แต่มันยากกว่านั้นเล็กน้อย 1. คุณต้องมี LedControls สองตัว เนื่องจากแต่ละตัวสามารถขับ LedControl lc ได้ 8 MAX7219s[2] = { LedControl(12, 10, 11, 8), LedControl(5, 3, 4, 8) };2 มีหน่วยความจำไม่เพียงพอบนนาโนที่จะจัดเก็บอาร์เรย์ขนาด 32x32 ไบต์เต็มจำนวน 2 ชุดเพื่อให้บอร์ดอยู่ในสถานะ (ในที่สุด ทุกครั้งที่ฉันเขียนโค้ด Game of Life บนไวท์บอร์ดในการสัมภาษณ์จะได้ผล) ดังนั้นเราจึงกำหนด อาร์เรย์ของบอร์ดเป็น 32x4 และเก็บสถานะของแต่ละเซลล์เป็นบิตในไบต์ทั่วทั้งอาร์เรย์

ขั้นตอนที่ 5: นำทุกอย่างมารวมกัน

ขั้นแรกให้ทดสอบโค้ดและเลย์เอาต์ของกระดานตามที่คาดไว้โดยใช้วิธี "testPattern" เพื่อวาดเส้นทแยงมุมทั่วทั้งกระดาน หากดูไม่ถูกต้อง แสดงว่ามีบางอย่างผิดปกติกับลำดับของบอร์ดและ/หรือพินที่คุณเริ่มต้น จากนั้นตรวจสอบสิ่งต่าง ๆ ด้วยวิธีการร่อนซึ่งจะสร้างเครื่องร่อนที่เคลื่อนที่ผ่านหน้าจอ อีกครั้ง หากไม่ได้ผล ให้ตรวจสอบลำดับของหมุด ฯลฯ สุดท้าย ตั้งค่าวิธีการหลักเป็น "สุ่ม" ตั้งค่า NUMITR เป็นจำนวนครั้งที่ควรทำซ้ำก่อนรีเซ็ต

ขั้นตอนที่ 6: ใส่กรอบ

ใส่กรอบ
ใส่กรอบ

ตอนนี้เพื่อใส่ทุกอย่างลงในเฟรม ขั้นแรก ให้กาวเมทริกซ์เข้าด้วยกันในกรอบขนาด 32x32 อย่าลืมตรวจสอบให้แน่ใจว่าปลายอินพุตอยู่ด้านเดียวกันสำหรับทั้งหมด (หรือแก้ไขรหัสการค้นหาใน "gridToCell" เพื่อให้กระดานที่ 2 กลับด้าน) เพิ่มปลั๊กไฟและสวิตช์บนสาย 5v และประสานทุกอย่างเข้าด้วยกัน

ขั้นตอนที่ 7: ปัญหาเฟรม

ปรากฎว่าคุณต้องการเฟรมที่ใหญ่กว่าเฟรม 6x6 ที่ฉันมี ดังนั้นฉันจะต้องกลับมาทำสิ่งนี้ให้เสร็จเมื่อมีโอกาสได้ไปที่ร้าน

ขั้นตอนที่ 8:

แนะนำ: