Mục lục:
Video: Trò chơi đoán màu từ xa IR-Remote: 3 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Trong phần hướng dẫn này, tôi sẽ chỉ cho bạn cách điều khiển đèn LED RGB bằng điều khiển từ xa IR và tạo ra một trò chơi thú vị từ nó!
Bước 1: Các bộ phận cần thiết
Các phần bạn sẽ cần cho dự án này là:
- arduino one- RGB Led- IR-Sensor
(số lượng led tùy thuộc vào trò chơi, số lượng cuộc sống hoặc) - 2 led xanh - 1 led vàng - 1 led cam- 3 led đỏ
Bước 2: Mã
#bao gồm
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int levelPin1 = 2;
int levelPin2 = 3; int levelPin3 = 4; int levelPin4 = 7;
int RECV_PIN = 11;
IRrecv không thể thay đổi (RECV_PIN); giải mã kết quả;
// màu đầu vào
int input = {-1, -1, -1}; int color = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// tạo màu
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// biến trò chơi
int diff = 200;
int levelNumber = 1;
int cấp = {-1, -1, -1, -1};
int t = 0;
int level1 = 255;
int level2 = 0; int level3 = 0; int level4 = 0;
int lives = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Serial.begin (9600); không thể thay đổi.enableIRIn (); // khởi động pinMode thu (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
if (unacv.decode (& results)) // nhận tín hiệu từ remote {Serial.println (results.value, DEC); // hiển thị các tín hiệu nhận được từ mỗi nút được nhấn. // nhận công tắc tín hiệu tiếp theo (results.value) {// chuyển tín hiệu thành số trên các nút và gán các hành động cho các nút
trường hợp 109562864:
addWaarde (1); nghỉ;
trường hợp 109562824:
addWaarde (2); nghỉ;
trường hợp 109562856:
addWaarde (3); nghỉ;
trường hợp 109562872:
addWaarde (4); nghỉ;
trường hợp 109562820:
addWaarde (5); nghỉ;
trường hợp 109562852:
addWaarde (6); nghỉ;
trường hợp 109562868:
addWaarde (7); nghỉ;
trường hợp 109562828:
addWaarde (8); nghỉ;
trường hợp 109562860:
addWaarde (9); nghỉ;
trường hợp 109562876:
addWaarde (0); nghỉ;
case 109562818: // oud ding enter / R CLK
handleInput (); nghỉ;
case 109562816: // oud ding power
handleColor (); nghỉ; case 109562878: // oud ding hủy / L CLK resetColor (); nghỉ;
case 109562866: // lege knop midden
randomColor (); nghỉ;
trường hợp 109562830: // pijltje naar rechts
displayEverything (); nghỉ; case 109562838: // esc case 109562822: // AV source resetEverything (); nghỉ; }
// gán các nút trên điều khiển từ xa để điều khiển màu sắc: bằng cách này, người chơi có thể xem màu sắc trông như thế nào và cách kết hợp chúng, // trước khi bắt đầu trò chơi. switch (results.value) {case 109562840: rood = 255; nghỉ;
trường hợp 109562844:
rên rỉ = 255; nghỉ;
trường hợp 109562850:
blauw = 255; nghỉ;
trường hợp 109562836:
rood = 0; rên rỉ = 0; blauw = 0; nghỉ; }
}
analogWrite (redPin, abs (255 - rood)); // điều khiển led RGB: ngược lại, vì của tôi có dây ngược.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// điều khiển đèn led trực tiếp
if (lives == 2) {levens1 = 0; } if (lives == 1) {levens2 = 0; } if (lives == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// điều khiển dẫn mức
if (levelNumber == 1) {level1 = 255; } if (levelNumber == 2) {level1 = 255; cấp2 = 255; } if (levelNumber == 3) {level1 = 255; cấp2 = 255; cấp3 = 255; } if (levelNumber == 4) {level1 = 255; cấp2 = 255; cấp3 = 255; cấp4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int value) {// thêm giá trị được nhấn vào danh sách
if (indexNumber == 3) {
trở lại; }
if (input [indexNumber] == -1) {
input [indexNumber] = giá trị; indexNumber ++; }}
void handleInput () {// tạo 'waarde' (giá trị) ra khỏi danh sách
waarde = abs (đầu vào [0] * 100 + đầu vào [1] * 10 + đầu vào [2]); đầu vào [0] = -1; // reset de signalen input [1] = -1; đầu vào [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// thêm 'waarde' 3 chữ số vào danh sách
if (indexColor == 3) {
trở lại; }
if (color [indexColor] == -1) {
color [indexColor] = waarde; if (color [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// làm cho ánh sáng chuyển thành màu ngẫu nhiên và lưu nó trong các biến
roodRandom = ngẫu nhiên (0, 255);
groenRandom = random (0, 255);
blauwRandom = random (0, 255);
rood = roodRandom;
groen = groenRandom; blauw = blauwRandom; Serial.print ("roodRandom ="); Serial.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
}
void handleColor () {// biến 'waarde' từ danh sách thành biến 'Gok' (đoán)
roodGok = color [0]; groenGok = color [1]; blauwGok = color [2]; // kiểm tra xem các biến Gok có khác biệt quá nhiều với màu thực ngẫu nhiên hay không: nếu có, hiển thị kết quả phỏng đoán trong ba giây, nhấp nháy màu xanh lục và thay đổi màu lần nữa, thêm một cấp độ bắt cóc làm cho sự khác biệt được phép nhỏ hơn // nếu không, hiển thị đoán trong ba giây, nhấp nháy màu đỏ và trừ một mạng // nếu bạn hết mạng, trò chơi sẽ bắt đầu lại nếu (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); chậm trễ (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); chậm trễ (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); chậm trễ (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); levelNumber ++; khác - = 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); chậm trễ (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
cuộc sống--; } if (lives == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); chậm trễ (100); resetEverything (); }
}
void resetColor () {// sử dụng cho các giá trị đặt lại, khi nhấn nhầm hoặc mọi lần đoán mới (chỉ để chắc chắn)
màu [0] = -1; màu [1] = -1; màu [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// khởi động lại trò chơi
màu [0] = -1; màu [1] = -1; màu [2] = -1;
indexNumber = 0;
indexColor = 0;
cuộc sống = 3;
rood = 0; rên rỉ = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
cấp1 = 255;
cấp2 = 0; cấp3 = 0; cấp 4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// sử dụng điều này để hiển thị thông tin quan trọng trên màn hình nối tiếp
Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); Serial.print ("roodRandom ="); Serial.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
Serial.print ("rood =");
Serial.println (rood); Serial.print ("groen ="); Serial.println (Groen); Serial.print ("blauw ="); Serial.println (blauw);
Serial.print ("waarde opgeslagen:");
Serial.println (waarde); }
Bước 3: Xây dựng
Bạn rõ ràng muốn có một bản dựng đẹp cho dự án này. phần này khá dễ hiểu, nhưng có một số điều cần lưu ý: - giữ cho bảng điều khiển phía trước mỏng để bạn vẫn có thể dán đèn led của mình qua nó và bộ thu IR vẫn hoạt động
- giữ đủ không gian trong bản dựng cho arduino và bảng hàn
- đảm bảo có một lỗ ở phía sau để cấp nguồn cho arduino
Tôi đã thêm một sơ đồ sơ bộ cho hệ thống dây điện.
Chúc may mắn và vui vẻ!
Đề xuất:
Chạy các trò chơi Steam của bạn trên Bộ máy trò chơi cổ điển với Raspberry Pi: 7 bước
Chạy các trò chơi Steam của bạn trên Bộ máy trò chơi cổ điển với Raspberry Pi: Bạn có tài khoản Steam với tất cả các trò chơi mới nhất không? Làm thế nào về một tủ arcade? Nếu vậy, tại sao không kết hợp cả hai thành một máy chơi game Steam Streaming tuyệt vời. Cảm ơn những người ở Steam, giờ đây bạn có thể phát trực tuyến các trò chơi mới nhất từ PC hoặc Ma
Tính điểm điện tử cho trò chơi ném túi đậu Trò chơi bóng chày: 8 bước (có hình ảnh)
Tính điểm điện tử cho trò chơi ném túi đậu Trò chơi bóng chày: Tài liệu hướng dẫn này sẽ giải thích cách tự động giữ điểm số bằng phương pháp điện tử cho trò chơi bóng chày theo chủ đề Túi đậu. Tôi sẽ không trình bày cách xây dựng chi tiết của trò chơi bằng gỗ, bạn có thể tìm thấy những kế hoạch đó trên trang web của Ana White tại: https: // www
Trò chơi Aruduino LED Nhấp nhanh Trò chơi hai người chơi: 8 bước
Aruduino LED Game Fast Click Two Player Game: Dự án này được lấy cảm hứng từ @HassonAlkeim. Nếu bạn sẵn sàng tìm hiểu sâu, đây là một liên kết bạn có thể kiểm tra https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Trò chơi này là một phiên bản cải tiến của Alkeim's. Nó là một
Bộ điều khiển trò chơi tự làm dựa trên Arduino - Bộ điều khiển trò chơi Arduino PS2 - Chơi Tekken với tự làm trò chơi Arduino: 7 bước
Bộ điều khiển trò chơi tự làm dựa trên Arduino | Bộ điều khiển trò chơi Arduino PS2 | Chơi Tekken với Bàn điều khiển Arduino tự làm: Xin chào các bạn, chơi game luôn thú vị nhưng chơi với Bộ điều khiển trò chơi tùy chỉnh tự làm của riêng bạn sẽ thú vị hơn
Trình mô phỏng trò chơi điện thoại thông minh- Chơi trò chơi Windows bằng IMU điều khiển bằng cử chỉ, Gia tốc kế, Con quay hồi chuyển, Từ kế: 5 bước
SmartPhone Game Simulator- Chơi Windows Games Sử dụng IMU Điều khiển bằng cử chỉ, Gia tốc kế, Con quay hồi chuyển, Từ kế: Hỗ trợ dự án này: https://www.paypal.me/vslcreations bằng cách quyên góp cho mã nguồn mở & hỗ trợ để phát triển hơn nữa