For и светодиоды
- Войдите на сайт для отправки комментариев
Чт, 04/06/2015 - 11:58
Уважаемые форумчане!
А помогите ,пожалуйста, реализовать такой эффект при помощи цикла for(). N-ное количество светодиов в рядок. Зажигаются они сначала навстречу друг другу до середины( N / 2), а потом ,расходясь друг от друга , гаснут.
Вот в одном направлении гонять огонек - все понятно)) А тут че-то ступор)
Ага, понятно. Все достаточно просто) Спасибо. Работает ,как нужно.
А такой рисунок можно сделать? зажигаем светодиоды (все равно как-все сразу или по одному) , а потом рандомно все зажженные светодиоды тушим по одному.
а потом рандомно все зажженные светодиоды тушим по одному.
http://arduino.ru/Reference/Random
Вот про саму функцию random() читал и пробовал помигать светодиодом в режиме "рандомно включил - выключил". Все понятно. А как именно выключить уже горящих N-ное количество светодиодов. Не перебирать контакты до бесконечности пока последний горящий светодиод не совпадет с рандом-числом, а сразу ,допустим, выключить 5 горящих светодиодов за пять проходов в произвольном порядке. Вот)
Спасибо, vov4ik .
Я по этому пути в общем и пошел. Но не додумался в последнем цикле сделать так: i <= 100.
Получается в итоге ,что они то гаснут, но последние тушатся с уже другим интервалом. Ну и пауза чуть появляется в конце ввиду отличия количества светодиодов и числа "100" в цикле. Ну в ощем то работает. Может еще что поколдую))
100 я взял на обум, можно уменьшить при условии что будут все гаснуть, а делей увеличить в начале delay((300-i)); и разница будет незаметной.
Да так значительно приятнее) Спасибо. Ща попробую к этому привинтить еще и плавное затухание, но подозреваю , что станут видны "холостые выстрелы по светодиодам" в виде зажигания уже потушенных)) Да и "недострелянные" ,кстати, тоже проявятся,видимо в конце)))
РГБ светодиод или РГБ светодиодную ленту на мосфетах (можно на 2003), класный эффект возникает.
Ух ты) Спасибо! Опробую.
У меня вот такой вопрос еще. Как сделать ,чтобы два разных цикла for() ,не влияя друг на друга , параллельно могли выполнятся, получая на это команды в данном случае по I2C. Уже все вариации "без delay делаем то или то" перебрал. Помогите, пожалуйста.
Фор не выпустит из цыкла пока сравнение истина.
for (int i=10; i >= 2; i++) при данном условии {digitalWrite(i, HIGH); delay(500); } выполнется 32757 раз и врятли у ардуино есть столько портов на который можно подать высокий уровень.
Может не правильно выразился. Имел в виду ,что два цикла с разными програмами зажигания как бы становятся независимыми, т.е. выполнялись бы параллельно. Конечно ,если есть на то команда.
переделать всё без фора
Да вот пока не понял как только) vov4ik, если есть пример какой или ссылочка , бросьте, пожалуйста.
А можно ли сделать проверку в теле цикла, не наступило ли событие ,вызывающее новый цикл ? Хмм. Как-бы цикл в цикле получается.
Можете в цикле, по наступлении события, присвоить крайнее значение переменной цикла и покинуть его.
Можно хоть в каждый фор запихнуть ваш айтуси
Дайте ,пожалуйста ,пример как сделать цикл без delay.
dimOnOff, а что вы так за этот for уцепились? Оператор прямо скажем не самый удобный, что б его промеживать паузами. Могу дать пример как делать без for -недавно совсем обсуждали бегущие огоньки
Спасибо, dimax. Меня уже и самогого накрывает))) Вот и хочу от этого for избавится. Я по Вашему пути и попытался пойти. Тему с бегущими огоньками не видел до этого. Спасибо за наводку. Сейчас поразбираюсь. Я только вот что научился делать : с каждой новой пришедшей командой по I2C зажигается новый светодиод. Мучаю , кстати, драйвер светодиодов.