Проект Arduino для начинающих: робот-барабанщик
Итак, у меня есть музыкальное образование, 5 лет программирования на Ruby и 7 лет на Pure Data. У меня также есть Arduino и Raspberry Pi.
В любом случае, я видел ряд проектов Arduino, в которых используются события, вызывающие удар палкой по барабану, но я действительно не знаю, с чего начать.
У меня есть плетеный пингвин, и я хочу, чтобы он играл на барабанах:
- Какие компоненты мне нужны для создания такого рода разового ударного мероприятия?
- Могу ли я вызвать эти события из Ruby?
@AJFaraday, 👍2
Обсуждение2 ответа
- чтобы двигать руками: найдите руководства по управлению двигателем в Arduino (любой шаг постоянного тока).
- управлять Arduino с ПК (или PI) — вот что имеется в виду, когда вы говорите Ruby — проверьте, как удаленно управлять через последовательный порт
Если хотите посмотреть, я сделал нечто подобное на Python. Ii эмулирует USB-клавиатуру, но вы можете добавить дополнительные команды для поддержки управления двигателями. https://github.com/01org-AutomatedFlasherTester/pem, @Igor Stoppa
Я пока не уверен, что это ответ, пока не потрачу на него немного времени, но похоже, что управление последовательным портом, вероятно, будет правильным подходом., @AJFaraday
Подход, который я бы выбрал для рычагов, заключается в использовании серводвигателя, поскольку они довольно дешевы и имеют замкнутый контур, поэтому вам не нужно добавлять какие-либо дополнительные датчики, чтобы проверить текущее положение.
Типы двигателей:
- Шаговые двигатели — это тип двигателя со специальным расположением катушек, позволяющим поворачивать его на доли градуса, посылая на двигатель импульсы. Например, вы можете купить шаговый двигатель на 200 шагов, который поворачивается с шагом 1,8 градуса. Они довольно дорогие и требуют довольно дорогих водителей (обычно 5-10 долларов за водителя). Часто используется в станках с ЧПУ и 3D-принтерах. Непрерывная ротация.
- Двигатели постоянного тока общего назначения (два типа: бесщеточные и коллекторные, но я не буду здесь вдаваться в подробности) — это тип двигателя. Их драйверы часто дешевле, чем драйверы для шагового двигателя, но вы мало контролируете их вращение (вместо того, чтобы «сделать один шаг на X градусов», вы говорите, «повернуть на 25% мощности по часовой стрелке», чего вы не делаете). знать фактическую скорость). Иногда они используются с поворотными энкодерами или потенциометрами для управления скоростью и положением шпинделя. Непрерывная ротация.
- Серводвигатели на самом деле не относятся к отдельному типу двигателей; это двигатели постоянного тока (не шаговые) со встроенным в драйвер потенциометром. Вы посылаете на него импульсы (для этого можно использовать сервобиблиотеку Arduino), чтобы скажите ему точную степень, до которой нужно идти. Могут двигаться только на ограниченный диапазон: обычно на 90 или 180 градусов, хотя можно приобрести специальные, которые могут поворачивать на гораздо большие расстояния.
Использование серводвигателя:
Подключить его можно следующим образом:
Из этого руководства по Arduino
А затем очень простой код для использования двигателя:
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
myservo.write(10);
delay(500);
myservo.write(0);
delay(500);
}
Разговор с Руби:
Лучший вариант — использовать последовательный порт вашего компьютера. Выясните, как получить доступ к COM/последовательному порту в Ruby. Затем вы сможете отправлять сообщения со своего компьютера на Arduino, но вам придется придумать способ структурировать сообщения.
Это может работать для ограниченных целей, но типичный RC-сервопривод имеет относительно медленное время прохождения, что ограничивает достижимый темп. Я также был бы обеспокоен повреждением шестерен, если механизм не обладает достаточной гибкостью, что может быть необходимо также для того, чтобы палка или молоток могли отскочить назад, чтобы избежать заглушения звука., @Chris Stratton
@ChrisStratton высота палочки должна быть довольно маленькой (хотя это может сделать ее тихой, хотя я сомневаюсь, что многие люди будут возражать против того, чтобы плетеный пингвин-барабанщик молчал). Кроме того, я не думаю, что ОП ожидает, что он будет играть тридцать секундные ноты со скоростью 150 ударов в минуту, но вы правы в том, что потребуется более мощный сервопривод. Кроме того, ОП может захотеть, чтобы он «сжимал» палки по направлению к середине, чтобы на него не оказывалось такого большого давления, поскольку палки действуют как рычаги., @Anonymous Penguin
Я действительно не думаю, что они могли бы получить хороший звук без ударного действия при вождении более длинной гибкой палки. Хотя я признаю, что они быстрее, чем я помнил: скажем, 0,2 секунды в каждую сторону, поэтому, если тщательно рассчитать время команд, можно достичь четвертных нот в 120 ударов в минуту., @Chris Stratton
Спасибо, похоже, это действительно удобный учебник по компонентам двигателя. Что касается взаимодействия Ruby, означает ли это, что я должен создавать функции в синтаксисе Arduino, загружать их в Arduino, а затем запускать их из Ruby, используя последовательный порт?, @AJFaraday
@ChrisStratton .2 в каждом направлении будет давать восьмые ноты при 150 щелчках (60 секунд в минуту / 0,4 секунды на удар = 150 ударов в минуту с 2 палочками = примерно 150 BPM восьмых), @Anonymous Penguin
Возможно, удастся получить значение выше 120, но я оставил некоторую поправку на тот факт, что *командующее* положение устройства не знает, когда фактически было достигнуто ранее заданное положение. Однако оно будет меняться в зависимости от напряжения, поэтому может помочь работа сервопривода с самым высоким указанным напряжением. И, конечно же, есть более быстрые сервоприводы, доступные за дополнительную плату. Меня беспокоит шум шестерни., @Chris Stratton
- Tower Pro MG996R сервопривод с высоким крутящим моментом 180 °, управляющий с помощью Arduino
- Как управлять 4 двигателями постоянного тока с помощью Arduino?
- Как сделать электронную присоску?
- Линия, следующая за проблемами робота
- Наилучший метод проектирования схемы с 20 кнопками
- Могу ли я подключить несколько устройств к одному контакту 5V и одному GND Arduino Uno R3
- Плавное сервомоторное движение роботизированной руки: постоянный ответ и решение
- Как изменить скорость нескольких сервоприводов, работающих одновременно с модулем PCA9685?
Добро пожаловать в Arduino SE! Я немного отредактировал ваш вопрос, удалив запрос на учебные пособия. Stack Exchange — это хранилище информации, а не хранилище ссылок. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь отвечать на этот контент. Спасибо! (А ещё пингвины потрясающие :-D), @Anonymous Penguin
Я не уверен, стоит ли удалять последнее предложение, поскольку оно объясняет, для чего предназначено изображение пингвина, но, похоже, я не могу редактировать эту часть с повторением 101., @AJFaraday
Исправлено, извините., @Anonymous Penguin
Я думаю, что самой сложной частью этого проекта будет создание электромеханического механизма, который будет перемещать рычаги в хорошем барабанном движении, не завися от дорогого, энергоемкого промышленного серводвигателя и привода. Бесщеточный двигатель с датчиком от большой радиоуправляемой машины может работать хорошо, но найти или создать подходящий контроллер может оказаться непростой задачей., @Chris Stratton
В меньшем масштабе вы могли бы попробовать соленоид и пружину... если только у вас нет одного из огромных соленоидов от механизма жесткого диска со съемным диском мэйнфрейма (однажды я видел, как такие управляли креслом-качалкой!) Какая-то комбинация двигателя , кулачок, рычаг с возвратной пружиной и энкодер для обратной связи по положению и скорости также могут работать., @Chris Stratton