Эксперимент Маячок



бет16/45
Дата13.02.2023
өлшемі1,82 Mb.
#67503
түріЗакон
1   ...   12   13   14   15   16   17   18   19   ...   45
Байланысты:
Amperka eksperiment

Пояснения к коду

  • С помощью выражения for мы организуем цикл со счетчиком. В данном случае для настройки портов на выход. Чтобы сделать такой цикл, нужно:

    • Инициализировать переменную-счетчик, присвоив ей первоначальное значение. В нашем случае:int pin = FIRST_LED_PIN

    • Указать условие, до достижения которого будет повторяться цикл. В нашем случае: pin <= LAST_LED_PIN

    • Определить правило, по которому будет изменяться счетчик. В нашем случае ++pin (см. ниже об операторе ++).

  • Например, можно сделать цикл for (int i = 10; i > 0; i = i - 1). В этом случае:

    • Переменной i присваивается значение 10

    • Это значение удовлетворяет условию i > 0

    • Поэтому блок кода, помещенный в цикл, выполняется первый раз

    • Значение i уменьшается на единицу, согласно заданному правилу, и принимает значение 9

    • Блок кода выполняется второй раз.

    • Всё повторяется снова и снова вплоть до значения i равного 0

    • Когда i станет равна 0, условие i > 0 не выполнится, и выполнение цикла закончится

    • Контроллер перейдет к коду, следующему за циклом for

  • Помещайте код, который нужно зациклить, между парой фигурных скобок {}, если в нем больше одной инструкции.

  • Переменная-счетчик, объявляемая в операторе for, может использоваться внутри цикла. Например, в данном эксперименте pin последовательно принимает значения от 2 до 11 и, будучи переданной вpinMode, позволяет настроить 10 портов одной строкой, помещенной в цикл.

  • Переменные-счетчики видны только внутри цикла. Т.е. если обратиться к pin до или после цикла, компилятор выдаст ошибку о необъявленной переменной.

  • Конструкция i = i - 1 в пояснении выше не является уравнением! Мы используем оператор присваивания = для того, чтобы в переменную i поместить значение, равное текущему значению i, уменьшенному на 1.

  • Выражение ++pin — это т.н. оператор инкремента, примененный к переменной pin. Эта инструкция даст тот же результат, что pin = pin + 1

  • Аналогично инкременту работает оператор декремента --, уменьшающий значение на единицу. Подробнее об этом в статье про арифметические операции.

  • Тип данных unsigned int используют для хранения целых чисел без знака, т.е. тольконеотрицательных. За счет лишнего бита, который теперь не используется для хранения знака, мы можем хранить в переменной такого типа значения до 65 535.

  • Функция millis возвращает количество миллисекунд, прошедших с момента включения или перезагрузки микроконтроллера. Здесь мы используем ее для отсчета времени между переключениями светодиодов.

  • С помощью выражения (ms / 120) % 10 мы определяем, который из 10 светодиодов должен гореть сейчас. Перефразируя, мы определяем какой отрезок длиной в 120 мс идет сейчас и каков его номер внутри текущего десятка. Мы добавляем порядковый номер отрезка к номеру того порта, который в текущем наборе выступает первым.

  • То, что мы гасим светодиод с помощью digitalWrite(pin, LOW) всего через 10 мс после включения не заметно глазу, т.к. очень скоро будет вновь вычислено, какой из светодиодов включать, и он будет включен — только что погашенный или следующий.



Достарыңызбен бөлісу:
1   ...   12   13   14   15   16   17   18   19   ...   45




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет