Банк проектов 8-11 Банк проектов 8-11 кл | Page 70
для
считывания
состояния
с
кнопки
(нажата/не
нажата)
используется
команда
digitalRead(buttonPin). Для того чтобы подробнее разобраться с программированием контроллера
при работе с кнопкой, рекомендуется обратиться к стандартному примеру (рис. 2).
Рисунок 2. Пример программирования с тактовой кнопкой
Настройку длительности зелёного сигнала светофора рекомендуется выполнять в цикле
while, предварительно записав в переменную, которая будет находиться в условии цикла, истинное
значение. Это истинное значение в свою очередь должно смениться на ложь после нажатия третьей
кнопки. Тогда цикл прекратит свою работу. Для того чтобы изменить значение переменной с истины
на ложь, нужно нажать третью кнопку, и для этого в программе рекомендуется использовать
условный оператор if.
Для изменения значения длительности задержки зелёного сигнала также следует
воспользоваться условным оператором if, в скобках которого должна стоять проверка о том, нажата
кнопка (1–2) или нет. Внутри тела цикла следует прибавлять к переменной, в которой хранится
задержка, значение с шагом в 1000 (1 секунда), например, times = times + 1000. То есть каждый раз
при однократном нажатии кнопки к переменной times прибавляется 1000, и переменная
соответственно увеличивается. Аналогично задаётся действие для второй кнопки, только уже
используется действие разность для уменьшения задержки.
Чтобы не выйти за пределы 1000–20000 (20 секунд), в условном операторе if, где
производится проверка нажатия кнопки, дополнительно проверяется, не вышло ли значение
переменной times за пределы, используя логический оператор &&. Таким образом, даже при
нажатой кнопке изменить значение times уже не получится.
Чтобы избежать последствий дребезга контакта при нажатии кнопки, сразу после
считывания её состояния рекомендуется поставить задержку 100–150 мс. Дребезг может привести
к нескольким переключениям за одно нажатие.
70