Mục lục:

Arduino: Máy bắn pin: 8 bước (có hình ảnh)
Arduino: Máy bắn pin: 8 bước (có hình ảnh)

Video: Arduino: Máy bắn pin: 8 bước (có hình ảnh)

Video: Arduino: Máy bắn pin: 8 bước (có hình ảnh)
Video: Học lập trình Arduino KHÔNG HỀ KHÓ - Bộ KIT học tập Arduino Uno R3 BLK 2024, Tháng mười một
Anonim
Image
Image

Vì tôi luôn yêu thích cả máy bắn pin và đồ điện tử, tôi quyết định chế tạo máy bắn pin của riêng mình. Tôi đã chọn Arduino cho lập trình và điện tử, bởi vì nó là một nền tảng dễ tiếp cận, vừa nhỏ gọn vừa dễ sử dụng.

Trong hướng dẫn này, tôi sẽ giải thích quá trình phát triển của mình, vì vậy có lẽ một trong các bạn có thể tạo ra thứ gì đó giống nhau.

Bước 1: Xây dựng trường hợp

Xây dựng trường hợp
Xây dựng trường hợp

Hãy bắt đầu với trường hợp của máy bắn pin. Tôi đã thực hiện một công trình khá đơn giản. Tôi cưa một tấm dưới cùng, và dùng 4 trụ gỗ nhỏ ở các góc để nối các mảnh tường. Kích thước của chiếc ốp lưng là sự lựa chọn của riêng bạn, tôi đã chọn làm cho nó nhỏ hơn một chút so với một chiếc máy bắn pin ban đầu vì tôi không có kế hoạch thêm bất kỳ tính năng bổ sung siêu ngoạn mục nào để lấp đầy không gian. Tôi đã sử dụng cả vít và keo để làm cho vỏ máy chắc chắn nhất có thể. Ở phía sau, tôi khoan hai lỗ trên miếng sàn cho hai chân để tạo độ nghiêng mang tính biểu tượng cho máy bắn bi. Một lần nữa, chiều cao của chân là tất cả tùy thuộc vào bạn. Bạn kê chân càng cao thì bóng lăn càng nhanh (xuống dưới).

Bước 2: Xây dựng Flipper Mechanic

Xây dựng Flipper Mechanic
Xây dựng Flipper Mechanic

Vì tôi muốn hạn chế chi phí cho dự án này, tôi quyết định làm những chiếc chân chèo hoàn toàn bằng cơ khí thay vì những chiếc điện tử. Nếu bạn quan tâm đến chân chèo điện tử, bạn có thể sử dụng một cấu trúc hơi giống nhau, nhưng với cái gọi là 'điện từ' được kết nối với nó (các ống dẫn điện có đủ sức mạnh để điều khiển chân chèo quá đắt đối với tôi).

Tôi bắt đầu bằng cách khoan hai lỗ ở đáy cho điểm xoay của cả hai chân chèo. Tôi đã khoan các lỗ (theo ý kiến của tôi) hơi quá gần nhau, và điều này khiến trò chơi cuối cùng trở nên quá dễ dàng. Vì vậy, hãy cẩn thận không đặt chân chèo quá gần nhau, trừ khi bạn muốn có một phong cách chơi dễ dàng.

Tôi cũng khoan hai lỗ ở cả hai bức tường bên song song với các lỗ của máy xúc lật. Những lỗ này được sử dụng cho hai nút lật.

Tôi đã sử dụng lò xo để kéo chân chèo về vị trí ban đầu và tạo cấu trúc xoay giữa chân chèo và các nút để làm cho chúng xoay khi nhấn các nút. Để ngăn lò xo kéo chân chèo quá xa, tôi đặt hai vít để giữ chân chèo ở vị trí ban đầu.

Bước 3: Đặt tường

Đặt tường
Đặt tường

Tôi đã đặt một vài bức tường để chuyển hướng quả bóng pin về phía chân chèo. Chúng rất đơn giản để thực hiện. Chỉ cần khoan 3 lỗ ở dưới cùng của hộp và đẩy ba chốt gỗ vào. Quấn dây chun quanh các ghim và bạn đã hoàn thành.

Bước 4: Thêm các khối điểm

Thêm các khối điểm
Thêm các khối điểm
Thêm các khối điểm
Thêm các khối điểm

Các khối điểm là một trong những phần quan trọng nhất của máy bắn pin, vì vậy hãy đảm bảo rằng bạn làm đúng phần này. Tôi đã thực hiện ba khối điểm cho máy chơi pinball của mình, nhưng một lần nữa, điều này hoàn toàn phụ thuộc vào bạn.

Tôi cưa một đoạn nhỏ của một cây chổi, và quấn dây đồng xung quanh nó. Arduino sẽ cấp nguồn liên tục cho dây đồng này với nguồn 5V. Tôi hàn bốn lò xo bút sang một bên để tiếp xúc tốt hơn với quả bóng.

Cách thức hoạt động của khối điểm là quả bóng hoàn thành một mạch dẫn đến một chân đầu vào trên Arduino. Vì vậy, những gì tôi đã làm là dán lá nhôm vào dưới cùng của hộp (KHÔNG CHẠM VÀO ĐỒNG) và quấn lá này vào một chốt trên Arduino. Bất cứ khi nào quả bóng chạm vào cả đồng và nhôm, mạch hoàn tất và Arduino sẽ nhận được tín hiệu.

Tôi đã kết nối tất cả các khối điểm với nhau bằng cách sử dụng lá nhôm, nhưng hãy nhớ rằng mặt dính KHÔNG dẫn điện.

Bước 5: Thêm trò chơi qua liên hệ

Thêm trò chơi qua liên hệ
Thêm trò chơi qua liên hệ

Ở dưới cùng của máy bắn pin, ở giữa các chân chèo, tôi đã thêm một trò chơi qua tiếp xúc. Bất cứ khi nào bóng chạm vào phần tiếp xúc này, người chơi sẽ bị mất một quả bóng. Việc xây dựng tôi đã thực hiện rất giống với các khối điểm. Chỉ ở đây tôi đã sử dụng hai con vít, và một lần nữa là một miếng giấy nhôm ở phía dưới.

Bước 6: Khoan lỗ cáp

Khoan lỗ cáp
Khoan lỗ cáp
Khoan lỗ cáp
Khoan lỗ cáp
Khoan lỗ cáp
Khoan lỗ cáp

Trước khi bắt đầu nối dây mọi thứ với Arduino, trước tiên chúng ta cần khoan một vài lỗ cho dây cáp. Tôi đã khoan một lỗ qua cả hai miếng lá nhôm, vì vậy một lỗ trên lá nhôm gần các khối điểm và một lỗ trên lá nhôm gần trò chơi khi tiếp xúc.

Bên cạnh đó, tôi cũng khoan một lỗ ở phía dưới bên trái, giữa các bức tường, cho cáp dẫn đến Servo cổng bi phụ.

Cũng nên có một lỗ cho cáp kết nối với màn hình LCD ở phía dưới.

Bước 7: Kết nối mọi thứ

Kết nối mọi thứ
Kết nối mọi thứ
Kết nối mọi thứ
Kết nối mọi thứ

Tôi thực hiện sơ đồ này để có cái nhìn tổng quan hơn về vị trí của tất cả các loại cáp. Các cây thánh giá là các điểm mà cáp kết nối. Tôi đã cố gắng hàn càng nhiều càng tốt để làm cho mọi thứ ổn định và đáng tin cậy hơn một chút. Việc đấu dây sẽ mất một khoảng thời gian, nhưng sau khi hoàn thành, bạn gần như đã hoàn thành!

Bước 8: Tải lên mã

Tải mã sau lên Arduino của bạn để làm cho máy bắn pin của bạn trở nên hoạt động!

// Bao gồm thư viện cho màn hình LCD

#include #include

// Khởi tạo các chân dữ liệu LCD

Màn hình LCD LiquidCrystal (7, 8, 9, 10, 11, 12);

// Tạo một servo

Servo ballGateServo;

// Tạo biến cho các chân mà chúng ta đang sử dụng

int gameoverPin = 6; int scorePin = 5; int loaPin = 4; int ballGateServoPin = 3;

// Khởi tạo các biến trò chơi cho máy bắn pin

int điểm = 0; int điểm cao = 500; bool highscoreReached = false; int bóng = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;

// chạy mã này một lần ở khung đầu tiên

void setup () {// Đặt pinMode cho các chân chúng ta đang sử dụng pinMode (gameoverPin, INPUT); pinMode (ScorePin, INPUT);

// Khởi tạo màn hình LCD bằng cách cung cấp chiều rộng và chiều cao

lcd.begin (16, 2);

// Gắn servo cổng bóng vào chân thích hợp

ballGateServo.attach (ballGateServoPin);

// Đặt lại servo cổng về vị trí bắt đầu

ballGateServo.write (0); }

// Chạy mã này mỗi khung hình

void loop () {// Chụp các đầu vào pin int gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// Thêm vào điểm nếu nhận được đầu vào

if (scoreState) {tone (loaPin, 1000); điểm + = 10; } else {noTone (4); }

// Trừ các quả bóng nếu hố gameover được kích hoạt

if (gameoverState và! gameoverTriggered) {ball - = 1; gameoverTriggered = true; gameoverTimer = gameoverTimerDuration; }

// Bắt đầu đồng hồ chuyển đổi trò chơi ngay khi bóng không chạm vào điểm tiếp xúc trò chơi qua

if (! gameoverState) {if (gameoverTimer> = 1) {gameoverTimer - = 1; } else {gameoverTriggered = false; }}

// Nhấp nháy văn bản trò chơi chuyển sang màn hình LCD và đặt lại tỷ số và quả bóng

if (bóng <= 0) {lcd.setCursor (0, 0); for (int i = 5; i> = 1; i--) {lcd.clear (); chậm trễ (250); lcd.print ("HẾT TRÒ CHƠI"); lcd.setCursor (0, 1); lcd.print ("Thử lại?"); chậm trễ (250); } lcd.clear (); điểm = 0; ballGateServo.write (0); highscoreReached = false; quả bóng = 3; }

if (Score> highscore và! highscoreReached) {

lcd.setCursor (0, 0); for (int i = 5; i> = 1; i--) {lcd.clear (); chậm trễ (250); lcd.print ("ĐIỂM CAO MỚI"); lcd.setCursor (0, 1); lcd.print ("Đột tử!"); chậm trễ (250); } lcd.clear (); quả bóng = 1; ballGateServo.write (120); highscore = điểm số; highscoreReached = true; }

// Cập nhật điểm cao nếu điểm hiện tại cao hơn

if (điểm số> điểm cao) {highscore = điểm số; }

// Đặt con trỏ đến dòng 0

lcd.setCursor (0, 0); // In điểm (cao) hiện tại ra màn hình LCD if (score <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } else {lcd.print ("Điểm:" + String (điểm) + ""); }

// Đặt con trỏ đến dòng 1

lcd.setCursor (0, 1);

// In số lượng bóng hiện tại ra màn hình LCD

lcd.print ("Balls:" + String (banh)); }

Đề xuất: