สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ต่อวงจร
- ขั้นตอนที่ 2: รหัสสำหรับการตั้งค่าพิน
- ขั้นตอนที่ 3: รหัสสำหรับการตรวจจับจอยสติ๊ก
- ขั้นตอนที่ 4: รหัสประจำลูปหลัก
- ขั้นตอนที่ 5: พร้อมที่จะลอง
- ขั้นตอนที่ 6: การใช้งาน Arduino Nano สำหรับต้นแบบ
- ขั้นตอนที่ 7: ต้นแบบ Whack-a-MoLED ที่บรรจุหีบห่อขั้นสุดท้ายเพื่อนำเสนอคนที่คุณรัก
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
โครงการทิงเกอร์แคด »
นี่คือเกม Whack-a-Mole สุดคลาสสิกเวอร์ชัน LED
โดยทั่วไปแล้ว LED แบบสุ่มจาก LED 4 ดวงจะสว่างขึ้นแทนไฝที่มองออกมาจากรู และผู้เล่นปิดไฟ LED โดยใช้จอยสติ๊กแทนการตีไฝ!
เสบียง
Arduino Uno/Nano หรือบอร์ดรุ่นใดก็ได้
ไฟ LED 4 ดวงและตัวต้านทานจำกัดกระแสที่สอดคล้องกัน
โมดูลจอยสติ๊กพร้อมเอาต์พุต X, Y
Buzzer ที่ใช้งานอยู่ (ตัวเลือก)
สายจัมเปอร์..พอแก้จุดบกพร่อง!
ขั้นตอนที่ 1: ต่อวงจร
ต่อบอร์ด Arduino Uno เข้ากับโมดูลจอยสติ๊ก โดยเชื่อมต่อพินอินพุตแบบอะนาล็อก 2 พินเข้ากับเอาต์พุต XY ของจอยสติ๊ก
ไฟ LED 4 ดวงที่จะเชื่อมต่อโดยใช้ตัวต้านทานกับพินเอาต์พุตแบบดิจิตอลหรืออนาล็อก 4 ตัว
Active Buzzer เพื่อเชื่อมต่อกับพินเอาต์พุตดิจิตอล
ขั้นตอนที่ 2: รหัสสำหรับการตั้งค่าพิน
int xVal = 0, yVal = 0, butVal = 0, xPin = A0, yPin = A1, joyPin = 13, butPin = 7, speakerPin = 9;
int leftLED = A2, rightLED = A3, topLED = A4, bottomLED = A5;
int ที่เลือก LED = 0; // สามารถเป็นหนึ่งใน A2, A3, A4 หรือ A5
การตั้งค่าเป็นโมฆะ () {
pinMode(xPin, อินพุต);
pinMode(yPin, INPUT);
โหมดพิน (leftLED, OUTPUT);
โหมดพิน (ไฟ LED ขวา, เอาต์พุต);
โหมดพิน (ไฟบน, เอาต์พุต); โหมดพิน (ด้านล่าง, เอาต์พุต);
pinMode (joyPin, เอาต์พุต);
pinMode(buzzerPin, OUTPUT);
}
ขั้นตอนที่ 3: รหัสสำหรับการตรวจจับจอยสติ๊ก
โมฆะจอยสติ๊กSenseRoutine()
{
xVal = analogRead (xPin); yVal = analogRead (yPin); butVal = digitalRead (butPin);
joyPin = mapXYtoPin(xVal, yVal, butVal);
analogWrite (เลือก LED, 1024);
ถ้า (selectedLED != leftLED) { analogWrite (leftLED, 0); } if (เลือก LED != rightLED) { analogWrite (rightLED, 0); }
ถ้า (selectedLED != topLED) { analogWrite (topLED, 0); }
ถ้า (selectedLED != bottomLED) { analogWrite (bottomLED, 0); }
ถ้า (joyPin == เลือก LED) // Mole Whacked
{
analogWrite (เลือก LED, 0);
//
// เพิ่มโค้ดเล่นเพลง/โทนสำหรับตี moLED!!
//
}
}
int mapXYtoPin (int xVal, int yVal, int butVal) { if ((xVal <100) และ (yVal 400)) { ส่งคืน LED ด้านล่าง; }
else if ((xVal> 900) และ (yVal 400)) { return topLED; }
else if ((xVal 400) และ (yVal <100)) { return leftLED; }
else if ((xVal 400) และ (yVal > 900)) { return rightLED; }
อื่น { กลับ -1; }
}
ขั้นตอนที่ 4: รหัสประจำลูปหลัก
วงเป็นโมฆะ () {
สำหรับ (int i = 0; i < length; i++)
{
ถ้า (สุ่ม (0, 100) > 90) { เลือก LED = anaPinMap (สุ่ม (2, 6));}
// เพิ่มโค้ดเพลงประกอบเกมที่นี่
// *** *** ***
//
}
int anaPinMap (int randNum) {
ถ้า (randNum == 2) { ส่งคืน A2; }
อื่นถ้า (randNum == 3) { ส่งคืน A3; }
อื่นถ้า (randNum == 4) { ส่งคืน A4; }
อื่นถ้า (randNum == 5) { กลับ A5; }
}
ขั้นตอนที่ 5: พร้อมที่จะลอง
ขั้นตอนที่ 6: การใช้งาน Arduino Nano สำหรับต้นแบบ
การใช้งานแบบเดียวกันกับ Arduino nano ในเขียงหั่นขนม บอร์ดสั่งทำพิเศษพร้อมไฟ LED ตัวต้านทานและออด และสวิตช์จอยสติ๊ก X-Y
ขั้นตอนที่ 7: ต้นแบบ Whack-a-MoLED ที่บรรจุหีบห่อขั้นสุดท้ายเพื่อนำเสนอคนที่คุณรัก
วัสดุสำหรับต้นแบบ:
กล่องกระดาษแข็งธรรมดา (ขั้นต่ำ 4 ซม. X 6 ซม. X 3 ซม.) ชิ้นส่วนกระดาษแข็งพิเศษเพื่อรองรับ
กระดาษตกแต่งสำหรับหุ้มตัวถัง (อุปกรณ์เสริม)
กาวอเนกประสงค์/กาว
เขียงหั่นขนมขนาดเล็ก (ไม่จำเป็น)
Arduino นาโน
PCB สากลขนาดเล็ก
แบตเตอรี่ 9V สำหรับจ่ายไฟ Arduino nano (เชื่อมต่อกับขา Vin)
สวิตช์ SPDT
อุปกรณ์สิ้นเปลืองที่เหลือ (ไฟ LED, ตัวต้านทาน, จอยสติ๊ก, ออด, สายไฟ) ตามที่อธิบายไว้ในขั้นตอนที่ 1 ด้านบน