ชื่อโปรเจกต์: เกมเบียร์ปองอัตโนมัติ - ถ้วยเคลื่อนที่ได้!
อัลกอริทึมการหลบหลีกที่วุ่นวาย: เบียร์ปองอัตโนมัติ
สไลเดอร์หุ่นยนต์มาตรฐานจะเคลื่อนที่อย่างราบรื่นจากจุด A ไปยังจุด B แต่ เกมเบียร์ปองอัตโนมัติ นี้จะทำลายการคาดเดาทางกลไกโดยสิ้นเชิง โดยติดตั้งถ้วยที่บรรจุของเหลวเต็มทั้งแถวลงบนระบบรางเชิงเส้นแบบสองแกนขนาดใหญ่ที่ขับเคลื่อนด้วย NEMA 17 stepper motor. Arduino จะไม่ประมวลผลตามรูปแบบที่กำหนด แต่จะสร้างค่าจำนวนเต็มของความเร็วและระยะทางแบบสุ่มโดยสมบูรณ์ในทันที เปลี่ยนเกมปาร์ตี้ที่เคยนิ่งเฉยให้กลายเป็นเครื่องเล่นอาร์เคดที่เคลื่อนไหวได้จริงและคาดเดาไม่ได้อย่างรุนแรง!

เมทริกซ์การสุ่ม NEMA (AccelStepper.h)
คุณไม่สามารถใช้ DC motor ราคาถูกเพียง 2 ดอลลาร์ได้ เพราะมันจะกระแทกแท่นไม้ขนาดใหญ่และหนักให้ชนเข้ากับขอบและทำลายระบบรางทั้งหมดในทันที
- โปรเจกต์นี้ต้องใช้ไลบรารี
<AccelStepper.h>ที่น่าทึ่งในการขับเคลื่อนA4988Stepper Module และNEMA 17 Stepper Motorจริงๆ - ค่าจำนวนเต็มมหาศาลคือการเร่งความเร็วทางกลไกที่ราบรื่นอย่างสมบูรณ์!
stepper.setAcceleration(200); stepper.setMaxSpeed(400); - การประมวลผลซอฟต์แวร์: ฟังก์ชัน
loop()มีกลไกการสุ่มขนาดใหญ่
if (stepper.distanceToGo() == 0) { // แพลตฟอร์มเพิ่งถึงที่หมาย!
// สร้างตำแหน่งปลายทางใหม่ที่คาดเดาไม่ได้โดยสมบูรณ์ในทันที!
// รางกว้าง 3000 steps พอดี!
long nextRandomPosition = random(0, 3000);
// สร้างความเร็วใหม่ที่ผันผวนโดยสมบูรณ์ในทันที!
long nextRandomSpeed = random(100, 600);
stepper.setMaxSpeed(nextRandomSpeed); // เปลี่ยนโปรไฟล์ความเร็วอย่างรุนแรง!
stepper.moveTo(nextRandomPosition); // เริ่มไดนามิกของกลไกใหม่!
}
stepper.run(); // เป็นสิ่งสำคัญอย่างยิ่งในการขับเคลื่อนฮาร์ดแวร์แบบ non-blocking!
ปัญหา "Homing" ที่เป็นหายนะ (Limit Switches)
หาก Arduino ไฟดับกลางเกม มันจะลืมตำแหน่ง Step 0 ทางคณิตศาสตร์ไปโดยสิ้นเชิง เมื่อรีบูตเครื่อง มันอาจคิดว่าตัวเองอยู่ตรงกลาง พยายามขับเคลื่อนไปทางซ้าย 1500 steps ชนเข้ากับผนังจริงที่ 500 steps ทำให้สายพาน Timing Belt ยางฉีกขาดอย่างรุนแรง และทำให้ A4988 ลุกไหม้ได้!
- การประมวลผล Limit Switch: โปรแกรมเมอร์ต้องติดตั้ง Microswitches แบบกลไกจริงที่ขอบด้านซ้ายของรางพอดี!
- เมื่อ Uno เปิดเครื่อง มันจะรัน
Homing Sequence - มันจะบังคับ Stepper ไปทางซ้ายอย่างช้าๆ ด้วยความเร็วที่ปลอดภัยอย่างยิ่ง (
Speed = 50) จนกระทั่งdigitalRead(LimitSwitch) == LOW! - ทันทีที่ Switch คลิก Uno จะหยุดกลไก:
stepper.setCurrentPosition(0);(การปรับเทียบจุดศูนย์ที่สมบูรณ์แบบเสร็จสมบูรณ์!)
การสร้างแพลตฟอร์มเคลื่อนที่ต้องใช้อุปกรณ์
- Arduino Uno/Nano (ความเร็วในการประมวลผลมาตรฐาน)
- A4988 หรือ TMC2208 Stepper Driver (TMC2208 เป็นที่นิยมอย่างมากเพราะช่วยขจัดเสียงแหลมสูงที่น่าสะพรึงกลัวที่ Stepper มักจะสร้างขึ้น!)
- NEMA 17 Stepper Motor (ขับเคลื่อนด้วยอะแดปเตอร์แปลงไฟภายนอกขนาดใหญ่ 12V 2-Amp)
- ชุดประกอบกลไก Linear Rail และ Timing Belt ที่สมบูรณ์ (มักจะมาจากชิ้นส่วนโครง 3D printer เชิงพาณิชย์มาตรฐานโดยตรง!)
- Standard Mechanical End-Stop Microswitch