เกมเขาวงกตสุ่มบน Arduino Uno
- สร้างเขาวงกตแบบสุ่มด้วยอัลกอริทึมสร้างเขาวงกต
- มีของดี 2 แบบในเกม
- ⭐ - ต้องเก็บให้ครบทุกดวงถึงจะเปิดทางออกได้
- ♥️ - เพิ่มจำนวนก้าว (step) อีก 3 ก้าว
- ทางออกจะเปิดเมื่อเก็บ ⭐ ครบทุกดวง
- ⛄ (จำนวนก้าว) - จำนวนก้าวสูงสุดที่ใช้ได้

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

วิชาแคลคูลัสเวกเตอร์ของฟังก์ชัน Map() แบบอนาล็อก
จอยสติ๊กแบบก้านโยก (thumb-joystick) มันไม่ได้ส่งค่าออกมาเป็นคำว่า "เอียงซ้าย" นะน้อง มันส่งค่าออกมาเป็นเลขจำนวนเต็มก้อนใหญ่ๆ ซะมากกว่า โดยมันจะพักอยู่ที่ 512 ตอนที่นิ้วโป้งเราไม่แตะ และจะดิ่งลงไปที่ 0 หรือพุ่งขึ้นไปที่ 1023 ตอนที่กดไปสุดทาง
- Arduino Uno ของเราจะวนอ่านค่าอนาล็อกแบบจัดหนักจัดเต็มที่พิน
A0 (แกน X)และA1 (แกน Y) - กับดักการแปลงค่าทางฟิสิกส์: เราเขียนแค่
servoX.write(1023)ไปตรงๆ ไม่ได้นะตัวนี้ เซอร์โว่เข้าใจแค่ค่าตั้งแต่0ถึง180องศา ถ้าน้องสั่ง1023ไป เจ้าเซอร์โว่นี่จะหมุนฟรีแบบไม่หยุดจนเกียร์พลาสติกข้างในแหลกเป็นชิ้นๆ แล้วขดลวดข้างในก็อาจจะไหม้ได้เลย! - คณิตศาสตร์ของ
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)