กลับไปหน้ารวมไฟล์
mazuno-maze-for-arduino-debb83.md

เกมเขาวงกตสุ่มบน Arduino Uno

- สร้างเขาวงกตแบบสุ่มด้วยอัลกอริทึมสร้างเขาวงกต

- มีของดี 2 แบบในเกม

- ⭐ - ต้องเก็บให้ครบทุกดวงถึงจะเปิดทางออกได้

- ♥️ - เพิ่มจำนวนก้าว (step) อีก 3 ก้าว

- ทางออกจะเปิดเมื่อเก็บ ⭐ ครบทุกดวง

- ⛄ (จำนวนก้าว) - จำนวนก้าวสูงสุดที่ใช้ได้

ลองเล่นออนไลน์ได้ที่ WOKWI

วิชาแคลคูลัสเวกเตอร์ของฟังก์ชัน Map() แบบอนาล็อก

จอยสติ๊กแบบก้านโยก (thumb-joystick) มันไม่ได้ส่งค่าออกมาเป็นคำว่า "เอียงซ้าย" นะน้อง มันส่งค่าออกมาเป็นเลขจำนวนเต็มก้อนใหญ่ๆ ซะมากกว่า โดยมันจะพักอยู่ที่ 512 ตอนที่นิ้วโป้งเราไม่แตะ และจะดิ่งลงไปที่ 0 หรือพุ่งขึ้นไปที่ 1023 ตอนที่กดไปสุดทาง

  1. Arduino Uno ของเราจะวนอ่านค่าอนาล็อกแบบจัดหนักจัดเต็มที่พิน A0 (แกน X) และ A1 (แกน Y)
  2. กับดักการแปลงค่าทางฟิสิกส์: เราเขียนแค่ servoX.write(1023) ไปตรงๆ ไม่ได้นะตัวนี้ เซอร์โว่เข้าใจแค่ค่าตั้งแต่ 0 ถึง 180 องศา ถ้าน้องสั่ง 1023 ไป เจ้าเซอร์โว่นี่จะหมุนฟรีแบบไม่หยุดจนเกียร์พลาสติกข้างในแหลกเป็นชิ้นๆ แล้วขดลวดข้างในก็อาจจะไหม้ได้เลย!
  3. คณิตศาสตร์ของ Map():
int joyX = analogRead(A0);
int servoAngleX = map(joyX, 0, 1023, 10, 170); // ฟังก์ชันนี้คือพระเจ้า! มันแปลงช่วงค่าให้ และจำกัดขอบเขตไว้แล้ว!
servoX.write(servoAngleX); // สั่งงานฮาร์ดแวร์ได้อย่างปลอดภัย!

การสร้างระบบหน่วงเชิงกล (Dampening) แบบขั้นสูง

ถ้าใช้ฟังก์ชัน Map() แบบเส้นตรงเป๊ะๆ ล่ะก็ แค่ขยับนิ้วโป้งไป 1 มิลลิเมตร โต๊ะไม้หนักๆ ทั้งแผ่นจะกระตุกทันที 5 องศา ทำให้น้องเหล็กกลิ้งหลุดจากเขาวงกตแล้วบินมาใส่หน้าพี่ได้เลย

  • ถ้าอยากได้เอฟเฟกต์การเคลื่อนที่ที่ลื่นไหลเหมือนมีระบบเกียร์หน่วง (Dampening/Smoothing) แบบสวยๆ โดยไม่ต้องลงทุนซื้อฮาร์ดแวร์แพงๆ เราสามารถใช้เทคนิคการกรองข้อมูลด้วยซอฟต์แวร์แบบอาเรย์ได้
  • ด้วยการใช้ Moving Average Array โค้ด C++ ของเราจะช่วยชะลอสัญญาณอินพุตจอยสติ๊กที่วุ่นวายลงได้ มันจะนำค่าจากการอ่านจอยสติ๊ก 10 ครั้งล่าสุดมาหาค่าเฉลี่ยทางคณิตศาสตร์ ทำให้การเคลื่อนที่ของเซอร์โว่ "เนียนหายใจ" และค่อยๆ เอียงโต๊ะหนักๆ ได้อย่างนุ่มนวล กำจัดอาการกระตุกน่ากลัวของระบบเชิงกลได้หมดจด!

อุปกรณ์แมคคาทรอนิกส์สำหรับจุดหมุน

  • Arduino Uno/Nano (ของพื้นฐานต้องมี)
  • เซอร์โว่ SG90 ขนาดเล็ก 2 ตัว (แนะนำให้ใช้ MG90S แบบเกียร์โลหะจะดีกว่า เพราะต้องรับน้ำหนักแผ่นเขาวงกตไม้จริงจัง)
  • โมดูลจอยสติ๊กอนาล็อก 2 แกน (KY-023)
  • โครงสร้างเขาวงกตที่ทำจากกระดาษแข็ง, ไม้บัลซ่า, หรือพิมพ์จากเครื่อง 3D พริ้นเตอร์ แล้วติดตั้งบนจุดหมุน (pivot joint) ทางคณิตศาสตร์

ใช้ไลบรารีและอุปกรณ์

- ไลบรารี U8G2 สำหรับจอ SH1107 แบบ I2C ขนาด 128x128

- จอยสติ๊ก 2 แกน (xy joystick)

- บัซเซอร์ (buzzer)

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

apps:
  - "1x wokwi"
  - "1x Arduino IDE 2.0 (beta)"
author: "almostonline"
category: "Gadgets, Games & Toys"
components:
  - "1x Passive buzzer"
  - "1x Arduino Uno R3 compactable"
  - "1x Joistick Shield"
  - "1x SolderWire"
  - "1x 1.5\" GME128128-01-IIC"
  - "1x Arduino Uno"
description: "Unlmited Maze game for Arduino R3\nFor age 3+ year\nIncrease finger coordination and brain thinking process\n\nJust for fun"
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://github.com/almost-online/mazuno/tree/main"
encryptedPayload: "U2FsdGVkX1/5EfV4X71pbaPi21Aar77TzrqUlkffyDEIVFGFHwF5Dj786lBEDaKfk6YI77YNiyHv2vES7CtiQWXqr5TE0Lug94mWuW6zKcGbwBuB0Cyb1fCBwWd5Px+9"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/mazuno-maze-for-arduino-debb83_cover.png"
lang: "en"
likes: 0
passwordHash: "3a98c97986690a36a4a31807aad7357e3234ac705169806da4dc468109a4fcc2"
price: 1120
seoDescription: "Unlimited Mazuno game for Arduino R3. Enhance finger coordination and brain skills for ages 3+. Fun and educational maze project."
tags:
  - "Games"
title: "Mazuno (เกมเขาวงกต Arduino) - งานง่ายแต่หล่อ วัยรุ่นต้องลอง!"
tools: []
videoLinks: []
views: 2763