Выход из функции или остановка всех действий
- Войдите на сайт для отправки комментариев
Втр, 27/09/2016 - 16:07
Здравствуйте, ради интереса сделал управление Arduino с помощью хлопков. Так вот, есть условие, если после 2 хлопков (типо пароль) было 2 хлопка (это уже какая-то команда, 1 хлопок к примеру, будет вкл. свет) запустить следующий код...
void buzz(unsigned char pin, word frequencyInHertz, word timeInMilliseconds) // по сути это { // генератор частоты long delayAmount = (long)(long(1000000) / (long)frequencyInHertz); // имеет 3 параметра long loopTime = (long)(((long)timeInMilliseconds * 500) / delayAmount); // 1 - пин for (long i = 0; i < loopTime; i++) // 2 - частота { // 3 - длительность digitalWrite(pin, HIGH); // генерируем импульсы нужной частоты delayMicroseconds(delayAmount); digitalWrite(pin, LOW); delayMicroseconds(delayAmount); } }
Нужно чтоб когда человек повторно хлопнул 2 раза, данный код останавливался. Была идея всунуть проверку на хлопки внутри этого цыкла (который в коде). Но может есть какие-то другие варианты?
Здравствуйте, ради интереса сделал управление Arduino с помощью хлопков. Так вот, есть условие, если после 2 хлопков (типо пароль) было 2 хлопка (это уже какая-то команда, 1 хлопок к примеру, будет вкл. свет) запустить следующий код...
Нужно чтоб когда человек повторно хлопнул 2 раза, данный код останавливался. Была идея всунуть проверку на хлопки внутри этого цыкла (который в коде). Но может есть какие-то другие варианты?
Код выше просто играет имперский марш Star Wars.
Это пожалуй самвя короткая запись марша из всех возможных.
Скажите, а где вы изучали неумение програмировать?
Троль?
1) данный код - обрезанная версия, он не будет играть марш.. Если сильно надо, могу скинуть полную версию.
2) писал этот код не я. Его я нашел на 1 англ. сайте.
3) Программирую достаточно долго.. (не на Arduino, с ней я познакомился совсем недавно). Так что тут я с вами поспорю.
4) Если не можете дать ответ на вопрос, зачем собственно пишите?
Если умеете программировать, то без разницы что программировать.
Отговорка вообще, ни в какие ворота не лезет по сравнению с
Почему я не могу взять готовый код марша? У меня не музыкальный слух чтобы его составлять... Весь остальной код я пишу САМ. Так что нет тут оговорки. "Если умеете программировать, то без разницы что программировать" - я говорил иначе? Просто нужно понять все возможности ардуины..
Уже второй человек пишет не по теме.. Вопрос был совсем другой.. Неожидал такое встетить тут :/
Приведенный код и очень глупый вопрос, идут в разрез с заявлением о том, что Вы "умеете программировать".
----
Конечно видно, что код "Имперского марша" взят с англоязычного сайта, просто потому, что это код забугорного школьника, лет 11 от роду.
Об этом говорит применение делеев. В такой код нельзя вставить ничего. Начните с первичных понятий автоматного программирования и да придет к Вам счастье!
----
Над Вам глумятся, и я в том числе, потому, что нормально и коротко ответить на ваш вопрос нельзя.
Ответ, на самом деле, примерно такой:
1. перепешите код марша без делеев, в стиле включения действий по событиям, в данном случае - по событиям времени.
2. параллельно вызывайте функцию считывания других событий (в Вашем случае - хлопков). Время выполнения одного прохода loop() не должно превышать 2-3 мс.
3. Мне совершенно очевидно, что если Вы и поняли слова, которые я написал, то не имеете ни малейшего понятия о том, как это написать.
4. Научить этому (см. выше) в рамках форума, я, лично, не могу.
Спасибо за единственный нормальный ответ, а главное по теме. Буду пробовать.
Возможно я задал вопрос неправильно, или просто не до конца объяснил в чем проблема, но когда начали судить по отрывку не моего кода.. Ладно, не будем об этом. Возможно тут моя вина, что я не написал сразу, откуда я достал этот код..
Чистосердечное признание смягчает вину. Вам wdrakula в общем все верно написал. И делов там было бы чистая фигня (tone в функцию, новую ноту по системному таймеру...), если бы не одна проблема. Слух у человека довольно чувствительный. Из за этого воспроизводить миди (а у Вас именно это делает приведеный код) надо очень точно. Это решаемо, но переписывать надо прилично кода. Показуйте что есть, послушаем марш, может чего и выйдет.
Из за этого воспроизводить миди (а у Вас именно это делает приведеный код)
Если уж придираться, то код воспроизводит именно синтезированный wav, не midi. :) Ну, разве что представить ардуину в качестве монофонического синтезатора, но прописанные в скетче ноты - всё равно не midi эвенты. Нот в миди может и не быть вообще, а могут вполне быть mid файлы управления фейерверками, петардами, водяными фонтанами, [чем угодно].
Из за этого воспроизводить миди (а у Вас именно это делает приведеный код)
Если уж придираться, то код воспроизводит именно синтезированный wav, не midi. :)
Ну, разве что представить ардуину в качестве монофонического синтезатора,
У нас частный случай, кастрированый по самые пятки, без петард и фонтанов, но с нотами. Но тем не менее это именно миди.
Тогда играющий произведение с тетради пианист - тоже миди. А чё, частный случай :)))
А в нашем случае именно воспроизводим миди
Тогда играющий произведение с тетради пианист - тоже миди. А чё, частный случай :)))
Именно. Устаревшая биологическая версия синтезатора с оптическим вводом данных в формате первой версии )).
Кстати легко доказуемо. Слепым дважды рандомизированым плацебоконтролированым тестом ))) Два черных ящика, в одном - синтезатор, в другом пианист с пианиной, принтер с компом. В оба суем одинаковые флешки с миди файлами. Даем пианисту время распечатать ноты. Надеюсь он справится)) Приглашаем комисию, играют по очереди. Если никто не фальшивит - комисия не прийдет к выводу где кто. Повторяем опыт много раз для надежности. Вывод - пианист тождественен синтезатору в рамках границ опыта (в преф он может и лучше играет))).
А поговорить? ))))
Logik, MIDI - это не принцип, MIDI - это стандарт. Поэтому пианист неи разу не MIDI, т.к. у него нет цифрового интерфейса. А даже если бы был, то все равно не удовлетворял бы стандарту.
У мобилок и планшетов тоже нет midi интерфейса, они не являются midi-устройствами, но это не мешает им играть мидюки. Стандарт для midi устройств - GM, XG, GS др. Описывают от физического уровня до прикладного. Отсутствие физического, канального и пр. нижних уровней никак не влияет на способность воспроизврдить midi. Влияет только на способность взаимодействовать с другими устройствами по стандарту. И очевидно не об этом разговор. А о том, что нотная запись, что smf, что способ автора имеет один и тот же принцип - представления звукового ряда как последовательности звуков различной тональности из фиксированого и весьма ограниченого набора. И по крайней мере в множестве тонов нотного ряда все три записи эквивалентны, легко преобразовываются друг в друга почти без потерь (потери из-за конечной точности цифр не сравнить с потерями автоматических генераторов midi из wav). Остальные характеристики звуков - громкость, затухание и т.д. каждый описывает как может (например никак), но тут даже в стандартах midi все не просто.
Мобилки и планшеты умеют воспроизводить MIDI-файлы, но это не делает их MIDI устройствами.
А тот факт, что в стандерте MIDI основная идея позаимствована у нотной записи, совершенно не превращает нотную запись в одну из разновидностей MIDI.
Димагоги. Я бы на месте ТС сделал с плеером и карточкой памяти. Плеер играет марш, ардуинка слушает хлопки, когда услышала то останавливает запись...
Так и сделал. Это самый удобный вариант.