Электроника для начинающих (Платт) - страница 299

Циклы for позволяют вам указать любые условия. Они исключительно гибкие. Почитайте об этом в разделе справки по языку программирования. Наш цикл for просто считает от 1 до 4, но он мог бы также считать от 100 до 400 или в любом другом диапазоне, каком пожелаете, ограниченном типом целого числа, заданного В цикле (int ИЛИ long).

На каждой итерации микроконтроллеру указывается, что делать. Выполняемая процедура приведена в фигурных скобках после определения цикла (тело цикла). Как и любая другая процедура, она может содержать несколько операций, каждая из которых заканчивается точкой с запятой. В данной процедуре только одна операция: записать состояние LOW для контакта, указанного в переменной outpin. Поскольку переменная outpin изменяется от 1 до 4, цикл for создает низкий выходной сигнал на выводах с 1 по 4.

Ага, вот теперь понятно, для чего это все. Цикл выключает все светодиоды.

А нельзя ли сделать это проще? Безусловно, можно было бы написать друг за другом четыре команды:

digitalWrite (1, LOW);

digitalWrite (2, LOW);

digitalWrite (3, LOW);

digitalWrite (4, LOW);

Но мне хотелось познакомить вас с понятием цикла for, поскольку оно основное и важное. А если бы вам понадобилось выключить девять светодиодов? Или если бы вы захотели, чтобы микроконтроллер мигнул светодиодом 100 раз? Цикл for зачастую предоставляет лучший способ повысить эффективность процедуры, которая содержит повторяющиеся операции.

Функция генератора случайных чисел

После того как цикл for погасит светодиоды, мы переходим к функции random (), выбираю- щей число, которое заключено в пределах, указанных в круглых скобках. Нам необходимо значение от 1 до 6, но почему же этот диапазон указан от 1 до 7? Потому что на самом деле эта функция выбирает величины с дробной частью, от 1,00000001 до 6,99999999, а затем отбрасывает ту часть числа, которая следует за десятичной запятой. Поэтому 7 — это предел, который никогда не будет достигнут, и значение на выходе окажется от 1 до 6.

Каким бы ни было случайное число, оно сохраняется в другой специально созданной переменной с именем spots, означающей число точек на грани кубика.

Оператор сравнения if

Теперь пришло время узнать, какое сейчас значение у переменной spots, и включить соответствующие светодиоды.

Первый оператор if достаточно прост. Если у нас шесть точек, то это единственный случай, когда мы записываем высокое состояние через выход 1, который подключен к светодиодам справа и слева.

Почему мы не включаем также и все диагональные светодиоды? Суть в том, что они будут включены при других значениях кубика, и гораздо эффективнее свести к минимуму количество проверок if. Скоро вы поймете, как это работает.