Мои советы Серега не воспринимает, так как совершенно не знает логику работы цифровых микросхем
Нет. Твои советы я не воспринимаю потому что ничего толкового в них нет и быть не может. В лучшем случае подъёбка про детские вопросы и откровения в стиле одного известного капитана. Никакой конкретики там быть не может. Потому что ты отвечаешь даже не задумываясь о сути вопроса. Тебе главное поскорей что-то написать, пусть и фигню полную, лиж бы с умными словами, чтобы выставить себы этаким мудрым знатаком. Мол "долго живу, потому и мудрый" (с) Есть и другая причина, по которой я твои советы не воспринимаю. На форуме есть множество людей, чьи советы я с удовольствием послушаю. И есть один (всего один, на весь форум), чьи советы мне вообще слушать не хочется, какими бы они ни были. Угадаешь, кто этот человек?
Мне не надо знать протокол МИДИ. Я в него никогда не впихивался и не собираюсь. У меня полноценный аппарат, сам по себе играет.
Я про что и говорю. Советы не втему раздаёшь, а у самого ума не хватит, чтобы это сделать. Купил себе детский недосинтезатор, который ещё и играет за тебя и понтуешься при каждом удобном случае. А я не зная ничего и ничего не умея, возьму и сделаю то, на что тебе ума не хватит даже со знаниями и умениями. Как-то так.
Не отвлекайся: весь форум знает , что твоя писулька намного длиннее и толще. Тебе список команд МИДИ нужен? Могу прислать. А будешь выёбываться - порхай сам как нибудь. Умник...( в Инете найдешь - это стандартные данные).
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Не, оно так давно. И так будет всегда. Данный кадр у меня вызывает стойкий рвотный позыв. Если он не желает быть обрызганым, ему достаточно просто не общаться со мной. Но видимо ему это нравится, потому и лезет со своими ценными советами туда, куда ему лезть прямым текстом настоятельно не рекомендовали.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Лезу. И буду лезть. По другому с тобой общаться я не могу и не хочу.
Добавлено after 5 hours 5 minutes 39 seconds: Набросал фрагмент кода на пару тактов. Примерно так (номера выходов ардуины наугад пока поставил, потом дома прсмотрю, куда что удобнее подключить): Спойлер
Код:
#define pot A0 // Потенциометр на вход A0 int drum1 = 1; // вход барабан 1 int drum2 = 2; // вход барабан 2 int drum3 = 3; int drum4 = 4; int drum5 = 5; int inA0 = 6; // выход на мультиплексор int inA1 = 7; int inA2 = 8; int inA3 = 9;
В целом то да, но желательно завернуть в цикл и обход 0-15 по мультиплексору и в другой обход ног drum1-drum5 можно. Но можно и так размахать - работать будет не хуже, править только неудобно если что.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Интересная фигня. Код, который я выложил выше, я писал на работе на телефоне, в текстовом редакторе. Дома скопировал его в Arduino IDE, а она мне пишет: error: stray '\240' in program Погуглил эту ошибку, пишут что это связано с неправильной кодировкой текста. Переписывать полностью вручную было лень, скопировал тот-же текст, но уже не с того файла, который я на телефоне писал, а прямо с форума, этой ошибки уже не было (были другие, их исправил, стало пока без ошибок).
Даже в блокноте можно кодировку переключать - в "сохранить как" внизу выбирается. Так что вполне может быть.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Ну я как-то даже не думал что проблема с кодировками может возникнуть даже с латиницей.
Добавлено after 6 hours 39 minutes 41 second: Написал вот такой код: Спойлер
Код:
#define pot A0 // Потенциометр на вход A0 /*#define A = 1; // Барабан "A" на ноту 1 #define B = 2; #define C = 3; #define D = 4; #define E = 5;*/
int drum1 = 2; // вход барабан 1 int drum2 = 3; // вход барабан 2 int drum3 = 4; int drum4 = 5; int drum5 = 6; int inA0 = 7; // выход на мультиплексор int inA1 = 8; int inA2 = 9; int inA3 = 10;
void loop(){ int x; x = analogRead(pot) / 4 + 50; // Задаётся длительность паузы между нотами, регулируемая потенциометром. digitalWrite(inA0, LOW); // мультиплексор, канал 0 digitalWrite(inA1, LOW); digitalWrite(inA2, LOW); digitalWrite(inA3, LOW); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, HIGH); // мультиплексор, канал 1 digitalWrite(inA1, LOW); digitalWrite(inA2, LOW); digitalWrite(inA3, LOW); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, LOW); // мультиплексор, канал 2 digitalWrite(inA1, HIGH); digitalWrite(inA2, LOW); digitalWrite(inA3, LOW); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, HIGH); // мультиплексор, канал 3 digitalWrite(inA1, HIGH); digitalWrite(inA2, LOW); digitalWrite(inA3, LOW); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, LOW); // мультиплексор, канал 4 digitalWrite(inA1, LOW); digitalWrite(inA2, HIGH); digitalWrite(inA3, LOW); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, HIGH); // мультиплексор, канал 5 digitalWrite(inA1, LOW); digitalWrite(inA2, HIGH); digitalWrite(inA3, LOW); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, LOW); // мультиплексор, канал 6 digitalWrite(inA1, HIGH); digitalWrite(inA2, HIGH); digitalWrite(inA3, LOW); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, HIGH); // мультиплексор, канал 7 digitalWrite(inA1, HIGH); digitalWrite(inA2, HIGH); digitalWrite(inA3, LOW); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, LOW); // мультиплексор, канал 8 digitalWrite(inA1, LOW); digitalWrite(inA2, LOW); digitalWrite(inA3, HIGH); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, HIGH); // мультиплексор, канал 9 digitalWrite(inA1, LOW); digitalWrite(inA2, LOW); digitalWrite(inA3, HIGH); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, LOW); // мультиплексор, канал 10 digitalWrite(inA1, HIGH); digitalWrite(inA2, LOW); digitalWrite(inA3, HIGH); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, HIGH); // мультиплексор, канал 11 digitalWrite(inA1, HIGH); digitalWrite(inA2, LOW); digitalWrite(inA3, HIGH); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, LOW); // мультиплексор, канал 12 digitalWrite(inA1, LOW); digitalWrite(inA2, HIGH); digitalWrite(inA3, HIGH); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, HIGH); // мультиплексор, канал 13 digitalWrite(inA1, LOW); digitalWrite(inA2, HIGH); digitalWrite(inA3, HIGH); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, LOW); // мультиплексор, канал 14 digitalWrite(inA1, HIGH); digitalWrite(inA2, HIGH); digitalWrite(inA3, HIGH); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x);
x = analogRead(pot) / 4 + 50; digitalWrite(inA0, HIGH); // мультиплексор, канал 14 digitalWrite(inA1, HIGH); digitalWrite(inA2, HIGH); digitalWrite(inA3, HIGH); if (digitalRead(drum1) == LOW) { noteOn(0x90, 1, 0x45); // Проверка включенных тумблеров (низкий уровень) и отправка нот по миди. } if (digitalRead(drum2) == LOW) { noteOn(0x90, 2, 0x45); } if (digitalRead(drum3) == LOW) { noteOn(0x90, 3, 0x45); } if (digitalRead(drum4) == LOW) { noteOn(0x90, 4, 0x45); } if (digitalRead(drum5) == LOW) { noteOn(0x90, 5, 0x45); } delay (x); } void noteOn(int cmd, int pitch, int velocity) { Serial.write(cmd); Serial.write(pitch); Serial.write(velocity); }
Работает, но как-то странно. В некоторых комбинациях задействованные барабаны начинают звучать одновременно, даже если тумблеры какого-то барабана не включены. Например если включить на первом канале 1й и 5й барабан, то они будут звучать одновременно везде (например первый ещё несколько раз включен, а пятый только в начале, но звучать они будут всегда одновременно). Если включить первый на первом канале, а пятый на пятом - то-же самое. А если первый на первом канале, а пятый на втором канале - всё работает нормально, пятый звучит только один раз, не зависимо от того, сколько раз звучит первый. Ну и ещё много таких комбинаций, когда некоторые барабаны звучат одновременно... Может в схеме где-то накосячил, но уже на сто раз всё просмотрел и проверил, всё правильно вроде, нигде ничего не замыкает. И ещё. Пробовал замыкать проволочками со снятым мультиплексором, если занкнуть вывод какого либо барабана, он стучит не переставая и довольно быстро (скорость регулируется, но всё равно гораздо быстрее, чем завершается цикл и начинается по новой). Вроде по коду такого быть не должно. С мультиплексором звучит как положено, один раз (мультиплексор кратковременно даёт сигнал) и это не мешает, но кажется мне, что загвоздка где-то именно здесь...
Надо будет это как то покомпактней написать, а то глаза разбегаются. Попозже.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Пробовал замыкать проволочками со снятым мультиплексором, если занкнуть вывод какого либо барабана, он стучит не переставая и довольно быстро (скорость регулируется, но всё равно гораздо быстрее, чем завершается цикл и начинается по новой). Вроде по коду такого быть не должно.
Не, тут правильно всё. Он так и должен стучать, так как после паузы снова проверяется, не включен ли тумблер, а там замкнуто. Значит дело в чём-то другом. Буду копать дальше
Serial.print надо сделать и посмотреть в мониторе com-порта что там реально генерится и на каком шаге опроса мультиплексора.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Добавлено after 12 minutes 43 seconds: Получается, что если какой либо барабан хотябы один раз включить в одном столбце тумблеров с другим барабаном, он будет звучать одновременно с этим барабаном даже тогда, когда этот барабан должен звучать один. То есть включил первый барабан восемь раз, через тумблер (1,3,5,7,9,11,13,15), а второй барабан только один раз (1), то он всё равно будет звучать вместе с первым восемь раз за каждый такт. А если совпадающих в одном столбце барабанов нет, всё нормально работает.
Добавлено after 10 minutes 38 seconds: А, оно так и будет. Если один тумблер замкнуть в одном столбце одновременно с другим, он будет замыкать эти два барабана каждый раз вместе. Надо как я и говорил, ставить 4 мультиплексора, чтобы были 64 независимых тумблера. Надо было таки на кнопках делать Но на кнопках дорого (кнопки гораздо дороже обойдутся и дохрена светодиодов надо и опять же их куда-то подключить... В общем оно того не стоит. Значит буду по одному барабану включать.
Что то я запутался. А как тумблеры включены ? Я думал там 16 в длину и по кол-ву барабанов в ширину.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Добавлено after 1 minute 51 second: Пока буду пробовать с предыдущим кодом. Надо будет туда добавить несколько массивов и переключаться между ними. Только пока не знаю, как это сделать. Надо подумать
int pin_drum[5] = {2,3,4,5,6}; int pin_mux[4] = {7,8,9,10};
void setup() { int i; Serial.begin(31240); // скорость передачи MIDI-данных: 31250 pinMode(pot, INPUT); for (i=0;i<5;i++) pinMode(pin_drum[i], INPUT); for (i=0;i<4;i++) pinMode(pin_mux[i], OUTPUT); }
void noteOn(int cmd, int pitch, int velocity) { Serial.write(cmd); Serial.write(pitch); Serial.write(velocity); }
А ноту не надо выключать, отправляя команду в MIDI, если на очередном шаге она выключена переключателем ? Этого ведь нет в коде - может поэтому не то получается ?
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Нифига себе Этот код размером как тот маленький фрагмент кода, который я выкладывал. Надо повнимательнее изучить, интересно же, как это можно так компактно его записать.
Morroc писал(а):
А ноту не надо выключать, отправляя команду в MIDI, если на очередном шаге она выключена переключателем ?
Был бы музыкальный секвенсор, было бы нужно. Но у меня барабанный секвенсор. Барабаны долго не звучат Стук-дзынь и готово Но каждый стук прозвучать должен до конца (длина стука у всех разная), иначе звучать будет беспонтово, звуки будут обрубаться. Единственное, это надо глушить открытый хайхет, перед тем, как будет звучать закрытый (они на одной "тарелке" расположены и в реале звучание открытого хайхета заглушается, когда его закрывают, чтобы брякнуть по закрытому Но я пока такие сложности решил не использовать. У меня будет просто закрытый или просто открытый. Иначе там кучу каналов надо, чтобы все барабанные заморочки использовать.
Morroc писал(а):
Этого ведь нет в коде - может поэтому не то получается ?
Не, получается не то только потому, что если в одном столбце включено два тумблера, то каналы этих тумблеров будут всегда замкнуты между собой на каждом шаге. Тут чисто электрическая заморочка получилась. Оно в общем-то и так отлично. Просто исключает возможность звучания двух барабанов одновременно. Или один из барабанов, который должен звучать одновременно с каким либо ещё, можно ещё раз назначить на другой канал и включать его вместо основного в те моменты, когда он должен звучать одновременно с другим барабаном. Например одновременно звучащий Kikc и Clap на каждом втором ударе (типа как в стилях House), просто бочка размещается на два канала и на одном канале каждый первый удар, на другом - каждый второй. Эта заморочка немного ограничивает ритмические рисунки, но пользоваться очень даже можно и так.
Я кстати нашёл в интернете готовый проект драммашины на ардуине, но это не мидисеквенсор, а именно драммашина и ардуина сама генерирует звуки барабанов. Я сперва не обратил на этот проект внимания (хотел именно миди, так как там можно очень качественные сэмплы использовать, а тут - ну какое там качество звука ардуина может нагенерировать). Но на ютубе посмотрел, вроде неплохо звучит, решил попробовать. Там надо 9 тумблеров, у меня нет ни одного, пока так, проволочками позамыкаю Схему сейчас допаял, буду пробовать.
Поиграйтесь в code.org, у меня ребенок даже что то там оптимизировал циклами. Можно биты управления мультиплексором тоже в одну в строку уместить, оставил для наглядности.
Не пойму почему с тумблерами так вышло, вроде всего хватает со стороны мк и мультиплексора чтобы каждый отдельно определять вкл/выкл. На проводах где то сэкономили, соединив что то вместе ?
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Сейчас этот форум просматривают: Bing [Bot], encelad и гости: 45
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения