Blink управляет несколькими светодиодами?...

Тема в разделе "Arduino & Shields", создана пользователем sbuded, 25 июн 2012.

  1. sbuded

    sbuded Нуб

    Прочитал статью Д.Кушнера "Как создавали и продвигали Ардуино" в электронном журнале РадиоЛоцман в №11 за 2011 год (www.rlocman.ru) и сильно заинтересовался. Вот где непаханное поле для любителей и профи, для начинающих и маститых...
    Сразу же сформулировалась первая проблема:
    можно ли Пример 0.1 Basics-Blink переделать для циклического последовательного включения нескольких (до 6 шт.) светодиодов через равные (или разные) промежутки времени на одинаковую (или разную) длительность свечения без использования дополнительного регистра сдвига или двоичного счётчика с дешифратором?
    Т.е., как я понимаю, каждый светодиод с токоограничивающим резистором должен быть подключён к отдельному pin на плате Arduino.
    Если доработка Blink невозможна, то каким образом программно можно решить эту проблему?
    Подскажите, пожалуйста!!!
    Возможно кто-то с этим вопросом уже сталкивался.
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Не до конца понятен вопрос. Вы хотите сделать визуальный эффект «змейки» из 6 светодиодов?

    Если можете позволить себе занять 6 выходов Arduino, то не вопрос. Если светодиодов больше, чем свободных пинов, то отдельный сдвиговый регистр — простое, логичное решение.

    Поскольку одновременно горит как максимум один светодиод, резистор понадобится тоже всего один: между объединёнными катодами светодиодов и землёй.
     
  3. sbuded

    sbuded Нуб

    ****
    Большое спасибо, что Вы так быстро откликнулись на мою проблему.
    Уточняю постановку вопроса. Если более конкретно, то необходимо на выводе № 13 получить импульс длительностью 1 секунда, через 10 секунд такой же импульс на выводе №12, ещё через 10 секунд - такой же импульс на выводе № 11, через следующие 10 секунд - на выводе № 10,
    (это получился один цикл), далее повторение, т. е. такой же импульс длительностью 1 секунда формируется на выводе № 13, затем на № 12, № 11, № 10, № 13 ... и так по кругу до выключения питания.
    Главный вопрос - можно ли для этого переделать пример Blink?
    Если нельзя, то как программно можно решить эту задачу?
    Подскажите
     
  4. nailxx

    nailxx Официальный Нерд Администратор

    Вам стоит немного разобраться с программированием на C++. То, о чём вы говорите, действительно элементарно:

    Код (Text):

     
    void loop() {
        for (int pin = 13; pin >= 10; --pin) {
            digitalWrite(pin, HIGH);
            delay(1000);
            digitalWrite(pin, LOW);
            delay(10000);
        }
    }
     
     
  5. sbuded

    sbuded Нуб

    ****
    Это великолепно!
    Собрал на макетной плате,
    загрузил Ваш скетч.
    Всё работает как часы!!!
    Спасибо большое.

    Кстати, посоветуйте, с чего
    начать изучение С++.
    Может есть какая-то книга,
    как сейчас говорят,
    для "чайников"?
     
  6. nailxx

    nailxx Официальный Нерд Администратор

    Я уже настолько давно программирую, что уже не вспомню по каким материалам учился, но был самоучкой. Что сейчас есть хитовое-простое не знаю: может другие подскажут?!

    Основы можно понять, просмотрев видеоуроки на нашей вики.
     
  7. sbuded

    sbuded Нуб

    ****
    Спасибо!