Mündəricat:

Arduino Servo Baraban Maşını: 4 addım
Arduino Servo Baraban Maşını: 4 addım
Anonim
Image
Image

Bu sadə iki mikro-servo və Arduino Uno idarə olunan baraban maşını və ya robotdur. Servolar 4 güclü maqnit ilə tələ tamburuna tutulan L şəkilli bir ağac mötərizəsinə quraşdırılmışdır. Servo qolları baraban çubuğu kimi xidmət edən iki çubuqla bərkidilir. Kifayət qədər yüksəkdir, amma çox yüksək deyil. Standart ölçülü servolar və bir qədər ağır olan real baraban çubuqları istifadə edərək daha yüksək səslər əldə edilə bilər. Ancaq bunun üçün servolar üçün ayrıca bir enerji təchizatı tələb olunur. Mikro-servolardan istifadə etməklə Arduino, ayrı bir enerji təchizatı olmadan birbaşa enerji vermək üçün kifayət qədər cərəyan verir.

Videoda, Wipeout tamburunun sadə bir versiyasını proqramlaşdırmaq cəhdlərim göstərilir. Əlbəttə ki, dəqiqədə dəqiqədə 160 vuruş deyil, amma çox yaxşı olacaq başqa bir servo əlavə etməklə asanlıqla əldə edilə bilər. Bir servo istifadə edərək əldə edilə bilən ən yüksək bpm-ni hesablamamışam və baraban çubuğunu park vəziyyətindən baraban başlığına çatdırmaq üçün bir az gecikmə tələb olunur.

Yarada biləcəyiniz ritmlər yalnız təsəvvürünüzlə məhdudlaşır və baraban maşını, bir musiqiçisinizsə, rəqəmsal nağara maşınından daha oynamaq üçün daha maraqlı bir yoldaşdır.

Yeganə dezavantaj, servo səs -küydür ki, bu o qədər də nəzərə çarpmır, baxmayaraq ki, kamera səsi olduqca nəzərə çarpır.

Addım 1: Servo Mötərizəni yaradın

Servo Mötərizəni yaradın
Servo Mötərizəni yaradın
Servo Mötərizəni yaradın
Servo Mötərizəni yaradın

Bu mötərizə əlimdə olan bəzi hobbi kontrplakdan hazırlanmışdır. Metal bir L-mötərizə ilə birlikdə iki hissəni boltlarla bağlayaraq L şəkli yaratdım. Sonra iki servo tutmaq üçün üst zolağa kiçik bir ağac bloku yapışdırıldı.

Ağac blokuna vidaladığım iki lazımlı servo mötərizəm var idi.

Mötərizəni tələ nağara tutmaq üçün 4 neodim maqnit istifadə etdim.

Addı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 pinlərinə gedir.

Torpaq telləri Arduino torpağına keçir.

Siqnal telləri 6 və 7 pinlərinə gedir.

Bir servo qalxan varsa, onu daha da asanlaşdırar.

Addım 3: Arduino Kodu…

Aşağıda Wipeout oynamaq üçün sadə bir eskiz var. Xüsusi quruluşunuz üçün servo mövqelərini tənzimləməlisiniz.

Əylənin!

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

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

#"servo.h" daxil edin

// servo nağaraçı Jim Demello İyun 2018

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

etibarsız myServo (int servoPosition, int servoNumber) {

əgər (servoNumber == 1) {

myservo1.write (servoPosition);

}

əgər (servoSayı == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

əgər (servoSayı == 1) {

if (beat) {beat = 10; // əgər beat = 1 olarsa, daha güclü zərbə üçün bir az daha servo əlavə edin

}

myServo (150 + beat, servoNumber); //aşağı

gecikmə (delayVal);

myServo (100, servoNumber); // yuxarı

gecikmə (delayVal);

}

əgər (servoSayı == 2) {

if (beat) beat = -10;

myServo (60 + beat, servoNumber); //aşağı

gecikmə (delayVal);

myServo (80, servoNumber); // yuxarı

gecikmə (delayVal);

}

}

boş quraşdırma ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // 9 nömrəli servo servo obyektə yapışdırır

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // 9 nömrəli servo servo obyektə yapışdırır

myservo2.write (90);

}

boşluq döngəsi () {

silin (); // nağara silmə qaydası

// doOneEighthNote (2, 0);

gecikmə (40);

}

boşluq silin () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // birinci parm servo nömrədir və ikinci parm vurulur (1 = vuruş, 0 = vuruş yoxdur)

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);

}

Tövsiyə: