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

การควบคุมการลัดวงจรไฟฟ้า
ตรรกะนี้อิงตามแนวคิด INPUT_PULLUP โดยสมบูรณ์
- เขาวงกตลวดขนาดใหญ่ (เส้นทาง) จะถูกบัดกรีโดยตรงเข้ากับขา
GNDของ 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)) {
// Only trigger if a full 1000 milliseconds have passed since the LAST strike!
lastStrike = millis();
lives = lives - 1;
tone(BuzzerPin, 200, 500); // Play an ugly 200Hz error note!
}
- หาก
lives == 0Arduino จะล็อคสถานะเกม เปลี่ยน LED เป็นสีแดง และเล่นเพลง "Game Over" ที่มีทำนองลดหลั่นกัน!
ฮาร์ดแวร์ที่จำเป็นสำหรับเกมลวด
- Arduino Uno/Nano.
- ลวดทองแดงเปลือยขนาดใหญ่ 12 AWG (ดัดให้เป็นรูปทรงที่น่ากลัวและบิดเบี้ยวโดยใช้คีม)
- ลวดโลหะแข็งขนาดเล็กกว่า ดัดเป็นห่วงสำหรับไม้กายสิทธิ์ของผู้เล่น
- Piezo Buzzer สำหรับการลงโทษด้วยเสียง
- LED สีแดง 3 ดวง เพื่อแสดงจำนวนชีวิตที่เหลือของผู้เล่น