Съдържание:

Серво барабанна машина Arduino: 4 стъпки
Серво барабанна машина Arduino: 4 стъпки

Видео: Серво барабанна машина Arduino: 4 стъпки

Видео: Серво барабанна машина Arduino: 4 стъпки
Видео: Уроки Arduino - управление сервомашинкой 2024, Юли
Anonim
Image
Image

Това е обикновена барабанна машина или робот с две микросерво и Arduino Uno. Сервомоторите са монтирани на L-образна скоба от дърво, която се придържа към барабана с 4 силни магнита. Серво раменете са прикрепени към две клечки, които служат като барабанни пръчки. Той е доста силен, но не прекалено силен. Много по-силни удари могат да бъдат получени чрез използване на сервомоторите със стандартен размер и истински барабанни пръчки, които са доста по-тежки. Но това също ще изисква отделно захранване за сервомоторите. Използвайки микро-сервомотори, Arduino доставя достатъчно ток, за да ги захранва директно, без отделно захранване.

Видеото показва моя опит да програмирам проста версия на барабана на Wipeout соло. Разбира се, това не е истинските 160 удара в минута, но това може лесно да се получи чрез добавяне на друго серво, което би било доста готино. Не съм изчислил какъв е най-горният bpm, който може да се получи с помощта на серво и изисква известно забавяне при извеждането на барабана от паркираното му положение до главата на барабана.

Ритмите, които можете да създадете, са ограничени само от вашето въображение и барабанната машина е по -интересен спътник за игра, отколкото цифровата барабанна машина, ако сте музикант.

Единственият недостатък е серво шумът, който всъщност не е толкова забележим, въпреки че звукът от камерата изглежда го забелязва доста забележимо.

Стъпка 1: Изградете серво скобата

Изградете серво скобата
Изградете серво скобата
Изградете серво скобата
Изградете серво скобата

Тази скоба е направена от някои ленти от шперплат за хоби, които имах под ръка. Създадох L-образна форма, като закрепих две части заедно с метална L-скоба. След това малък дървен блок беше залепен към горната лента, за да държи двата серво.

Имах две удобни серво скоби, които завинтвах към дървения блок.

Използвах 4 неодимови магнита, за да държа скобата към барабана.

Стъпка 2: Свържете сервомоторите към Arduino Uno

Свържете сервомоторите към Arduino Uno
Свържете сервомоторите към Arduino Uno

Servos vcc (среден проводник) отива към щифтовете на Arduino 5 v.

Заземяващите проводници към земята Arduino.

Сигналните проводници отиват към пинове 6 и 7.

Серво щитът ще направи още по -лесно, ако имате такъв.

Стъпка 3: Arduino код …

По -долу е простата скица за възпроизвеждане на Wipeout. Просто трябва да настроите серво позициите за вашата конкретна настройка.

Забавлявай се!

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

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

#include "servo.h"

// серво барабанист Джим Демело юни 2018 г.

Серво myservo1, myservo2;

int servoPin6 = 6; // серво

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 (ритъм) {такт = 10; // ако beat = 1, добавете още малко серво надолу за по -силен удар

}

myServo (150 + ритъм, servoNumber); // надолу

забавяне (delayVal);

myServo (100, servoNumber); // нагоре

забавяне (delayVal);

}

if (servoNumber == 2) {

ако (ритъм) ритъм = -10;

myServo (60 + такт, servoNumber); // надолу

забавяне (delayVal);

myServo (80, servoNumber); // нагоре

забавяне (delayVal);

}

}

void setup ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // прикрепя серво на щифт 9 към серво обекта

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // прикрепя серво на щифт 9 към серво обекта

myservo2.write (90);

}

void loop () {

заличавам(); // изтриване на барабана

// doOneEighthNote (2, 0);

забавяне (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // първият парм е серво номер, а вторият парм е ритъм (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, 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);

}

Препоръчано: