Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Ini adalah dua mesin drum atau robot yang dikendalikan mikro-servo dan Arduino Uno. Servo dipasang pada braket kayu berbentuk L yang dipegang pada snare drum dengan 4 magnet kuat. Lengan servo dibaut ke dua sumpit yang berfungsi sebagai stik drum. Ini cukup keras tetapi tidak terlalu keras. Hit yang lebih keras dapat diperoleh dengan menggunakan servos ukuran standar dan stik drum asli yang sedikit lebih berat. Tapi itu juga membutuhkan catu daya terpisah untuk servos. Dengan menggunakan mikro-servo, Arduino memasok arus yang cukup untuk memberi daya secara langsung tanpa catu daya terpisah.
Video menunjukkan upaya saya memprogram versi sederhana dari solo drum Wipeout. Tentu saja tidak pada 160 denyut per menit yang sebenarnya tetapi itu dapat dengan mudah diperoleh dengan menambahkan servo lain yang akan sangat keren. Saya belum menghitung berapa bpm teratas yang dapat diperoleh dengan menggunakan servo dan memang membutuhkan beberapa penundaan untuk mendapatkan stik drum dari posisi parkir ke kepala drum.
Irama yang dapat Anda ciptakan hanya dibatasi oleh imajinasi Anda dan mesin drum adalah pendamping yang lebih menarik untuk dimainkan daripada mesin drum digital, jika Anda seorang musisi.
Satu-satunya downside adalah kebisingan servo yang tidak terlalu terlihat meskipun audio kamera tampaknya cukup menonjol.
Langkah 1: Bangun Braket Servo
Braket ini terbuat dari beberapa potongan kayu lapis hobi yang saya miliki. Saya membuat bentuk-L dengan menyatukan dua bagian dengan braket L logam. Kemudian sebatang kayu kecil direkatkan ke strip atas untuk menahan dua servos.
Saya memiliki dua braket servo praktis yang saya pasang ke balok kayu.
Saya menggunakan 4 magnet neodymium untuk menahan braket ke snare drum.
Langkah 2: Hubungkan Servo ke Arduino Uno
Servos vcc (kawat tengah) menuju ke pin Arduino 5 v.
Kabel Ground ke ground Arduino.
Kabel sinyal masuk ke pin 6 dan 7.
Perisai servo akan membuatnya lebih mudah jika Anda memilikinya.
Langkah 3: Kode Arduino…
Di bawah ini adalah sketsa sederhana untuk memainkan Wipeout. Anda hanya perlu menyesuaikan posisi servo untuk pengaturan khusus Anda.
Selamat bersenang-senang!
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#sertakan "servo.h"
// drummer servo Jim Demello Juni 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 (mengalahkan) {mengalahkan = 10; // jika ketukan = 1 maka tambahkan sedikit lebih banyak servo ke bawah untuk pukulan yang lebih kuat
}
myServo(150 + ketukan, servoNumber); //turun
penundaan(delayVal);
myServo(100, servoNumber);//naik
penundaan(delayVal);
}
if (servoNumber == 2) {
jika (ketukan) ketukan = -10;
myServo(60 + ketukan, servoNumber); //turun
penundaan(delayVal);
myServo(80, servoNumber);//naik
penundaan(delayVal);
}
}
batalkan pengaturan()
{
// Serial.begin(9600);
myservo1.attach(servoPin6, 1000, 2000); // pasang servo pada pin 9 ke objek servo
myservo1.write(100);
myservo2.attach(servoPin7, 1000, 2000); // pasang servo pada pin 9 ke objek servo
myservo2.write(90);
}
lingkaran kosong() {
memusnahkan(); // menghapus rutinitas drum
//doOneEighthNote(2, 0);
penundaan (40);
}
batalkan penghapusan() {
doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0); // parm pertama adalah nomor servo dan parm kedua dipukul (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);
}