Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Dự án Tinkercad »
Đây là phiên bản đèn LED của Trò chơi Whack-a-Mole cổ điển.
Về cơ bản, một đèn LED ngẫu nhiên trong số 4 đèn LED sáng lên thay vì một nốt ruồi nhìn ra khỏi lỗ và người chơi sẽ tắt đèn LED bằng cần điều khiển thay vì đánh mạnh vào nốt ruồi!
Quân nhu
Arduino Uno / Nano hoặc bất kỳ bảng biến thể nào
4 đèn LED và điện trở hạn chế dòng điện tương ứng.
Mô-đun cần điều khiển với đầu ra X, Y
Bộ rung hoạt động (tùy chọn)
Dây nhảy.. đủ để gỡ lỗi!
Bước 1: Nối mạch
Kết nối bo mạch Arduino Uno với mô-đun cần điều khiển, kết nối 2 chân Đầu vào tương tự với đầu ra X Y của cần điều khiển.
4 đèn LED được kết nối bằng điện trở vào 4 chân đầu ra Digital hoặc Analog.
Active Buzzer được kết nối với chân đầu ra kỹ thuật số
Bước 2: Mã để thiết lập ghim
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 selectLED = 0; // Có thể là một trong A2, A3, A4 hoặc A5
void setup () {
pinMode (xPin, INPUT);
pinMode (yPin, INPUT);
pinMode (leftLED, OUTPUT);
pinMode (rightLED, OUTPUT);
pinMode (topLED, OUTPUT); pinMode (bottomLED, OUTPUT);
pinMode (joyPin, OUTPUT);
pinMode (buzzerPin, OUTPUT);
}
Bước 3: Mã cho cảm biến cần điều khiển
void điều khiểnSenseRoutine ()
{
xVal = analogRead (xPin); yVal = analogRead (yPin); butVal = digitalRead (butPin);
joyPin = mapXYtoPin (xVal, yVal, butVal);
analogWrite (đã chọnLED, 1024);
if (selectLED! = leftLED) {analogWrite (leftLED, 0); } if (selectLED! = rightLED) {analogWrite (rightLED, 0); }
if (selectLED! = topLED) {analogWrite (topLED, 0); }
if (selectLED! = bottomLED) {analogWrite (bottomLED, 0); }
if (joyPin == selectLED) // Mole Whacked
{
analogWrite (đã chọnLED, 0);
//
// Thêm mã để phát nhạc / giai điệu để chơi moLED !!
//
}
}
int mapXYtoPin (int xVal, int yVal, int butVal) {if ((xVal <100) and (yVal 400)) {return bottomLED; }
else if ((xVal> 900) và (yVal 400)) {return topLED; }
else if ((xVal 400) và (yVal <100)) {return leftLED; }
else if ((xVal 400) và (yVal> 900)) {return rightLED; }
else {return -1; }
}
Bước 4: Mã quy trình vòng lặp chính
void loop () {
for (int i = 0; i <length; i ++)
{
if (random (0, 100)> 90) {selectLED = anaPinMap (random (2, 6));}
// Thêm mã cho nhạc trò chơi tại đây
// *** *** ***
//
}
int anaPinMap (int randNum) {
if (randNum == 2) {return A2; }
else if (randNum == 3) {return A3; }
else if (randNum == 4) {return A4; }
else if (randNum == 5) {return A5; }
}
Bước 5: Sẵn sàng dùng thử
Bước 6: Triển khai Arduino Nano cho Nguyên mẫu
Cách triển khai tương tự được thực hiện với Arduino nano trong breadboard, bảng được tạo tùy chỉnh với đèn LED, điện trở và bộ rung và công tắc cần điều khiển X-Y.
Bước 7: Nguyên mẫu Whack-a-MoLED được đóng gói cuối cùng để giới thiệu Người thân yêu của bạn
Nguồn cung cấp cho nguyên mẫu:
Hộp các tông đơn giản (Tối thiểu 4cmX6cmX3cm), hỗ trợ thêm các miếng bìa cứng.
Giấy trang trí để bọc khung xe (tùy chọn)
Keo / keo đa dụng
Breadboard mini (tùy chọn)
Arduino nano
PCB phổ thông nhỏ
Pin 9V để cấp nguồn cho Arduino nano (kết nối với chân Vin).
Công tắc SPDT
Phần còn lại của nguồn cung cấp (đèn LED, điện trở, cần điều khiển, còi, dây dẫn) như được mô tả trong bước 1 ở trên.