Mục lục:

Máy trống Servo Arduino: 4 bước
Máy trống Servo Arduino: 4 bước

Video: Máy trống Servo Arduino: 4 bước

Video: Máy trống Servo Arduino: 4 bước
Video: Điều Khiển Động Cơ Servo Bằng Arduino Uno R3 Và Chiết Áp | Điện tử DAT 2024, Tháng bảy
Anonim
Image
Image

Đây là hai máy trống hoặc rô bốt điều khiển micro-servo và Arduino Uno đơn giản. Servos được gắn trên một giá đỡ hình chữ L bằng gỗ được giữ vào trống bẫy bằng 4 nam châm mạnh. Các cánh tay servo được bắt vít vào hai chiếc đũa đóng vai trò là thanh trống. Nó là khá lớn nhưng không quá lớn. Có thể thu được những bản nhạc to hơn nhiều bằng cách sử dụng các Servos kích thước tiêu chuẩn và các thanh trống thật nặng hơn một chút. Nhưng điều đó cũng sẽ yêu cầu một nguồn cung cấp điện riêng cho các servo. Bằng cách sử dụng micro-servos, Arduino cung cấp đủ dòng điện để cấp nguồn trực tiếp cho chúng mà không cần nguồn điện riêng.

Video cho thấy nỗ lực của tôi trong việc lập trình một phiên bản đơn giản của bài độc tấu trống Wipeout. Tất nhiên, nó không phải là 160 nhịp thực mỗi phút nhưng điều đó có thể dễ dàng đạt được bằng cách thêm một servo khác, điều này sẽ khá tuyệt. Tôi chưa tính toán bpm cao nhất có thể đạt được bằng cách sử dụng một servo và nó yêu cầu một số thời gian chậm trễ trong việc đưa dùi trống từ vị trí đỗ sang đầu trống.

Các nhịp điệu mà bạn có thể tạo ra chỉ bị giới hạn bởi trí tưởng tượng của bạn và máy đánh trống là một người bạn đồng hành thú vị hơn để chơi cùng máy đánh trống kỹ thuật số, nếu bạn là một nhạc sĩ.

Nhược điểm duy nhất là tiếng ồn servo không thực sự đáng chú ý mặc dù âm thanh máy ảnh có vẻ khá đáng chú ý.

Bước 1: Xây dựng Giá đỡ Servo

Xây dựng Giá đỡ Servo
Xây dựng Giá đỡ Servo
Xây dựng Giá đỡ Servo
Xây dựng Giá đỡ Servo

Giá đỡ này được làm từ một số dải ván ép sở thích mà tôi có trong tay. Tôi đã tạo ra một hình chữ L bằng cách bắt vít hai mảnh với nhau bằng một giá đỡ chữ L bằng kim loại. Sau đó, một khối gỗ nhỏ được dán vào dải trên cùng để giữ hai servo.

Tôi có hai giá đỡ servo tiện dụng mà tôi đã vặn vào khối gỗ.

Tôi đã sử dụng 4 nam châm neodymium để giữ giá đỡ vào trống bẫy.

Bước 2: Nối dây Servos vào Arduino Uno

Nối dây Servos với Arduino Uno
Nối dây Servos với Arduino Uno

Servos vcc (dây giữa) đi đến các chân Arduino 5 v.

Các dây nối đất đến mặt đất Arduino.

Các dây tín hiệu đi đến chân 6 và 7.

Một tấm chắn servo sẽ làm cho nó dễ dàng hơn nếu bạn có một tấm chắn.

Bước 3: Mã Arduino…

Dưới đây là bản phác thảo đơn giản để chơi Wipeout. Bạn chỉ cần điều chỉnh các vị trí servo cho thiết lập cụ thể của mình.

Chúc vui vẻ!

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "servo.h"

// tay trống servo Jim Demello tháng 6 năm 2018

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

if (servoNumber == 1) {

myservo1.write (servoPosition);

}

if (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

if (servoNumber == 1) {

if (beat) {beat = 10; // nếu beat = 1 thì hãy thêm một chút servo xuống để tiếng đập mạnh hơn

}

myServo (150 + beat, servoNumber); //xuống

trì hoãn (delayVal);

myServo (100, servoNumber); // up

trì hoãn (delayVal);

}

if (servoNumber == 2) {

if (beat) beat = -10;

myServo (60 + beat, servoNumber); //xuống

trì hoãn (delayVal);

myServo (80, servoNumber); // up

trì hoãn (delayVal);

}

}

void setup ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // gắn servo trên chân 9 vào đối tượng servo

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // gắn servo trên chân 9 vào đối tượng servo

myservo2.write (90);

}

void loop () {

quét sạch (); // quy trình trống xóa

// doOneEighthNote (2, 0);

chậm trễ (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // parm đầu tiên là số servo và parm thứ hai là beat (1 = beat, 0 = no beat)

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 0); doOneEighthNote (1, 0); doOneEighthNote (2, 1); doOneEighthNote (1, 0);

doOneEighthNote (2, 0); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

doOneEighthNote (2, 0); doOneEighthNote (1, 0); doOneEighthNote (2, 1); doOneEighthNote (1, 0);

doOneEighthNote (2, 0); doOneEighthNote (1, 0); doOneEighthNote (2, 1); doOneEighthNote (1, 0);

doOneEighthNote (2, 0); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0);

}

Đề xuất: