กลับไปหน้ารวมไฟล์
conways-game-of-life-3a8170.md

นี่คือการนำ Conway's Game of Life มาพัฒนาบน Arduino ประกอบด้วยส่วนประกอบหลักเพียง 2 อย่าง: จอ Matrix และ Arduino Nano

บทนำเกี่ยวกับ Cellular Automata

Conway's Game of Life เป็นเกมแบบ zero-player ที่มีชื่อเสียง ซึ่งจำลองวิวัฒนาการของประชากรเซลล์บนตาราง Grid ด้วยกฎทางคณิตศาสตร์ที่เรียบง่าย ชุดหนึ่ง ทำให้เกิดรูปแบบที่ซับซ้อนขึ้นมาจากสถานะเริ่มต้นที่ไม่ซับซ้อน การพัฒนาบน Arduino นี้ได้นำการจำลองแบบคลาสสิกนี้มาสู่โลกแห่งความเป็นจริง สร้างการแสดงผลที่น่าหลงใหลของชีวิตดิจิทัลบน LED Matrix ขนาดกะทัดรัด

ระบบแสดงผล Hardware

  • Arduino Nano: สมองประมวลผลขนาดกะทัดรัดที่คำนวณกฎสำหรับทุกวงจรชีวิต
  • MAX7219 8x8 LED Matrix: ทำหน้าที่เป็น "Grid" สำหรับสภาพแวดล้อมของเซลล์ LED ทั้ง 64 ดวง แต่ละดวงจะแสดงเซลล์หนึ่งเซลล์ ซึ่งสามารถเป็นได้ทั้ง "มีชีวิต" (เปิด) หรือ "ตาย" (ปิด)
  • SPI Communication: ชิป MAX7219 ช่วยให้ Arduino สามารถควบคุม LED ทั้ง 64 ดวงได้โดยใช้ Digital Pin เพียงสามขา ทำให้การเดินสายมีประสิทธิภาพสูง
  • Breadboard Powering: ระบบมีขนาดกะทัดรัดและใช้กระแสไฟน้อยมาก ทำให้สามารถจ่ายไฟได้โดยตรงจากพอร์ต USB ของ Nano

ตรรกะและกฎของ Algorithm

การจำลองจะดำเนินไปเป็น "รุ่น" (generations) ที่ไม่ต่อเนื่องกัน สำหรับแต่ละรอบ Arduino จะใช้กฎต่อไปนี้กับเซลล์ทุกเซลล์พร้อมกัน:

  1. Survival: เซลล์ที่มีชีวิตใด ๆ ที่มีเซลล์เพื่อนบ้านมีชีวิต 2 หรือ 3 เซลล์ จะอยู่รอดไปยังรุ่นถัดไป
  2. Death (Underpopulation): เซลล์ที่มีชีวิตใด ๆ ที่มีเซลล์เพื่อนบ้านมีชีวิตน้อยกว่า 2 เซลล์ จะตาย
  3. Death (Overpopulation): เซลล์ที่มีชีวิตใด ๆ ที่มีเซลล์เพื่อนบ้านมีชีวิตมากกว่า 3 เซลล์ จะตาย
  4. Birth: เซลล์ที่ตายใด ๆ ที่มีเซลล์เพื่อนบ้านมีชีวิต 3 เซลล์พอดี จะกลายเป็นเซลล์ที่มีชีวิต

โค้ดจะเก็บ "Buffer" (Array) สองตัวไว้ในหน่วยความจำ โดยจะคำนวณสถานะถัดไปจาก Buffer ปัจจุบัน แล้วสลับ Buffer เพื่ออัปเดตการแสดงผล ซึ่งทำให้มั่นใจได้ว่าการคำนวณสำหรับเซลล์หนึ่งจะไม่รบกวนเซลล์เพื่อนบ้านในรุ่นเดียวกัน

การเฝ้าดูรูปแบบที่วิวัฒนาการ

แม้ว่า Grid จะมีขนาดเพียง 8x8 คุณก็สามารถเห็นการปรากฏขึ้นของรูปแบบชีวิตคลาสสิกหลายรูปแบบได้:

  • Oscillators: รูปแบบที่สลับไปมาระหว่างสองสถานะ (เหมือนเส้นที่กะพริบ)
  • Still Life: รูปแบบที่คงที่และไม่เปลี่ยนแปลง เว้นแต่จะถูกรบกวนจากแรงภายนอก
  • Gliders: รูปแบบที่ดูเหมือนจะ "เคลื่อนที่" ข้ามหน้าจอ (แม้ว่า Grid ขนาด 8x8 จะทำให้พวกมันไปถึงขอบได้อย่างรวดเร็ว) ด้วยการใช้ "Random Seed" ในการเริ่มต้น ทุกครั้งที่คุณรีเซ็ต Arduino คุณจะสร้างประวัติวิวัฒนาการใหม่ทั้งหมด โปรเจกต์นี้เป็นการผสมผสานที่น่าสนใจระหว่าง คณิตศาสตร์, วิทยาการคอมพิวเตอร์ และ การออกแบบ Hardware

ข้อมูล Frontmatter ดั้งเดิม

title: "Conway's Game of Life"
description: "Classical game implemented by Arduino Nano"
author: "victor_k"
category: "Screens & Displays"
tags:
  - "Games"
  - "Lights"
views: 4278
likes: 1
price: 1120
difficulty: "Easy"
components:
  - "1x MAX7219 8x8 LED matrix"
  - "1x Arduino IDE"
  - "1x Arduino Nano"
  - "1x Breadboard - 400 contacts"
tools: []
apps:
  - "1x Arduino IDE 2.0 (beta)"
downloadableFiles:
  - "https://projects.arduinocontent.cc/72ae5806-1777-4343-9b13-06e981e68d72.ino"
documentationLinks: []
passwordHash: "a2ebe669908d05501f5b8e4a6c480e847020a9450c5637134b63ffd1c15cb1a9"
encryptedPayload: "U2FsdGVkX1/qbnT/xK+DrwLYnGC2NyPcWc0CrXKUcc32dbXIRjd0alXv8Ym83xrIyrKoXbCWNues280zIt7Bha+jhvRksjeE17wb2QGyTXciWw0UEJK3xGJ0xLGG21q2JUYmB4y2e7bEGg8ZTM1vjuogSu4DEe8fcOTDF7X6hS8="
seoDescription: "Build Conway's Game of Life on Arduino Nano. Classical cellular automaton simulation project."
videoLinks:
  - "https://youtu.be/PIK2Ox9w1Gc"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/conways-game-of-life-f22d01_cover.jpg"
lang: "th"