Блок мультиплексора 74HC4051 из скетча
Блок мультиплексора 74HC4051 из скетча
Добрый день.
есть скетч работы мультиплексора 74HC4051 я попробовал создать пользовательский блок Посмотрите пожалуйста правильно ли я его сделал?
Правильно ли назначил и присвоил типы данных на входы и выходы блока?
есть скетч работы мультиплексора 74HC4051 я попробовал создать пользовательский блок Посмотрите пожалуйста правильно ли я его сделал?
Правильно ли назначил и присвоил типы данных на входы и выходы блока?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Капитан
- Сообщения: 908
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 20 раз
- Поблагодарили: 22 раза
Блок мультиплексора 74HC4051 из скетча
Вывод в сериал порт в сам блок зря вставили.
При этом из блока в саму программу не передаются данные с опрашиваемого канала (нет выхода, данные отправляются в сериал порт, зачем? почему не на выход блока?).
Да и какой канал в данный момент опрашивается - непонятно. Задать номер опрашиваемого канала нечем, каналы опрашиваются в цикле.
Для чего данный блок и как им пользоваться?
Блок мультиплексора 74HC4051 из скетча
Добрый день и спасибо за ответ, а то я уж было отчаялся.Naladchik писал(а): 19 апр 2021, 07:47Вывод в сериал порт в сам блок зря вставили.
При этом из блока в саму программу не передаются данные с опрашиваемого канала (нет выхода, данные отправляются в сериал порт, зачем? почему не на выход блока?).
Да и какой канал в данный момент опрашивается - непонятно. Задать номер опрашиваемого канала нечем, каналы опрашиваются в цикле.
Для чего данный блок и как им пользоваться?
принцип и описания работы, впрочем как и сам скетч, я взял отсюда
https://www.youtube.com/watch?v=OgaeEiHemU4
как вытащить отправку в сериал порт не представляю да и не знаю засем
1. Нет входа задания канала. Каналы перебираются по циклу. Как определить с какого канала поступили данные?
2. Нет выхода данных с канала. Как Вы планируете использовать в программе данные с этого блока?
3. Внутрь блока вставлен вывод в сериал порт - могут быть конфликты с другими частями/блоками программы.
1) в порядке очередности через точку с запятой
2) 3) за это не знаю - а как правильно
1) а зачем разрешать? пусть фигачит цикл при включении устройства? или разрешение обязательно?1. Два входа. Разрешение работы блока и задание номера опрашиваемого канала.
2. Один выход. Данные с опрашиваемого канала.
3. Номера пинов для подключения модуля должны задаваться в параметрах блока, а не его выходами
2) один выход с данными есть
3) если честно не понял
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Блок мультиплексора 74HC4051 из скетча
Добрый день! под свои нужды состряпал вот так.
в блоке поменяй под свои пины.
в блоке поменяй под свои пины.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Капитан
- Сообщения: 908
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 20 раз
- Поблагодарили: 22 раза
Блок мультиплексора 74HC4051 из скетча
[ref]Ushakovkz[/ref],
Код из Вашего блока:
...
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
...
Получается если на канале нет сигнала "Mux1_State[(х)] < 100", то на выходе блока значение - "a(х+1) = (х+1)",
иначе, если есть сигнал то на выходе блока нуль - "a(х+1) = 0"
Как то нелогично, или это так и задумано?
Код из Вашего блока:
...
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
...
Получается если на канале нет сигнала "Mux1_State[(х)] < 100", то на выходе блока значение - "a(х+1) = (х+1)",
иначе, если есть сигнал то на выходе блока нуль - "a(х+1) = 0"
Как то нелогично, или это так и задумано?
Блок мультиплексора 74HC4051 из скетча
делал блок под свои нужды, "опрос кнопок".
Если не нажимать кнопку то на выходе 1023, при нажатии прыгает от 20 до 0 поэтому от поставил от фонаря "< 100"
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
если номер в массиве равен 0 и значение меньше 100 - записать в переменную int а1-1, иначе а1 = 0
if(Mux1_State[1] < 100) {a2 = 2; } else {(a2 = 0);}
если номер в массиве равен 1 и значение меньше 100 - записать в переменную int а2 - 2, иначе а2 = 0
...................................................................и.т.д.
Отправлено спустя 17 минут 17 секунд:
вот пример, делал на скорую руку.
Если не нажимать кнопку то на выходе 1023, при нажатии прыгает от 20 до 0 поэтому от поставил от фонаря "< 100"
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
если номер в массиве равен 0 и значение меньше 100 - записать в переменную int а1-1, иначе а1 = 0
if(Mux1_State[1] < 100) {a2 = 2; } else {(a2 = 0);}
если номер в массиве равен 1 и значение меньше 100 - записать в переменную int а2 - 2, иначе а2 = 0
...................................................................и.т.д.
Отправлено спустя 17 минут 17 секунд:
вот пример, делал на скорую руку.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Блок мультиплексора 74HC4051 из скетча
С таким подходом, даже при успешной реализации Вашего проекта играть вживую/совершенствовать технику игры/получать удовольствие на таком инструменте будет невозможно. Время от нажатия клавиши до начала воспроизведения семпла (ноты) должно быть как можно меньше и не превышать ~20mSec (из моего практического опыта) и так-же с отпусканием клавиши/прекращением воспроизведения. Повторю для концентрации внимания: для живой игры, а не запуска секвенсера (лупа) как на многих подобных видео из Youtube (например). Для примера в моем Roland-е рассинхронизация (задержка) живой игры с автоакомпаниментом равна 7 mSec. При использования в качестве семплера внешнего устройства (особенно програмного, VST/DXi) задержка соответственно увеличивается. Нужно чистить всё лишнее, разбивать микропрограмму на отдельные части/выполняемые только по определённому условию/совпадению условий. Применение аналогового мультиплексора для МИДИ клавиатур связано по моему мнению с аналоговыми сигналами от клавиатуры для определения скорости нажатия клавиши и послекасания (MIDI parameters- velocity,aftertouch). Для саксофона роль первого параметра задается (вероятно) датчиком давления воздуха. Другие аналоговые параметры МИДИ (или SysEx сообщения) для GM их 128 не являются настолько критичными к скорости отработки. На мой взгляд нажатие/отпускание клавиш должно обрабатываться мгновенно, по внешнему прерыванию, запускать алгоритм определения ноты (номер клавиши/сочетания клавиш - к счастью это одноголосный инструмент) и уровня её громкости, а остальные параметры (в том числе легато), рассчитываться и корректироваться уже по ходу воспроизведения семпла. Это моё личное мнение и опыт использования (не проектирования !!!) клавишных инструментов и можете игнорировать это сообщение при наличии твёрдой уверенности в успешном исходе Вашего начинания.konsys писал(а): 19 апр 2021, 11:18 а зачем разрешать? пусть фигачит цикл при включении устройства? или разрешение обязательно?

Я рассмотрел эту тему в контексте этой другой темы ув. ТС, как общий подход к программированию МК.
Последний раз редактировалось Labu559 20 апр 2021, 14:46, всего редактировалось 1 раз.
-
- Капитан
- Сообщения: 908
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 20 раз
- Поблагодарили: 22 раза
Блок мультиплексора 74HC4051 из скетча
Не подскажете?
кто нибудь сможет помочь с таким блоком, реально уже не туда копаю.
viewtopic.php?p=102787#p101858
кто нибудь сможет помочь с таким блоком, реально уже не туда копаю.
viewtopic.php?p=102787#p101858
Блок мультиплексора 74HC4051 из скетча
Собрал макетку - буду пробовать 4 варианта программ мультиплексораUshakovkz писал(а): 20 апр 2021, 06:49 Добрый день! под свои нужды состряпал вот так.
в блоке поменяй под свои пины.
Давайте в данной теме обсуждать мультиплексор, а инструмент в другой теме.
Блок мультиплексора 74HC4051 из скетча
Какой именно мультиплексор предлагаете обсуждать? Тот, что в 1-м сообщении? О нём уже всё сказано в сообщении ув. [ref]Naladchik[/ref], и более добавить нечего.
[spoiler title=5 -й вариант для случая, если стенка окажется крепче черепа:] [/spoiler]konsys писал(а): 21 апр 2021, 15:32 Собрал макетку - буду пробовать 4 варианта программ мультиплексора
Странно, помогаешь человеку, а в ответ получаешь словесные гадости и минусы, как бы на 51-ом уже, не "молодо-зелено".

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 12:04, всего редактировалось 1 раз.
Блок мультиплексора 74HC4051 из скетча
[ref]Labu559[/ref], я вижу, что у вас собран проект в Протеусе. Если вы ещё не удалили его, попробуйте загнать в него вот это
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Капитан
- Сообщения: 908
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 20 раз
- Поблагодарили: 22 раза
Блок мультиплексора 74HC4051 из скетча
Ну тогда и я свой вариант предложу, может кому то будет интересно.
Версия FLP 7.3.5
Вся необходимая информация в описании блока.
Из особенностей: пины задаются в самом блоке, 2 режима работы (номер канала/все каналы).
Вся необходимая информация в описании блока.
Из особенностей: пины задаются в самом блоке, 2 режима работы (номер канала/все каналы).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Блок мультиплексора 74HC4051 из скетча
Здравствуйте ув. Эдуард, рад Вашему возвращению! По Вашему проекту: кажется понял Вашу мысль (циклический автоскан)- работает отлично, но пришлось включатель INH выхода 4051 заземлить (согласно Datasheet) и кнопки как елемент/способ переключения в таком случае конечно лишние [spoiler title= Симуляция и схема.] [/spoiler]edyapd писал(а): 22 апр 2021, 05:03 [ref]Labu559[/ref], ... попробуйте загнать в него вот это Multiplexer74HC4051_v2.flp
Конечно интересно, по крайней мере мне, спасибо Вам! Тоже работает отлично! [spoiler title= До кучи:] [/spoiler]
Вам успехов и всем нам меньше агрессии и больше уважения в конце Большого Поста и накануне Светлого Праздника!
Исправил вторую симуляцию в Протеусе.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 12:21, всего редактировалось 1 раз.
Блок мультиплексора 74HC4051 из скетча
Благодарю за помощь, честно говоря не ожидал, что столько человек откликнется!
Работа исходного кода
https://youtu.be/4MfbqGPqIF0
Хочу сказать сразу
Возможно я сделал ошибки в создании и подключении блоков и метода перебора
Мультиплексор от Naladchik написал в личку
Код от Ushakovkz я не понял как правильно назначить пины ардуино
Мультиплексор от edyapd - я увеличил частоту от 20 мс до 500 мс что бы смотреть изменения
https://youtu.be/Y-wUalq9JWg
Мультиплексор от Labu559 схему не пересобирал, включил как есть, только пины переназначил
https://youtu.be/TDh6UEC7LrM
Мультиплексор от меня
работает, но все равно криво - наверное, намудрил что то с частотой обновления https://youtu.be/9i3V1hGeTn8
Работа исходного кода
https://youtu.be/4MfbqGPqIF0
Хочу сказать сразу
Возможно я сделал ошибки в создании и подключении блоков и метода перебора
Мультиплексор от Naladchik написал в личку
Код от Ushakovkz я не понял как правильно назначить пины ардуино
Мультиплексор от edyapd - я увеличил частоту от 20 мс до 500 мс что бы смотреть изменения
https://youtu.be/Y-wUalq9JWg
Мультиплексор от Labu559 схему не пересобирал, включил как есть, только пины переназначил
https://youtu.be/TDh6UEC7LrM
Мультиплексор от меня
работает, но все равно криво - наверное, намудрил что то с частотой обновления https://youtu.be/9i3V1hGeTn8
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось konsys 22 апр 2021, 14:05, всего редактировалось 2 раза.
Блок мультиплексора 74HC4051 из скетча
Спасибо, что опробовали. Да, я забыл упомянуть о сигнале выбора микросхемы мультиплексора, там изменения всё правильно. Ну а кнопки они конечно никак не влияют, так как не участвуют в коде.Labu559 писал(а): 22 апр 2021, 10:25 По Вашему проекту: кажется понял Вашу мысль (циклический автоскан)- работает отлично, но пришлось включатель INH выхода 4051 заземлить (согласно Datasheet) и кнопки как елемент/способ переключения в таком случае конечно лишние
Меня смутило несколько другое. И вашем и в моём проекте дважды отправляется один и тот же канал. Сперва со старыми данными, потом с обновлёнными. И кажется я нашёл причину. Нужно в блок отправки, на вход send подавать сигнал разрешения с выхода R-триггера, который разрешает запись переменной Input(в моём проекте). В вашем думаю тоже можно обойтись косметическими изменениями, чтобы не было двойной отправки.
Теперь из личного опыта работы с мультиплексорами. Я не использовал 4051, не знаю как она будет работать. Использовал её советский аналог КП2. Так вот, при напряжении питания 3.3В, её можно было опрашивать не чаще 2 раз в секунду, иначе она не успевала переключаться и выдавала всякий мусор. Но для моего проекта это было не критично, так как я собирал данные по освещённости и влажности.
Второе, пока я искал как избавиться от мусора на выходе мультиплексора, наткнулся на обсуждение снятия сигнала с DRUM-установки. Там тоже боролись с тем, что шёл перенос сигнала с предыдущего канала. При этом чем сильнее был сигнал, тем он сильнее влиял. Они пришли к выводу, что нужно жертвовать одним входом на мультиплексоре, заземляя его. И считывание производить чередуя с ним. Например 0 вход заземлён, тогда считывание будет выглядеть как 1-0-2-0-3-0-4-0-5-0-6-0-7-0-1.....
Либо находить задержку на считывание, после переключения адресов.
Блок мультиплексора 74HC4051 из скетча
Ув.Эдуард, нет повода для смущений. Включив порядок выполнения блоков, всё становится на свои места- отправка в UART по изменению данных, сначала отправляется значения счётчика, потом значение АЦП и это две (вторая и предпоследняя) части одной строки. На самом деле данные по отдельности меняются один раз. [spoiler title= Конечно в наших проектах можно вывод в монитор легко поправить: ] [/spoiler] А в проекте Ув. Павла это все происходит неразрывно (атомарно?) в пользовательском блоке.edyapd писал(а): 22 апр 2021, 13:18 Меня смутило несколько другое. И вашем и в моём проекте дважды отправляется один и тот же канал.
И я о том же, об практическом опыте, потому у меня в проекте стоит слабо подтягивающий к земле аналоговый выход резистор, и в момент переключения я сначала кратковременно отключаю выход мультимплексора (подаю HIGH на INH), пока идет расчёт данных, а PULLDOWN делает свою работу с А0. Кроме того в наших версиях можно использовать несколько мультиплексоров на единственном общем аналоговом входе и на уже используемых (тоже общие для всех) цифровых А, В, С, управляя по отдельности выводом INH для каждого мультиплексора раздельными выходами МК. Для таких именно случаев у меня отдельный INH, а не на земле постоянно.edyapd писал(а): 22 апр 2021, 13:18 ...её можно было опрашивать не чаще 2 раз в секунду, иначе она не успевала переключаться и выдавала всякий мусор...Они пришли к выводу, что нужно жертвовать одним входом на мультиплексоре, заземляя его...
Приятно вести разговор с людьми, которые понимают о чём речь.

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 17:09, всего редактировалось 4 раза.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость