İçindekiler:

Arduino Servo Davul Makinesi: 4 Adım
Arduino Servo Davul Makinesi: 4 Adım

Video: Arduino Servo Davul Makinesi: 4 Adım

Video: Arduino Servo Davul Makinesi: 4 Adım
Video: Rc Servo Motor Arduino İle Nasıl Kullanılır ? 2024, Temmuz
Anonim
Image
Image

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

Servo Braketini Oluşturun
Servo Braketini Oluşturun
Servo Braketini Oluşturun
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

Servoları Arduino Uno'ya bağlayın
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);

}

Önerilen: