ความคล่องแคล่วทางกายภาพ: เกมต่อวงจร Buzz-Wire
เกมงานวัดสุดคลาสสิก "ห้ามแตะสายไฟ" โดยพื้นฐานแล้วเป็นบทเรียนในการสร้างวงจรลัด (short-circuit) ทางไฟฟ้าโดยเจตนา Circuit Completion Game ขยายแนวคิดง่ายๆ นั้น มันไม่ได้แค่ส่งเสียง Buzz เท่านั้น แต่ยังติดตามจำนวนชีวิตของผู้เล่น จับเวลาความเร็วในการเล่นโดยใช้ millis() clock และจัดอันดับความสัมพันธ์ระหว่างมือกับตาของผู้เล่นทางคณิตศาสตร์แบบ Native บน Arduino!

การจัดการวงจรลัดทางไฟฟ้า
ตรรกะนี้อ้างอิงจากแนวคิดของ INPUT_PULLUP โดยสิ้นเชิง
- เขาวงกตลวดขนาดยักษ์ (ตัวเส้นทาง) ถูกบัดกรีทางกายภาพโดยตรงเข้ากับ
GNDpin ของ Arduino - ไม้กายสิทธิ์โลหะของผู้เล่น (วงแหวน) เชื่อมต่อสายไฟโดยตรงเข้ากับ
Pin 2 - ในซอฟต์แวร์:
pinMode(2, INPUT_PULLUP);ตัวต้านทานภายในจะบังคับให้Pin 2อ่านค่าเป็นHIGHอย่างชัดเจน - ตัวแปรการชน: ในขณะที่ไม้กายสิทธิ์ของผู้เล่นบังเอิญสัมผัสเขาวงกตโลหะขนาดใหญ่ เส้นทางไฟฟ้าจะปิด
Pin 2จะลดลงเป็นLOWทันที
การสร้างระบบ 'ชีวิต' แบบ Debounced
ส่วนที่ยากที่สุดของโค้ดนี้คือการป้องกันไม่ให้ Arduino นับการแตะเพียงเล็กน้อยครั้งเดียวว่าเป็นความล้มเหลวสิบล้านครั้ง!
if (digitalRead(WandPin) == LOW) { ... }- Uno อ่านค่า
Pin 2ได้หลายล้านครั้งต่อวินาที หากคุณแตะสายไฟครึ่งวินาที Uno จะนับว่าเป็นการ "แตะ" 500,000 ครั้งและจบเกมทันที! - ตรรกะ Debounce: คุณต้องใช้ตัวจับเวลาล็อคเอาต์ทางคณิตศาสตร์เข้ามาช่วย
if (digitalRead(WandPin) == LOW && (millis() - lastStrike > 1000)) {
// เรียกใช้งานก็ต่อเมื่อผ่านไป 1000 มิลลิวินาทีเต็ม ตั้งแต่การชนครั้งล่าสุด!
lastStrike = millis();
lives = lives - 1;
tone(BuzzerPin, 200, 500); // เล่นเสียงผิดพลาด 200Hz ที่ไม่น่าฟัง!
}
- ถ้า
lives == 0, Arduino จะล็อคสถานะเกม เปลี่ยนLEDsเป็นสี Red และเล่นเมโลดี้ "Game Over" แบบไล่ระดับลง!
ฮาร์ดแวร์ที่จำเป็นสำหรับเกม Wire
- Arduino Uno/Nano
- สายทองแดงเปลือยขนาดใหญ่ 12 AWG (ดัดให้เป็นรูปทรงที่น่ากลัวและบิดเบี้ยวด้วยคีม)
- ลวดโลหะแข็งขนาดเล็ก ดัดเป็นวงแหวนสำหรับไม้กายสิทธิ์ของผู้เล่น
- Piezo Buzzer สำหรับเสียงเตือน (การลงโทษด้วยเสียง)
- ชุด Red LEDs 3 ดวง เพื่อแสดงจำนวนชีวิตที่เหลือของผู้เล่นด้วยภาพ!