Подключение кнопки к Arduino

В предыдущих проектах работа выполнялась сама собой, и ничто не могло нарушить порядок действий, а человек не мог повлиять на их работу. Настало время это исправить, и помогут нам в этом кнопки.

У кнопки традиционно могут быть состояния: нажата и не нажата (отжата). Соответственно, нажатие или отжатие кнопки будет влиять на действие, выполняемое программой.

Выполним несложное задание: пока нажата кнопка горит светодиод.

Для выполнения задания понадобятся:

  • 1 кнопка;
  • 1 светодиод;
  • 1 резистор 220ом;
  • 1 резистор 10кОм

Подключите кнопку как показано на рисунке.

 

button

Почему подключение именно такое? Начнем с того, что у кнопки не 4, а 2 контакта (верхний и нижний дублируют друг друга). Если один подключить к 5v, а другой к порту, то на порт будут подаваться хаотичные сигналы если кнопка не нажата (т.е. как будто кнопку все время кто-то нажимает и отпускает). Чтобы этого избежать поставим стягивающий резистор на 10кОм (либо другого достаточного сопротивления). Таким образом, мы с одной стороны кнопки подаетм питание (5v), а другая подключается через резистор к земле и параллельно подключается к пину Arduino.

Добавим на схему светодиод.

button_led

В этой задаче нам придется считывать значение с порта 2 и в зависимости от нажатия на кнопку зажигать или гасить светодиод.

Как осуществить считывание? Для начала нужно задать порт как вход. Для этого используем команду

pinMode(2, INPUT);

которую мы обычно прописываем в setup.

Собственно считывание осуществляется командой

digitalRead(2);

Digital, как вы помните — цифровой (так как у кнопки всего 2 состояния), Read — читать. Этой командой мы узнаем, нажата ли кнопка, подключенная к данному порту.

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

block

Общая структура условного оператора выглядит следующим образом:

Если (условие) то Команда1

иначе Команда2

 

При этом вторую часть можно опустить, если в случае невыполнения условия ничего делать не требуется.

На языке программирования это выглядит так:

if (условие){

// Команды 1

}

else {

// Команды 2

}

Условием является некоторое логическое выражение.

Напишем условный оператор для нашей задачи.

Обратите внимание на двойной знак «равно» в условии. Таким образом мы проверяем, равно ли считанное значение HIGH. Каждый раз, когда нужно проверить что-то на равенство используется двойное «равно», т.к. одиночное «равно» — это знак присвоения.

Полный код программы:

Вы познакомились с самым простым компонентом, влияющим на работу программы. Эти знания вам пригодятся дальше, когда будем рассматривать различные датчики.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *