Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Những người chơi trống sẽ dành hàng giờ đồng hồ để luyện tập… Nhưng không phải ai cũng có thể có một chiếc trống ở nhà: không gian và tiếng ồn là một vấn đề lớn!
Vì lý do này, chúng tôi muốn tạo ra một bộ trống di động và im lặng để bạn có thể chơi tại nhà.
Bộ trống này rất dễ sử dụng, bạn chỉ cần đánh vào các miếng đệm và nó sẽ phát ra âm thanh như trống thật! Nó cũng đi kèm với một màn hình nơi bạn có thể thấy bàn phím wich mà bạn đang nhấn. Và nếu bạn muốn sử dụng nó ở chế độ im lặng, chỉ cần cắm tai nghe của bạn vào máy tính xách tay!
Bước 1: Những gì bạn cần
VẬT LIỆU
- Arduino Uno
- Breadboard
- Một số dây
- 5x piezos
- Điện trở 5x 1M Ohm
- 5 nắp lọ
- Bọt Eva
- Tấm xốp
CÁC CHƯƠNG TRÌNH:
- Arduino IDE
- Xử lý
* Để tải các chương trình trên xuống máy tính của bạn, hãy làm theo các liên kết bên dưới:
- https://www.arduino.cc/en/main/software
- https://www.arduino.cc/en/main/software
Bước 2: Lắp ráp mạch
Trước hết, chúng ta cần hàn vào piezos (GND vào phần màu vàng và dây pin analog vào phần màu trắng của piezo).
Chúng tôi sẽ sử dụng một breadboard để kết nối mọi thứ.
Nối điện trở và dây dẫn của piezo như trong sơ đồ trên. Sau đó kết nối dây GND của breadboard với GND trên Arduino. Cuối cùng, kết nối mỗi dây của piezo với một chân analog trên Arduino của bạn như hình dưới đây.
Piezos kết nối với chân analog:
- Caixa = A0;
- Charles = A1;
- Tomtom = A2;
- Sụp đổ = A3;
- Bombo = A4;
Bước 3: Lập trình nó
Chúng tôi quyết định tạo màn hình của riêng mình cho bộ trống thay vì sử dụng một chương trình cài sẵn. Chúng tôi đã sử dụng Xử lý cho việc này.
Chúng tôi đã lập trình nó để khi một piezo được nhấn, âm thanh của trống tương ứng sẽ phát ra. Ngoài ra, hình trống tương ứng sẽ sáng trên màn hình.
Bạn sẽ cần nhập âm thanh xử lý và xử lý các thư viện nối tiếp.
Đừng quên thêm âm thanh trống vào thư mục dữ liệu!
MÃ ARDUINO
// CÁC PIEZOS ĐƯỢC KẾT NỐI VỚI CÁC PIN ANALOG
const int caixa = A0;
const int charles = A1;
const int tomtom = A2;
const int crash = A3;
const int bombo = A4;
const int ngưỡng = 100; // giá trị ngưỡng để quyết định khi âm thanh được phát hiện có phải là tiếng gõ hay không
// ĐỌC VÀ LƯU TRỮ GIÁ TRỊ ĐÃ ĐỌC TỪ PIN CẢM BIẾN
int caixaReading = 0;
int charlesReading = 0;
int tomtomReading = 0;
int crashReading = 0;
int bomboReading = 0;
void setup () {
Serial.begin (9600); // sử dụng cổng nối tiếp
}
void loop () {
// đọc cảm biến và lưu trữ trong biến cảm biến
caixaReading = analogRead (caixa);
// nếu số đọc cảm biến lớn hơn ngưỡng:
if (caixaReading> = ngưỡng) {
// NẾU BẠN HIT CAIXA, HÃY GỬI 0 ĐỂ XỬ LÝ
Serial.print ("0,");
Serial.println (caixaReading);
}
charlesReading = analogRead (charles);
if (charlesReading> = ngưỡng) {
// NẾU BẠN NGHE BIỂU HIỆN, HÃY GỬI 1 ĐỂ XỬ LÝ
Serial.print ("1,");
Serial.println (caixaReading);
}
tomtomReading = analogRead (tomtom);
if (tomtomReading> = ngưỡng) {
// NẾU BẠN HIT CAIXA, HÃY GỬI 2 ĐỂ XỬ LÝ
Serial.print ("2,");
Serial.println (tomtomReading);
}
crashReading = analogRead (sự cố);
if (crashReading> = ngưỡng) {
// NẾU BẠN NGHE CAIXA, HÃY GỬI 3 ĐỂ XỬ LÝ
Serial.print ("3,");
Serial.println (crashReading);
}
bomboReading = analogRead (bombo);
if (bomboReading> = 15) {
// NẾU BẠN HIT CAIXA, HÃY GỬI 4 ĐỂ XỬ LÝ
Serial.print ("4,");
Serial.println (bomboReading);
}
chậm trễ (10); // trì hoãn để tránh quá tải bộ đệm cổng nối tiếp
}
MÃ xử lý
// NHẬP THƯ VIỆN ÂM THANH VÀ SERIAL
xử lý nhập khẩu.sound. *;
nhập xử lý.serial. *;
Nối tiếp myPort; // Tạo đối tượng từ lớp Serial
Chuỗi val; // Dữ liệu nhận được từ cổng nối tiếp
// KÉO DÀI ÂM THANH
SoundFile caixa;
SoundFile charles;
Tomtom SoundFile;
Sự cố SoundFile;
SoundFile bombo;
// HÌNH ẢNH STUDIO DRUMS
PImage img0;
PImage img1;
PImage img2;
PImage img3;
PImage img4;
PImage img5;
PImage img6;
// DRUMS STUDIO SÓNG BIẾN
float n = 0;
float n2 = 1;
float n3 = 2;
float n4 = 3;
float n5 = 4;
float y = 0;
float y2 = 1;
float y3 = 2;
float y4 = 3;
float y5 = 4;
void setup ()
{
// MỞ CỔNG WHATEVER LÀ CỔNG BẠN ĐANG SỬ DỤNG
String portName = Serial.list () [0]; // thay đổi 0 thành 1 hoặc 2, v.v. để phù hợp với cổng của bạn
myPort = new Serial (this, portName, 9600);
// DRUMS STUDIO CONSOLA
kích thước (720, 680);
nền (15, 15, 15);
strokeWeight (2);
// TẢI HÌNH ẢNH STUDIO DRUM
img0 = loadImage ("drumstudio.png");
img1 = loadImage ("res.png");
img2 = loadImage ("caixa.png");
img3 = loadImage ("charles.png");
img4 = loadImage ("tomtom.png");
img5 = loadImage ("crash.png");
img6 = loadImage ("bombo.png");
// TẢI ÂM
caixa = new SoundFile (this, "caixa.aiff");
charles = new SoundFile (this, "charles.aiff");
tomtom = new SoundFile (this, "tomtom.aiff");
crash = new SoundFile (this, "crash.aiff");
bombo = new SoundFile (this, "bombo.aiff");
}
void draw ()
{
// TITULO DRUMS STUDIO
hình ảnh (img0, 125, 0);
// BẢN VẼ SÓNG
if (y> 720) // Bắt đầu lại wave
{
y = 0;
y2 = 1;
y3 = 2;
y4 = 3;
y5 = 4;
}
điền (0, 10);
trực tràng (0, 0, chiều rộng, chiều cao);
// Dejamos điền vào một khoảng trống
// dibujar la bola
điền (255);
đột quỵ (250, 255, 3);
point (y, (height-40) + sin (n) * 30);
n = n + 0,05;
y = y + 1;
đột quỵ (250, 255, 3);
point (y2, (height-40) + cos (n2) * 30);
n2 = n2 + 0,05;
y2 = y2 + 1;
đột quỵ (250, 255, 3);
point (y3, (height-40) + sin (n3) * 30);
n3 = n3 + 0,05;
y3 = y3 + 1;
đột quỵ (250, 255, 3);
point (y4, (height-40) + cos (n4) * 30);
n4 = n4 + 0,05;
y4 = y4 + 1;
đột quỵ (250, 255, 3);
point (y5, (height-40) + sin (n5) * 30);
n5 = n5 + 0,05;
y5 = y5 + 1;
// DIBUJO BATERIA SIN NINGUNA PARTE ILUMINADA
hình ảnh (img1, 0, 80);
// ĐẶT ĐẦU RA CHO MỌI ĐẦU VÀO
if (myPort.available ()> 0)
{// Nếu có sẵn dữ liệu, val = myPort.readStringUntil ('\ n'); // đọc nó và lưu trữ nó trong val
println (val);
String list = split (val, ','); // Mở danh sách để lấy mọi giá trị đầu vào
if (list! = null)
{
if (list [0].equals ("0")) {// nếu bạn nhấn caixa
caixa.play (); // Phát âm thanh caixa
image (img2, 0, 80); // Caixa được chiếu sáng trên màn hình
println ("caixa"); // in nó ra trong bảng điều khiển
} else if (list [0].equals ("1")) {// nếu bạn trúng bùa
charles.play (); // Phát âm thanh charles
image (img3, 0, 80); // Các charles được chiếu sáng trên màn hình
println ("charles"); // in nó ra trong bảng điều khiển
} else if (list [0].equals ("2")) {// Nếu bạn trúng tomtom
tomtom.play (); // Phát âm thanh tomtom
image (img4, 0, 80); // Tomtom được chiếu sáng trên màn hình
println ("tomtom"); // in nó ra trong bảng điều khiển
} else if (list [0].equals ("3")) {// Nếu bạn gặp sự cố
crash.play (); // Phát âm thanh crash
hình ảnh (img5, 0, 80); // Sự cố được chiếu sáng trong màn hình
println ("sự cố"); // in nó ra trong bảng điều khiển
} else if (list [0].equals ("4")) {// nếu bạn đánh bom
bombo.play (); // Phát âm thanh bombo
hình ảnh (img6, 0, 80); // Bombo được chiếu sáng trên màn hình
println ("bombo"); // in nó ra trong bảng điều khiển
}
}
}
}
Bước 4: Xây dựng nó
Để thực hiện nguyên mẫu, chúng tôi có
đã sử dụng các yếu tố hàng ngày để đơn giản hóa quy trình, nhưng luôn tìm kiếm chức năng và kết thúc tốt.
Bước đầu tiên là hàn các sợi cáp với chất áp điện, cắt những sợi cáp này với độ dài vừa đủ để có thể tự do khi sắp xếp pin trên bàn hoặc nơi chúng ta đi thực tập.
Sau một số nghiên cứu, chúng tôi nhận thấy rằng điều quan trọng là tấm đệm truyền tối ưu độ rung của mỗi lần va chạm đến áp điện, do đó các vật liệu như gỗ hoặc nhựa bị loại bỏ. Cuối cùng, chúng tôi đã chọn sử dụng nắp kim loại cho thực phẩm đóng hộp, chúng tuân thủ chức năng của chúng và có hình thức phù hợp với mục đích của chúng.
Thử với dùi trống và đúng như dự đoán, các tác động quá ồn ào và làm mất đi giải pháp của một chiếc trống im lặng. Để giải quyết nó, chúng tôi phủ lên bề mặt bằng một miếng xốp Eva, cắt theo kích thước của chu vi trung tâm của nắp. Nó được dán bằng băng keo hai mặt đủ mỏng để không bị chú ý khi chơi. Ngoài ra, vì mép của nắp máy vẫn phát ra tiếng ồn khó chịu khiến chúng ta không thể chơi thoải mái, chúng tôi đã nhỏ một vài giọt keo nóng chảy lên mép để miếng đệm không bị trượt và nhẹ nhàng nhất có thể khi va chạm.
Để ngăn bốn tấm đệm phân tán khi chạm vào nhau, chúng tôi ghép chúng thành từng cặp bằng một thanh ren đi vào từ bên cạnh, được cố định từ bên trong bằng một đai ốc nhỏ. Vấn đề khi chúng tôi bắt đầu chơi là vì nó là vật liệu kim loại, nó truyền rung động từ miếng đệm này sang miếng đệm kia, vì vậy khi chúng tôi chơi một miếng, đồng đội của anh ấy phát ra âm thanh cùng một lúc.
Cuối cùng, chúng tôi gỡ bỏ các thanh và thấy rằng việc sử dụng chính cáp piezo như một tổ hợp là đủ và thậm chí còn thiết thực hơn.
Đối với bàn đạp, chúng tôi có ý tưởng ban đầu là giữ piezo giữa một chiếc bánh sandwich; để tránh tác động trực tiếp của piezo với mặt đất. Để làm điều này, chúng tôi dán miếng piezo trên một tấm gỗ và dán một tấm PVC khác có cùng kích thước, chúng tôi tạo một vết nứt nhỏ tạo điều kiện thuận lợi và chứa cả piezo và cáp.
Lúc đầu, chúng tôi sử dụng PVC cho cả hai tấm, nhưng sau một số thử nghiệm, chúng tôi nhận ra rằng vật liệu này hấp thụ quá nhiều va chạm và truyền nó đến piezo.
Để tránh bàn đạp bị lỏng và di chuyển khi bạn bước, chúng tôi quyết định đặt một sợi dây cao su giữa bánh sandwich để giữ bàn đạp vào chân và đảm bảo mỗi hành trình trên trống.
Cuối cùng, để đạt được độ hoàn thiện tốt hơn, chúng tôi đã tự mình chế tạo một chiếc hộp nhỏ để chứa protoboard và arduino. Đây là nơi 5 cáp đi vào qua một bên và cho phép cáp USB được kết nối qua bên kia. Nó được gắn bằng bìa cứng lông vũ màu đen, để dễ dàng xử lý và tiếp tục với tính thẩm mỹ màu đen và trắng của toàn bộ nguyên mẫu.