Как можно сделать, чтобы пьезодинамик и ргб работали вместе? И с помощью какого цикла можно сделать, чтобы при хлопке они начи
- Войдите на сайт для отправки комментариев
Ср, 26/12/2018 - 11:46
Добрый день. Я - новичок в Arduino и сейчас нахожусь в процессе создания простенького проекта - ёлки, которая начинает гореть разными цветами и переливаться, когда слышит хлопок. Меня интересует вопрос - как можно сделать, чтобы пьезодинамик и ргб работали вместе? И с помощью какого цикла можно сделать, чтобы при хлопке они начинали работать?
как можно сделать, чтобы пьезодинамик и ргб работали вместе?
А кто такой ргб? И в чём собственно проблема? Они не работают вместе? В чём это выражается?
с помощью какого цикла можно сделать, чтобы при хлопке они начинали работать?
Никаким циклом это не делается. Совсем никаким.
ргб это, наерна, российская государственная библиотека.
ргб это, наерна, российская государственная библиотека.
Ну это-то понятно, а с чего её не работать вместе с пьезодинамиком? Проблема-то в чём?
Я запускаю программу, датчик звука должен считать хлопок, после чего сначала запускается процедура с пьезодинамиком, мелодия заканчивается, и начинает гореть rgb. Я же хочу, чтобы пьезодинамик и rgb работали одновременно до тех пор, когда датчик звука не считает второй хлопок, и они выключатся.
Я запускаю программу
Да, неужели? Ну, и где эта программа? Почему я её не вижу? Форум глючит?
int tonePin = 11;
int redPin = 3;
int greenPin = 5;
int bluePin = 6;
void setup() {
pinMode(2,OUTPUT);
pinMode(A0,INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void gori()
{
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin,0);
delay(1000);
analogWrite(redPin, 255);
analogWrite(greenPin, 15);
analogWrite(bluePin,0);
delay(1000);
analogWrite(redPin, 255);
analogWrite(greenPin, 30);
analogWrite(bluePin,0);
delay(1000);
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin,0);
delay(1000);
analogWrite(redPin, 255);
analogWrite(greenPin, 125);
analogWrite(bluePin,208);
delay(1000);
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin,255);
delay(1000);
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin,255);
delay(1000);
analogWrite(redPin,192);
analogWrite(greenPin, 50);
analogWrite(bluePin,192);
delay(1000);
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin,255);
delay(1000);
analogWrite(redPin, 255);
analogWrite(greenPin, 50);
analogWrite(bluePin,10);
}
void midi() {
tone(tonePin, 293, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 391, 225.0);
delay(250.0);
tone(tonePin, 293, 450.0);
delay(500.0);
delay(250.0);
tone(tonePin, 293, 225.0);
delay(250.0);
tone(tonePin, 293, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 391, 225.0);
delay(250.0);
tone(tonePin, 329, 450.0);
delay(500.0);
delay(250.0);
tone(tonePin, 329, 225.0);
delay(250.0);
tone(tonePin, 329, 225.0);
delay(250.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 587, 450.0);
delay(500.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 659, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 493, 675.0);
delay(750.0);
tone(tonePin, 293, 225.0);
delay(250.0);
tone(tonePin, 293, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 391, 225.0);
delay(250.0);
tone(tonePin, 293, 450.0);
delay(500.0);
delay(250.0);
tone(tonePin, 293, 225.0);
delay(250.0);
tone(tonePin, 293, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 391, 225.0);
delay(250.0);
tone(tonePin, 329, 450.0);
delay(500.0);
delay(250.0);
tone(tonePin, 329, 225.0);
delay(250.0);
tone(tonePin, 329, 225.0);
delay(250.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 659, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 391, 450.0);
delay(500.0);
tone(tonePin, 587, 450.0);
delay(500.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 450.0);
delay(500.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 450.0);
delay(500.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 391, 337.5);
delay(375.0);
tone(tonePin, 440, 112.5);
delay(125.0);
tone(tonePin, 493, 450.0);
delay(500.0);
delay(500.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 523, 337.5);
delay(375.0);
tone(tonePin, 523, 112.5);
delay(125.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 112.5);
delay(125.0);
tone(tonePin, 493, 112.5);
delay(125.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 440, 450.0);
delay(500.0);
tone(tonePin, 587, 450.0);
delay(500.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 450.0);
delay(500.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 450.0);
delay(500.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 391, 337.5);
delay(375.0);
tone(tonePin, 440, 112.5);
delay(125.0);
tone(tonePin, 493, 450.0);
delay(500.0);
delay(500.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 523, 337.5);
delay(375.0);
tone(tonePin, 523, 112.5);
delay(125.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 225.0);
delay(250.0);
tone(tonePin, 493, 112.5);
delay(125.0);
tone(tonePin, 493, 112.5);
delay(125.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 587, 225.0);
delay(250.0);
tone(tonePin, 523, 225.0);
delay(250.0);
tone(tonePin, 440, 225.0);
delay(250.0);
tone(tonePin, 391, 675.0);
delay(750.0);
}
void loop() {
while(analogRead(A0)>60)
{
midi();
gori();
if(analogRead(A0)>60)
{
break;
}}}
Черрик, Вас устроит совет типа: исправьте ошибку в строке № ХренЗнает ?
Если нет, то сначала прочитайте вот эту тему, а потом вставьте код нормально.
1. ТС (то есть Топик Стартер - автор темы), родной, ты почему не прочел, как код вставляют? Ведь даже кнопочка "code" всерху формы ввода приделана? С телефона - сложнее, но в телефоне врядли есть текст программы, да?
2. Дед и Женя, мы ж договаривались - в песочнице не сразу гнобить новичков?
3. ТС. С тем, что ты выложил сделать ничего нельзя - просто выбросить. Тебе нужно пересмотреть свой взгляд на программу.
Следует видеть программу не как цельное действие - например проигрывание мелодии, а как маленькие инструкции для, к примеру, "шустрого эльфа". Допустим эльф прибегает каждые ...ну пусть 10миллисекунд (мс) и проверяет свой график: "Так, посмотрим на часы, не пора ли поменять ноту в мелодии? Если пора - поменяем". Таким же образом смотрим на отдельные шаги управления цветом: посмотреть на часы, свериться с графиком и, если уже пора, поменять цвет.
Каждое действие эльфа - должно быть коротким, чтобы за 10 мс он успел сделать их все и еще пива попить! ;))) Попить и снова притупить к своей бесконечной, но полезной работе.
------
Стало понятнее?
2. Дед и Женя, мы ж договаривались - в песочнице не сразу гнобить новичков?
А кто гнобит? Я помогаю изо всех сил.
Код не смотрел, так и не буду - нехай вставит как положено
DetSimen, конкретно, что не так?
DetSimen, конкретно, что не так?
Неправильно вставленный код никто не читает - это правило.
читай мудрого Пингвина, сообщение #8.
Я с ним согласен, своё сообщение выпилил, не буду глумица.
wdrakula, спасибо, хоть кто-то здесь нормальный есть. Всё стало понятно. Извините, но я на этом сайте сижу лишь с этого дня, и правил не знаю.
wdrakula, спасибо, хоть кто-то здесь нормальный есть. Всё стало понятно. Извините, но я на этом сайте сижу лишь с этого дня, и правил не знаю.
Плохо заходишь. А я просто еще трезвый.
Тут все нормальные, кроме новичков. Сперва гугль и яндекс, потом форум. На форуме - сначала правила, чтение и поск, потом - вопросы. Никто не обязан тебя уважать и тебе отвечать. Будь вежлив и достоин помощи.
Про код с делеями - уже 100500 страниц на ВСЕХ форумах написано. Ты полагаешь кому-то тут интересно все это снова объяснять? Причем тому, кто поленился САМ поискать в гугле и яндексе?
я на этом сайте сижу лишь с этого дня, и правил не знаю.
А почитать прибитую гвоздями тему, на которую я, к тому же дал прямую ссылку в посте #7, религия не позволила?
Теперь про вставленный Вам код. Перевставляйте заново. Просто открывайте окно вставки кода и переносите туда код из IDE копипастом! Номера строк он и без Вас вставит. Делайте так, чтобы я мог просто скопировать оттуда и запустить у себя! Зачем Вы издеваетесь-то?
Вставите нормально, посмотрим.
А теперь перечитай мое сообщение №8 и скажи, понял ли ты хоть что-то. Также неплохо бы знать объем твоего опыта в программировании. Чайнику и начинающемы по разному нужно объяснять.
Типа for(i=0; i < 1; i++) что ли?
Господа-коллеги! Я сейчас уеду - повезу жену на апгрейд головы (в парикмахерскую ;)) ). Поэтому отключаюсь на время.
Давайте без группового изнасилования, плз?
Нужно просто пройти по тривиальной декомпозиции:
1. Выяснить, что ТС понятнее - объекты или классика и так и делать дальше.
2. На примере мелодии делаем СТАРТ, СТОП, СТЕП.
3. ДОбавляем для света СТАРТ, СТОП, СТЕП.
4. Добавляем сенсор хлопка.
5. соединяем все вместе.
=====================
Так подробно, чтобы потом ПОМЕСТИТЬ КАК ПРИМЕР в Песочнице и больше НИКОГДА не возвращяться к подобной херне!!!
....
Все, убегаю, сорри.
Ну, слава Богу. В следующий раз ещё пере втсавкой Ctrl+T нажмите.
Ну, что, поехали разгребать.
1. Строки №№ 1, 2, 4 и 6
2. Строка № 9
3. Строки №№ 16-77
4. Строки №№ 81 и 82 (и все остальные, где таже чушь написана)
5. Строки №№ 79-290
6. Строки №№ 298-303
теперь, если Вы переделаете скетч, проверите, убедитесь, что работает, и выложите новую версию, мы сможем поговорить и о параллельности. Но сначала выложите новую версию. Только про Ctrl+t не забудьте
Я вернулся, но ТС пропал. :)))
Ждем, когда ТС ответит про свой уровень подготовки и можно описывать "маленьких трудолюбивых эльфов".
Не смейтесь, просто Рождество, хоть и бусурманское, Джингл Беллс и все эти вещи... Я пока добрый, но еще чуть-чуть и уже пора быть не трезвым! ;)))))
================
Женя! Ты, как я понял, хочешь новичка все-таки группой от...учить? Я к тому, что не стоит ковыряться и причесывать ту херню, что он выложил. Очень трудно, но на мой взгляд необходимо дать понять, что нужно иначе смотреть на программу в целом. Видеть не процесс, а уметь выделять элементарный шаг. Я про опыт у ТС спрашиваю, потому, что програмисты интерфейсов под ПК такой опыт имеют. И шаг отрисовки и опрос интерфейса.
P.S. Там нонеча Великий на форуме нарисовался. Мож и Клапа в честь Нового года реанимируется?
Нет, Женя, совершенно не хочется. Но мы вместе придумали песочницу. И вместе решили не посылать тут новичков нахер. Где-то же они должны учиться? Мне проще и дальше нести свет учения Великого Неназываемого (в том, что Он не успел запрететить ;))) ), и всласть глумиться над 100500 раз задавамыми глупыми вопросами.
Но, повторю, мы придумали Песочницу. Тут нужно обяъснять, иначе мы сами, перед собой, будем балаболами. Как-то так.
Ко всему вышеперчисленному уважаемымы товарищами хочу еще добавить, что
Меня интересует вопрос - как можно сделать, чтобы пьезодинамик и ргб работали вместе? И с помощью какого цикла можно сделать, чтобы при хлопке они начинали работать?
НИКАК.
Для определения, того, что хлопнули в ладоши нужен микрофон.
Пьезодинамик можно использовать как микрофон, но нужна совсем другая схема подключения. Проще взять готовый модуль с микрофоном.
Черрик, чтобы написать вменяемую программу, сначала нужно составить алгортим - описать последовательность действий, что и когда должен делать микроконтроллер (МК). Для начала лучше по-русски. А когда алгоритм будет готов - перевести его с русского на Си.
Как же составлять алгоритм?
Открою Вм страшную тайну: бролее чем в 90% случаев МК должен действовать в точности так же, как действовал бы человек на его месте.
Вот смотрите, что Вы пишете:
- включить ноту,
- дождаться, когда она закончится,
- включить ноту,
- дождаться, когда она закончится,
- включить ноту,
- дождаться, когда она закончится,
- включить ноту,
- дождаться, когда она закончится,
По-моему, ТС забил, мы тут одни упражняесмя :)
По-моему, ТС забил, мы тут одни упражняесмя :)
Ну, может ТС и забИл, но для других новичков Очень популярно изложен принцып построения программы (на мой взгляд)
ЕвгенийП, спасибо огромное. Но я ещё не знаю, что такое массив)))
wdrakula, опыта у меня вообще нет. Я занимаюсь Аrduino полгода.
Вот и возвращайся в №8 и пытайся понять, что там написано.
Первое задание - написать программу ТОЛЬКО для мелодии используя цикл и массив для мелодии.
О! Пока я писал ты уже все сделал. ОК
Теперь переписывай без делеев, используй миллис(), чтобы узнать текущее время и проверяй - пора ли что-то сделать в той или иной процедуре. Чтобы запоминать значение от вызова к вызову используй static переменные.
Для понимания подхода прочти "блинк без делей" вроде тут, на сайте даже был. Да, вот он.
Но я ещё не знаю, что такое массив)))
Я занимаюсь Аrduino полгода.
Т.е. за полгода, Вы не удосожились прочитать даже самую завалящую книжку типа "программирование для чаников"? Ну, даже не знаю что и сказать :(
А кто тогда написал сообщение №30? Папа-мама-брат?
Мне жаль Вас.
Теперь переписывай без делеев, используй миллис(), чтобы узнать текущее время и проверяй - пора ли что-то сделать в той или иной процедуре. Чтобы запоминать значение от вызова к вызову используй static переменные.
Для понимания подхода прочти "блинк без делей" вроде тут, на сайте даже был. Да, вот он.
А мне вот этот вариант больше нравиться, чем местный.
wdrakula, в сообщении №21 ЕвгенийП указал мне мои ошибки. Я их исправила и выложила новую версию скетча.
wdrakula, в сообщении №21 ЕвгенийП указал мне мои ошибки. Я их исправила и выложила новую версию скетча.
Осталось убить форы и делеи в т.ч. и в tone().))))
wdrakula, в сообщении №21 ЕвгенийП указал мне мои ошибки. Я их исправила и выложила новую версию скетча.
Ищите пример "blink без delay". В нём мигают светодиодом через определенный интервал, а вам нужно вместо мигания просто запускать следующую ноту. Таким образом - МК сможет еще и фонарики крутить в свободное время.
Чего их искать, выше ссылки и на ардуино.ру и на Лешака.
А... простите. Последствия поздравительных мероприятий.
Я запускаю программу, датчик звука должен считать хлопок, после чего сначала запускается процедура с пьезодинамиком, мелодия заканчивается, и начинает гореть rgb. Я же хочу, чтобы пьезодинамик и rgb работали одновременно до тех пор, когда датчик звука не считает второй хлопок, и они выключатся.
вот в том , что я выделил курсивом, не заметно никаких противоречий?