Оглавление:

Серво-барабанная машина Arduino: 4 шага
Серво-барабанная машина Arduino: 4 шага

Видео: Серво-барабанная машина Arduino: 4 шага

Видео: Серво-барабанная машина Arduino: 4 шага
Видео: Собираем сервопривод на BLDC под Mach 3. (Assembling a servo on BLDC for Mach 3) 2024, Июль
Anonim
Image
Image

Это простая драм-машина или робот, управляемая двумя сервоприводами и Arduino Uno. Сервоприводы установлены на L-образном деревянном кронштейне, который крепится к малому барабану с помощью 4 сильных магнитов. Сервомеханизмы прикреплены болтами к двум палочкам для еды, которые служат в качестве барабанных палочек. Это довольно громко, но не слишком громко. Гораздо более громкие удары можно получить, используя сервоприводы стандартного размера и настоящие барабанные палочки, которые намного тяжелее. Но для этого также потребуется отдельный источник питания для сервоприводов. Используя микросервоприводы, Arduino подает ток, достаточный для питания их напрямую, без отдельного источника питания.

На видео показана моя попытка запрограммировать простую версию барабанного соло Wipeout. Конечно, это не настоящие 160 ударов в минуту, но это можно легко получить, добавив еще один сервопривод, что было бы довольно круто. Я не рассчитал, какое максимальное количество ударов в минуту может быть получено с помощью сервопривода, и для этого требуется некоторая задержка в переводе барабанной палочки из ее исходного положения в пластиковую пластину.

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

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

Шаг 1: Постройте кронштейн сервопривода

Постройте кронштейн сервопривода
Постройте кронштейн сервопривода
Постройте кронштейн сервопривода
Постройте кронштейн сервопривода

Этот кронштейн сделан из нескольких полосок фанеры, которые у меня были под рукой. Я создал L-образную форму, скрепив две детали вместе металлической L-образной скобой. Затем к верхней планке был приклеен небольшой деревянный брусок, чтобы удерживать два сервопривода.

У меня было два удобных кронштейна сервопривода, которые я прикрутил к деревянному бруску.

Я использовал 4 неодимовых магнита, чтобы прикрепить скобу к малому барабану.

Шаг 2: Подключите сервоприводы к Arduino Uno

Подключите сервоприводы к Arduino Uno
Подключите сервоприводы к Arduino Uno

Сервоприводы 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) {

если (удар) {удар = 10; // если beat = 1, добавляем немного больше сервопривода для более сильного удара

}

myServo (150 + бит, servoNumber); //вниз

задержка (delayVal);

myServo (100, servoNumber); // вверх

задержка (delayVal);

}

if (servoNumber == 2) {

если (beat) beat = -10;

myServo (60 + бит, servoNumber); //вниз

задержка (delayVal);

myServo (80, servoNumber); // вверх

задержка (delayVal);

}

}

установка void ()

{

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

}

Рекомендуемые: