İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu basit bir iki mikro servo ve Arduino Uno kontrollü tambur makinesi veya robotudur. Servolar, 4 güçlü mıknatısla trampet tamburuna tutulan L şeklinde bir ahşap braket üzerine monte edilmiştir. Servo kolları, baget görevi gören iki çubukla cıvatalanmıştır. Oldukça gürültülü ama çok gürültülü değil. Standart boyutlu servolar ve biraz daha ağır olan gerçek bagetler kullanılarak çok daha yüksek sesli vuruşlar elde edilebilir. Ancak bu aynı zamanda servolar için ayrı bir güç kaynağı gerektirecektir. Arduino, mikro servolar kullanarak, ayrı bir güç kaynağı olmadan doğrudan onlara güç sağlamak için yeterli akımı sağlar.
Video, Wipeout davul solosunun basit bir versiyonunu programlama girişimimi gösteriyor. Tabii ki gerçek 160 vuruş/dakikada değil ama bu oldukça havalı olacak başka bir servo ekleyerek kolayca elde edilebilir. Bir servo kullanarak elde edilebilecek en yüksek bpm'nin ne kadar olduğunu hesaplamadım ve bageti park konumundan davul kafasına getirmek için biraz gecikme gerektiriyor.
Yaratabileceğiniz ritimler yalnızca hayal gücünüzle sınırlıdır ve davul makinesi, müzisyenseniz dijital bir davul makinesinden daha ilginç bir arkadaştır.
Tek dezavantajı, kamera sesi oldukça dikkat çekici gibi görünse de, gerçekten o kadar fark edilmeyen servo gürültüsüdür.
Adım 1: Servo Braketini Oluşturun
Bu braket elimdeki bazı hobi kontrplak şeritlerinden yapılmıştır. İki parçayı metal bir L-braket ile birbirine vidalayarak bir L şekli oluşturdum. Daha sonra, iki servoyu tutmak için üst şeride küçük bir tahta blok yapıştırıldı.
Tahta bloğa vidaladığım iki kullanışlı servo braketim vardı.
Braketi trampet tamburuna tutturmak için 4 neodimyum mıknatıs kullandım.
Adım 2: Servoları Arduino Uno'ya bağlayın
Servo vcc (orta tel) Arduino 5 v pinlerine gider.
Topraklama kabloları Arduino toprağına bağlanır.
Sinyal kabloları 6 ve 7 numaralı pinlere gider.
Bir servo kalkanınız varsa, bunu daha da kolaylaştıracaktır.
Adım 3: Arduino Kodu…
Aşağıda Wipeout oynamak için basit bir çizim var. Özel kurulumunuz için servo konumlarını ayarlamanız yeterlidir.
İyi eğlenceler!
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "servo.h"
// servo davulcu Jim Demello Haziran 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 vuruş) {
int gecikmeDeğeri = 60;
if (servoNumber == 1) {
if (diş) {diş = 10; // eğer vuruş = 1 ise, daha güçlü vuruş için biraz daha aşağı servo ekleyin
}
myServo(150 + vuruş, servoNumber); //aşağı
gecikme(delayVal);
myServo(100, servoNumber);//yukarı
gecikme(delayVal);
}
if (servoNumber == 2) {
eğer (vuruş) vuruş = -10;
myServo(60 + vuruş, servoNumber); //aşağı
gecikme(delayVal);
myServo(80, servoNumber);//yukarı
gecikme(delayVal);
}
}
geçersiz kurulum()
{
// Serial.başlangıç(9600);
myservo1.attach(servoPin6, 1000, 2000); // pin 9'daki servoyu servo nesnesine bağlar
myservo1.write(100);
myservo2.attach(servoPin7, 1000, 2000); // pin 9'daki servoyu servo nesnesine bağlar
myservo2.write(90);
}
boşluk döngüsü () {
silip yoketmek(); // silme davul rutini
//doOneEighthNote(2, 0);
gecikme(40);
}
geçersiz silme() {
doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0); // ilk parm servo sayısıdır ve ikinci parm vuruştur (1=vuruş, 0=vuruş yok)
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);
}