суббота, 13 февраля 2016 г.

Зажигаем светодиоды в случайном порядке, или знакомимся с оператором случайных чисел...

Всем привет! Продолжаем изучать наш ардуино конструктор и сегодня продолжим тему светодиодов. Кто-то скажет что было уже - сколько можно? Ответим на этот раз будет гораздо интереснее. До сих пор мы работали с одним активным светодиодом, а теперь давайте попробуем включить их побольше, скажем этак 7-8 светодиодов. Но при этом заставим их мигать совершенно случайно. Эффект при этом должен получиться очень интересным. 


С чего будем начинать? Правильно с скетча. Хотя лучше пожалуй рассказать сейчас поподробнее о новом операторе случайных чисел: random (x,y). Все очень просто: этот оператор просто будет генерировать случайные числа в диапазоне от х до y. Именно это свойство мы и используем. Далее приведем и скетч:

void setup() 
{
//  инициализация пинов как выходы
for (int i=2; i<=8; i=i+1) pinMode (i, OUTPUT);
}
void loop ()
{
digitalWrite (random (2,8), HIGH);
delay (random (70, 550));
// random (70,250) генерирует случайные числа от 70 до 250
digitalWrite (random (2,8), LOW); 
delay (random (90, 350));
}

обратим внимание на цикл, благодаря которому происходит автоматическая инициализация пинов со второго по восьмой (на самом деле вы можете изменить число пинов уменьшить или увеличить) как выходов. То есть эти пины будут работать как выходы с которых поочередно и будут зажигаться светодиоды. 



Остальное все понятно: в процессе исполнения бесконечного цикла будут в случайном порядке зажигаться светодиоды (digitalWrite (random (2,8), HIGH);) и так же они будт гореть случайное время, так как время задержки тоже определяется случайно (delay (random (70, 550));). Процедура гашения происходит точно так же.

Как говориться теорию мы изучили. Пора перейти к практике. Кстати несмотря на кажущуюся сложность схемы, собрать ее на макетной плате (бредборде) очень просто. На все про все уйдет не более пяти минут. И вот наконец все подключено, проверено и можно будет запускать. Запуск состоит из перезаписи скетча в микроконтроллер. Просто подключаем шнур от плате к компьютеру, вызываем программу и записываем скетч...

И вот как говориться все получилось. Конечно же лучше все это увидеть не на фотографиях а на видео. кроме того видео получилось не просто с демонстрации собранной мигалки, но так же немного затрагивает (главное дает возможность задуматься) некоторые вопросы ардуино (в плане сборки самодельного конструктора, и так же заострил я одну проблему). Приятного просмотра! Вот теперь все на сегодня! Удачи в ваших самоделках!



3 комментария:

  1. Алексей, добрый день!
    Мне кажется нельзя ставить один резистор на землю, нужно ставить по резистору на каждый светодиод, т.к. если зажигается 2 и более светодиода одновременно, через них идет не такой же ток, как через один светодиод!

    ОтветитьУдалить
  2. вкл рандомный диод и ЕГО же выключает что бы использовать 1 резюк на -
    long randNumber;
    void setup() {
    randomSeed(analogRead(0));
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    }
    void loop() {

    randNumber = random(2, 7);
    digitalWrite(randNumber, HIGH);
    delay(500); // Ждем
    digitalWrite(randNumber, LOW);
    }

    ОтветитьУдалить
  3. А как использовать пины, к которым подключены светодиоды не по порядку.
    К примеру пины № 2, 3, 5, 7, 11 ?

    ОтветитьУдалить