5.Мультиплексор 74HC4051 | Midi Controller | Hiduino
Vložit
- čas přidán 22. 02. 2018
- Показываю как расширить колличество входов на Arduino Uno с помощью мультиплексора 74HC4051.
-Windows 10
-Основные файлы: yadi.sk/d/f4b3X9MtsuyhgQ?w=1
-MIDI Controller Numbers : www.indiana.edu/~emusic/cntrln... - Hudba
спасибо мужик реально помог я смотрел такие видео только на англиском а ты обьяснил на нашем языке спасибо большое здровья тебе
Ну ты даёшь я сколько инфу искал а тут все и сразу
Спасибо за видео, мне стало ещё яснее, как конструируют подобные вещи, но мне хотелось ещё кое о чём спросить вас.
В планах забабахать MIDI-клавиатуру, где будет 2 клавиатуры по 61 клавише каждая. Сам не верю, что может получиться что-то нормальное, но попробовать, думаю, стоит. Принцип отслеживания velocity: меряется задержку между "началом нажатия" клавиши и прожатием её до конца. Соответственно, для каждой клавиши нужен один аналоговый вход, который будет принимать от клавиши 3 значения: нулевое - клавиша не нажата, среднее - клавиша почти нажата (нужно засечь таймер), высокое - клавиша полностью нажата (нужно посчитать velocity и подать сигнал). В принципе, можно использовать и пару цифровых входов, но зачем, ибо аналоговые входы не сильно уступают цифровым в этом плане.
Теперь в чём, собственно, вопрос. Так как нужно будет 122 входа для каждой клавиши, потребуется подключить соответствующее количество мультиплексоров. Вы говорили, что можно подключать несколько мультиплексоров к одним и тем же контрольным пинам. На просторах Интернета я не нашёл пример использования такой схемы, где команды подаются ОДНОВРЕМЕННО и с одного мультиплексора, и с другого. Просто меня терзают сомнения, что такое подключение небезопасно: если команды будут подаваться одновременно, возможно наслоение сигналов, а мультиплексоры никак не согласованы друг с другом. Самой Ардуины у меня нет пока, как и мультиплексоров и прочих деталей, решил всё разузнать, прежде чем заказывать, ну и так-то вообще стоит узнать, что именно заказывать.
Рассматривал вариант с подключением нескольких мультиплексоров к одному мультиплексору, но в Интернете тоже на этот счёт всё мутно и никто не признаётся, как это сделать, чтобы работало во всех случаях (чтобы было прям много контроллеров и все они работали независимо друг от друга).
Бороздил Алиэкспресс в поиске мультиплексора с 32 и более входами, так ничего и не нашёл. :(
Пожалуйста, можете помочь советом? Подскажете, как можно подключить столько много контроллеров к одной плате Arduino? Признаться, я не лучшим образом разбираюсь в таких проектах, поэтому прошу помощи.
если брать например плату Ардуино Uno или Leonardo, то там максиамально моджно подубючить 6 мультиплексоров, насколько я знаю мультиплексоры с самым болшим количеством входов, это 16 у CD74HC4067| , 16 * 6 = 96, то есть мы можем одновременно подключить 96 кнопок например и посылать одновременно с них сигнал.
Но есть платы Ардуино и с большим количество входов, напримре Arduino Due, вроде как она тоже прошивается под миди контроллер, но я сам не пробовал, это тестировать надо.
А вообще есть ещё расширители портов, помимо мультиплексоров, руки не доходят разобраться с этими расшииртелями портов и сделать по ним ролик
@@kentforthable Спасибо за ответ!
Мне однозначно стоит посмотреть в сторону более "крутых" контроллеров, просто потому что кажется, что Uno или Leonardo (которые я думал приобрести) уж очень хиленькие для такого количества элементов управления.
Уточняю: можно без проблем подключать несколько мультиплексоров к одним и тем же цифровым (контрольным) пинам? То есть ограничение есть исключительно в количестве аналоговых входов? Если это так, то вообще прекрасно
И ещё хотел спросить: хватит ли вычислительной мощности Arduino Mega 2560 для проверки огромного количества входов (122 клавиши + возможно Pitch Bend и прочие CC-крутилки)? Скажется ли это на задержке, "частоте дискретизации" подаваемых событий на порт? И вообще, бывали ли случаи, когда контроллер подобным образом не вывозил вычислительную нагрузку, которую на него подают? В виде чего это выливается?
Рассматриваю Arduino Mega 2560, потому что Due уж очень бьёт по карману, тем более для первого проекта. С Due думаю, что всё будет прекрасно, там вообще можно что угодно творить, ARM всё-таки... А на борту Mega 2560 примерно тот же 16 МГц процессор, подобный тому, что стоят в Leonardo и Uno R3. Только количество входов разное на самой плате
@@CoberlightShow 1. Подключать несколько мультиплексоров можно без проблем
2. Хватит ли памяти платы для этого, это уже не подскажу, это надо подключать плату и делать проверку скетча, там среда ардуино показывает сколько затрачивается памяти для этог устройства с конкретным скетчем
Все я сделал. А вот теперь мультик интересно. Хочу крутилки добавить дисплей
У сдвиговых регистрах я так понимаю наверное память есть какая то. Или что лучше сдвиговый регистр или мультиплексер я вообще разницы не вижу
Подскажите подробнее,как в скетче прописать несколько мультиплексоров
внимательно видео смотрите, я об этом рассказывал
Я имею в виду,что для каждого мультиплексора прописывать нужно потенциометры например для первого pot1,pot2...,а для второго также?
напиши названия потенциометров, которые подключены к первому мультиплексору, а какие подключены ко второму
Ну так по схеме у тебя только 8 кнопок влезет через мультиплексер а их у меня 64 вроде не помню дето так
Где можно найти инструкцию в pdf которою ты сделал в конце видео про нее говоришь
добавил файл в ту же ссылку
Здравствуйте, а аккордами будет работать через такой мультиплексор?
Что означает аккордами? Одновременное нажатие нескольких кнопок
@@kentforthable ну да, хочу полноценное миди устройство собрать, поэтому устройство отрабатывало одновременное нажатие минимум пяти клавиш.
@@user-rd2qw1xq8v да, это можно сделать
Там я пока не понимаю принцып работы с клавиатурой с етим все понятно. С мультиплексирами тоже все проехал
Ну матричная клавиатура работает легко. К примеру
D1 --1 -- 2 -- 3 -- 4
D2 --5 -- 6 -- 7 -- 8
D3 --9 --10-- 11-- 12
D4 --13--14--15--16
D5 D6 D7 D8
Просто кнопки паралельно в линии соединяншь(1 контакт 4 кнопок в одном горизонтальном ряде на один провод) (Оставшиеся контакты в вертикальных рядах так же)
А как вместо кнопки использовать пьезо? Как в прошлом видео
Есть отдельное видео по поьезо
@@kentforthable с мультиплексором?
@@dmitriy12121 мне тоже это интересно
@@kentforthable как на мультиплексор повесить пьезо? у меня не получилось((( Пьезо работают как кнопки без велосити(
@@individdualnosti советую смотреть библиотеку Control Surface, там есть также реализация piezo
github.com/tttapa/Control-Surface/issues/173
Это можно сделать сдвиговым регистром, хотя эта штука в Китае выходит даже дешевле , я через один резистор весь выход делал .
Скетч с Notes And Volts )
)
да, только я его немного изменил под Hiduino
Я вот наконец-то раздуплился как полностью под себя написать скетч , единственное что хочу не HIDUINO а использовать Leonardo или его мелкую версию PRO Mini помоему на атмеге 32u4 чтобы сразу был штатный usb порт без сторонних прошивок. В планах реализовать миди контроллер с индикацией на сдвиговых регистрах , OLED дисплеем и меню позволяющим программировать пресеты и запоминать их. Единственное что хочу проверить еще - ощутима ли задержка при подключении кнопок и особенно потцев через мультиплексор.
при подключении своих 3 потенциометров задержки я не ощутил, но это тебе нужно уже на практике смотреть. Я сейчас жду когда мне с китая придёт Leonardo, тогда и сделаю урок по этйо плате. Там да, насколько я знаю ничего прошивать не надо, все в скетче прописывается
Теперь вопрос а как подключить клавиатура с синтезатора к етому безобразию всему
клавиатура с синтезатора? это как?
в смысле чтобы синтезатор был в роли миди контроллера?
@@kentforthable именно так и есть
Я пока в етом новичек работал с шаговыми драйвера разрабативал а в етом ноль
Там нужны сдвиговые регистры их у нас хрен достанешь. А вот мультиплексеры есть
как подключить пьезо (барабаны)? можете объяснить. Спасибо
czcams.com/video/iGRg97NcK_o/video.html
Спасибо я уже смотрел это видео но меня интересует подключение через мультиплексор 4051 мне нужно сщитуваты 14-16 барабанов включая педалями к тому же хочу задействовать также и простые кнопки, мультиплексоры общем чтобы их было 40-64 клавиши
в написании кода не очень хорошо разбираюсь) спасибо
сорри за руской плохо знаю
подключить конечно можно, также как и кнопку через мультиплексор
Добрый день, у меня возникла такая проблема, подключив пьезо с резистором Ардуино то реагирует но силу удара не воспринимает и длину удара, оно мгновенно как кнопку срабатывает, подключал на аналоговый пин мультиплексор и прописывал шо у меня аналоговый мультиплексор. Как я понял данный скетч не может так работать, или можете помочь разобраться.
Спасибо
как называется модель мультиплексора, на который подключен пьезо?
Обновите ссылку - "Ничего не найдено
Владелец удалил файлы либо закрыл к ним доступ или в ссылке опечатка."
перезалил
Вроде несложно. Но как это все распаивается при конечной сборке (проводками или к печатной плате или еще как-то?)Объясните человеку, который ничего сложнее проводков не паял и пока с трудом понимает для чего и какие транзисторы, к примеру, нужны. 🤯
есть несколько вариантов:
Вариант 1(более качественный):
Создавать распайку в gerber файле программы, которая делает дизайн печатных плат, этих программ много всяких, например Spring Layout. После того, как сделаете распиновку печатной платы в дизайне , отправляете этот файл в контору, которая занимается печатью плат. Обычно заказывают в китае, например JLCPCB. Только минимальное количество обычно от 5 плат
Вариант 2: гуглите , как наносить дорожки на печатные платы и просверливать отверстия, и как все это паять, печатные платы разного размера можно заказать на aliexpress.
Вариант 3: сходить в любой радио магазин, и поспрашивать кто занимается печатью платы по вашему макету
Все элементы(потенциометры, резисторы и прочее) паяются на печатную плату проводами. Проводы можно взять и тонкие от ethernet кабеля(можете у знакомых поспрашивать сдохший интернет кабель) можно провода взять от этого кабеля и через них припаять все элементы
Печатные платы можно взять например такие:
aliexpress.ru/item/32907726140.html?spm=a2g0o.productlist.0.0.3bae7aa9uPebOG&algo_pvid=c2f0bdf4-07dc-4162-af80-9e4a36747ba3&algo_expid=c2f0bdf4-07dc-4162-af80-9e4a36747ba3-9&btsid=0b8b035a15987761753656992e9450&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_
Круто! Реально очень хорошие ролики!!!!
Посетила меня идея сделать МИДИ. На чердаке валялась еще с советских времен клавиатура, кажется она называлась "старт" Там четыре октавы и получалась матрица 4 на 12, что не удобно в использовании с ардуино-уно. Выход был - использование мультиплексоров. Я применил три шестнадцатибитные. Пример взял от сюда: -- czcams.com/video/NmxoBdEJG28/video.html
Все тоже, только на аглицком. Скетч универсален. Получилось на УРА. Следующая у меня задача - реализовать силу и скорость удара по клавише. В программировании не силен. Согласен на любую подсказку :)
И такой вопрос??? У тебя в скетче вот так прописано -- MIDI.begin();
но так не передается нота. Я прописал вот так --- MIDI.begin(MIDI_CHANNEL_OFF); и нота передаётся.
В чем разница?
функция MIDI.begin не связана с нотами, она позволяет передавать и слушать все входящие миди сообщения по серийному порту Ардуино. Подробнее можно почитать здесь playground.arduino.cc/Main/MIDILibrary/
Для твоей задачи можно использовать пьезо эелементы, соответствубгий урок есть на канале
@@kentforthable Спасибо что ответил. Хочу вернутся к реализации силы удара. У меня на каждой клавише шесть пар контактов. и те что размыкаются и те что замыкаются. решение не ново, но применительно к ардуино и миди я не нашёл. Идея такова: Нажимается клавиша - размыкается контакт и записывается время, потом клавиша доходит до упора и замыкает другой контакт - снова записываться время. Разница между этими таймингами, переведенная в (1-127) и будет сила удара. В библиотеке в файле Controller.срр там снимается время, так понял для подавления дребезга, _time. Как ее, переменную, вивести в основной фал для дальнейшей ёё обработки.
Для реализации своей затеи я использую не один мультиплексор а два. один в штатном режиме будет работать - на извлечение ноты, другой подключенный к контактам на разрыв - нужен будет для записи начала движения клавиши. помоги.. :)
@@user-mk5ud5ug8p напиши мне на почту или вконтакте
@@user-mk5ud5ug8p там несложно скорость нажатия реализовать включаем таймер после нажатия 1й кнопки отключив после 2й для начала подклчюите к проекту 2 кнопки отловите нажатие, уже делали успешно
@@masterkit9517 У меня при нажатии (когда торкаюсь) клавиши кнопка на разрыв, потом в конце замыкается кнопка. (уже извлекает ноту). Используя эти библиотеки я на макете сделал сырую программу с несколькими кнопками измеряя время и потом трансформировал значение в нужную величину. Но для четырёх октав я использовал 3 мультиплексора - это когда по одной кнопке на клавишу. В случае двух кнопок удвоилось число мультиплексоров. И когда я сделал программу на 6 мультиплексоров :))) память закончилась. Ищу другие варианты чтобы уменшить вес массива. Или купить МЕГУ.
Автор что то делал подобное на ютубе незнаю как оно работает но скорее фейк ибо ну не будет оно работать я в електронике хорошо разбераюсь просто в цыфровое пришел только не давно. Не скетча нету нечего напрямую все подключил непонятно как. И код не показал даже.
миди на STM32 исследования из народа заходим в сообщество vk.com/club193475077 будем исследовать сами с вами как учёные
STM32 не пытались сделать? там микросхемы в разы мощнее ардуино все умеют USB HID AUDIO DEVICE подключаться в отличие от ардуино устарешвих
Не-а, я себе приобрёл esp32, она вроде как получше будет, и поддерживается библиотекой control surface
@@kentforthable а USB там есть в esp32 как в Leonardo? esp32 и у меня есть
Сдвиговые регистры лучше !
Мне 64 играть мало а 8 ну ето лучше вообще не соберать нечего