Прочитал статью Д.Кушнера "Как создавали и продвигали Ардуино" в электронном журнале РадиоЛоцман в №11 за 2011 год (www.rlocman.ru) и сильно заинтересовался. Вот где непаханное поле для любителей и профи, для начинающих и маститых... Сразу же сформулировалась первая проблема: можно ли Пример 0.1 Basics-Blink переделать для циклического последовательного включения нескольких (до 6 шт.) светодиодов через равные (или разные) промежутки времени на одинаковую (или разную) длительность свечения без использования дополнительного регистра сдвига или двоичного счётчика с дешифратором? Т.е., как я понимаю, каждый светодиод с токоограничивающим резистором должен быть подключён к отдельному pin на плате Arduino. Если доработка Blink невозможна, то каким образом программно можно решить эту проблему? Подскажите, пожалуйста!!! Возможно кто-то с этим вопросом уже сталкивался.
Не до конца понятен вопрос. Вы хотите сделать визуальный эффект «змейки» из 6 светодиодов? Если можете позволить себе занять 6 выходов Arduino, то не вопрос. Если светодиодов больше, чем свободных пинов, то отдельный сдвиговый регистр — простое, логичное решение. Поскольку одновременно горит как максимум один светодиод, резистор понадобится тоже всего один: между объединёнными катодами светодиодов и землёй.
**** Большое спасибо, что Вы так быстро откликнулись на мою проблему. Уточняю постановку вопроса. Если более конкретно, то необходимо на выводе № 13 получить импульс длительностью 1 секунда, через 10 секунд такой же импульс на выводе №12, ещё через 10 секунд - такой же импульс на выводе № 11, через следующие 10 секунд - на выводе № 10, (это получился один цикл), далее повторение, т. е. такой же импульс длительностью 1 секунда формируется на выводе № 13, затем на № 12, № 11, № 10, № 13 ... и так по кругу до выключения питания. Главный вопрос - можно ли для этого переделать пример Blink? Если нельзя, то как программно можно решить эту задачу? Подскажите
Вам стоит немного разобраться с программированием на C++. То, о чём вы говорите, действительно элементарно: Код (Text): void loop() { for (int pin = 13; pin >= 10; --pin) { digitalWrite(pin, HIGH); delay(1000); digitalWrite(pin, LOW); delay(10000); } }
**** Это великолепно! Собрал на макетной плате, загрузил Ваш скетч. Всё работает как часы!!! Спасибо большое. Кстати, посоветуйте, с чего начать изучение С++. Может есть какая-то книга, как сейчас говорят, для "чайников"?
Я уже настолько давно программирую, что уже не вспомню по каким материалам учился, но был самоучкой. Что сейчас есть хитовое-простое не знаю: может другие подскажут?! Основы можно понять, просмотрев видеоуроки на нашей вики.