กลับไปหน้ารวมไฟล์
chrome-dino-game-b10afe.md

เกมไดโนเสาร์ Chrome แบบง่ายๆ บน Arduino

หมายเหตุ: จอ OLED บางรุ่นมีขา GND ก่อนแล้วค่อย VCC บางรุ่นก็ VCC ก่อนแล้วค่อย GND ระวังให้ดีนะ! ต่อผิดจอดับแน่นอน!

แผนผังการต่อวงจร:

โครงการนี้เกี่ยวกับอะไร:

โครงงานนี้ก็คือการ ลองใช้ Python มาควบคุมอุปกรณ์อย่าง PC หรือมือถือผ่านบอร์ด Arduino นั่นแหละ พี่เองก็ยังไม่ค่อยชำนาญการใช้ Python กับ Arduino เท่าไหร่ เลยลองทำโปรเจคนี้เพื่อทำความเข้าใจดู เอาไอเดียมาจากโปรเจค Dino Game ของ Jalaal_Mansoori

หลักการทำงาน:

โปรเจคนี้ใช้ เซ็นเซอร์วัดระยะอินฟราเรด (Infrared proximity sensor) เป็น สวิตช์แบบไม่สัมผัส สำหรับให้ไดโนกระโดด (แม้ว่าคนส่วนใหญ่จะใช้ LDR กันก็ตาม) เมื่อเซ็นเซอร์ IR ตรวจจับสิ่งกีดขวาง มันจะส่งข้อมูลไปยังไมโครคอนโทรลเลอร์ Arduino จากนั้น Arduino ก็จะส่งข้อมูลนี้ไปยัง PC ผ่านสาย USB โดยส่งคำสั่ง "up" ไปให้โค้ด Python ที่รันอยู่เบื้องหลัง โค้ด Python อ่านคำสั่ง "up" แล้วก็จะส่งข้อความ "up" ไปที่หน้าต่างเบราว์เซอร์ ทำให้ไดโนเสาร์ในเกมบน Chrome กระโดด

สิ่งที่ต้องมีสำหรับ Python:

พี่ใช้ Spyder ใน Anaconda Navigator แต่แอป Python ทั่วไปก็ใช้ได้เหมือนกัน

โค้ด Python ต้องใช้ไลบรารี่ชื่อ "pyautogui" ซึ่งจะอ่านคำสั่ง "up" แล้วทำงานตามนั้น ติดตั้งแพ็กเกจได้โดยพิมพ์ใน Command Prompt: pip install pyautogui

และต้องมีแพ็กเกจ "pyserial" สำหรับการสื่อสารแบบอนุกรมกับ Arduino ด้วย

แค่นี้ก็ครบสำหรับไลบรารี่ Python แล้ว

วิธีเริ่มเล่นเกม :)

เกมนี้เล่นได้โดยให้โปรแกรม 2 ตัว ที่เขียนด้วยภาษา 2 ภาษาทำงานร่วมกัน ตัวหนึ่งอยู่บนบอร์ด Arduino (C++) และอีกตัวอยู่บน PC (Python) ต้องอัปโหลดโค้ด Arduino ลงบอร์ดก่อน แล้วค่อยรันโปรแกรม Python ไว้เบื้องหลังบน PC พร้อมกับเปิดเกมเล่น (ฟังดูยุ่งยากใช่มั้ยล่ะ 555) แต่ไม่ต้องห่วง มันง่ายมาก หลังจากอัปโหลดสเก็ตช์ Arduino แล้ว ให้เปิดหน้าเกมไดโนเสาร์บน Chrome พร้อมแล้วค่อยรันโค้ด Python แค่นี้ก็เรียบร้อย!! จากนั้นแค่โบกมือผ่านหน้าเซ็นเซอร์ครั้งแรก ไดโนก็จะเริ่มวิ่ง ทีนี้ทุกครั้งที่โบกมือ ไดโนบนหน้าจอก็จะกระโดดตามทันที งั้นก็หยิบบอร์ด Arduino ขึ้นมาแล้วเริ่มเล่นได้เลย !!!!

วิดีโอทดสอบการทำงานของโปรเจค :)

กดดูวิดีโอการทำงานของโปรเจคได้ที่ลิงก์ด้านล่างเลยจ้า สู้ๆนะน้อง!

🛠️ Deep Dive / Technical Analysis

เคยเป็นกันมั้ยเนี่ย อินเทอร์เน็ตหลุดปุ๊บ ก็ต้องไปควบคุมเจ้าไดโนเสาร์พิกเซลกระโดดข้ามสิ่งกีดขวางในบราวเซอร์กันอยู่ร่ำไป โปรเจกต์ Chrome Dino Game on Arduino นี้แหละที่จะพาเกมติดใจเกมนั้นมาสู่โลกแห่งความจริง โดยใช้ จอ LCD เป็นหน้าจอ และ ปุ่มกด เป็นตัวควบคุมแบบจับต้องได้!

Game Mechanics

แม้ฮาร์ดแวร์จะดูจำกัด แต่โปรเจกต์นี้ก็จับใจความสำคัญของเกมต้นฉบับได้ครบถ้วน:

  • สิ่งกีดขวางเลื่อนได้: ต้นตะบองเพชรจะวิ่งจากขวาไปซ้ายในแถวล่างสุดของจอ LCD 16x2
  • การกระโดด: พอกดปุ่ม เจ้าไดโนก็จะ "กระโดด" ไปอยู่แถวบนสุดชั่วระยะเวลาหนึ่ง
  • ตรวจจับการชน: ถ้าตำแหน่งของตะบองเพชรซ้อนทับกับตำแหน่งของไดโน ตอนที่มันอยู่แถวล่าง เกมก็จบ!
  • นับคะแนน: ยิ่งอยู่รอดได้นาน คะแนนก็ยิ่งเพิ่มขึ้น แสดงผลอยู่บนหน้าจอเลย

ประกอบเครื่องเล่นกันเถอะ

โปรเจกต์นี้เหมาะมากสำหรับมือใหม่ เพราะใช้อุปกรณ์น้อย และใช้ไลบรารี LiquidCrystal ที่เป็นเหมือนของคู่กายคนเริ่มต้นเล่น Arduino เลย

อุปกรณ์ที่ต้องใช้:

  • Arduino Uno: เป็นสมองกลสำหรับรันเกม
  • จอ LCD 16x2 แบบ I2C: เอาไว้แสดงกราฟิกเกม
  • ปุ่มกดแบบ Tactile: เอาไว้เป็นคอนโทรลเลอร์ "กระโดด"
  • สายจัมเปอร์: เอาไว้ต่อทุกอย่างเข้าด้วยกัน

ทำไมนี่ถึงเป็นโปรเจกต์ที่เจ๋งมาก

การสร้างเกมบน Arduino จะสอนให้คุณรู้จักเรื่อง อัตราเฟรม (frame rates), การเขียน โค้ดแบบไม่บล็อก (non-blocking code) (โดยใช้ millis() แทน delay()) และการ สร้างตัวอักษรพิเศษ (custom character) สำหรับ LCD เพราะจอ 16x2 มันมีแค่ 32 ช่อง คุณต้องใช้ความคิดสร้างสรรค์กับแผนที่ตัวอักษร (character maps) ในการวาดไดโนกับตะบองเพชร มันคือคลาสเรียนระดับมาสเตอร์ในการ ออปติไมซ์โค้ดและคิดนอกกรอบ ไปเลย! สู้งานนะน้อง!

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

apps:
  - "1x Arduino IDE"
  - "1x Python 3"
author: "ultramegabombasticfuze"
category: "Gadgets, Games & Toys"
components:
  - "1x Breadboard - 400 contacts"
  - "1x Push button"
  - "6x Jumper wires (generic)"
  - "1x 0.96 Inch OLED I2C Display Module (white)"
  - "1x Arduino Uno Rev3"
description: "มาลองฮาร์ดแวร์กัน! โปรเจคนี้ใช้ Arduino ควบคุม OLED Display เพื่อเล่นเกมไดโนเสาร์สุดคลาสสิกแบบตึงๆ วัยรุ่น ฝึกเขียนโค้ดและเล่นกับเซนเซอร์ปุ่มกดไปพร้อมกัน จัดไป!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/e1d1d845-0d45-4ddf-8ddc-cc8d2ada2c60.ino"
encryptedPayload: "U2FsdGVkX18Zt8KX24Qve+LK2wJbq9WH0EfY3vNrawUEg6vIfIitRr3dZ5TzbTQc193NOjV/ZO/1knHeCTIWGQqEk1DJ5LldG15m61+tk5zI4FEhRjdrokQ9olLhRibt7P+w2uRuBx3xip9R40KlNPdBx9bFGVmlGA5M1QWR3iI="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/chrome-dino-game-revamped-with-arduino-and-python-84a86e_cover.jpg"
lang: "en"
likes: 16
passwordHash: "bbcb8991b62d61cfedb84ba9b498e2019621712092ef874257f8e27f6c1c4f01"
price: 1120
seoDescription: "Play Chrome Dino Game with Arduino and Python without touching your Keyboard. A fun project to automate your gameplay effortlessly."
tags:
  - "python"
  - "arduino"
  - "kids"
  - "games"
title: "Chrome Dino Game \"Revamped\" with arduino and python"
tools: []
videoLinks: []
views: 31078