Подключаем кнопку. Урок 2.2. Ардуино

подключаем кнопку к ардуино
Подключаем кнопку к ардуино
Подключаем кнопку к ардуино

Привет. Сегодня переходим к важной части изучения ардуино. Рассмотрим, как можно использовать пины на плате для ввода данных. Раньше мы использовали их только на вывод. Но все пины в ардуино можно использовать в двух направлениях, это одна из классных возможностей ардуино.

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

Массив и ардуино. Урок 2.1. Ардуино

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

Чтобы выполнить этот урок нам понадобятся.

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • Резистор номиналом 220 Ом
  • Резистор номиналом 10 кОм
  • Светодиод 5 мм
  • Кнопка
  • Кабель USB

pinMode()

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

INPUT — устанавливает режим чтения.

OUTPUT — устанавливает на вывод.

pinMode (2, INPUT);

В ардуино все контакты настроены на режим чтения по умолчанию. Так что, если вы не указываете режим OUTPUT, то эти команды можно пропустить. Однако, на этапе обучения мы будем их использовать всегда.

digitalRead()

Функция digitalRead() считывает значение с заданного контакта. В результате ей будет присвоено значение HIGH или LOW, соответственно логические 1 и 0.

Если контакт не подключен, то значение функции может быть любое. Об этом важно помнить. Так как мы хотим подключить к этому контакту кнопку и считывать нажатия на нее. Но без дополнительных резисторов контакт останется не подключенным, когда кнопка не нажата.

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

Стягивающий резистор подключается параллельно с кнопкой и соединяет пин настроенный на чтение с землей. Таким образом, когда кнопка не нажата, на входе пина установлен LOW уровень напряжения. А когда кнопка нажата, уровень меняется на HIGH.

Подключим кнопку и светодиод соответственно схеме.

Принципиальная схема подключения кнопки и светодиода
Принципиальная схема подключения кнопки и светодиода

Соединим 2 цифровой контакт на плате ардуино с синей шиной на макетной плате через резистор 20 кОм. Также соединим один из контактов кнопки с этой же группой контактов на макетной плате.

Второй контакт кнопки соединим с красной шиной макетной платы.

Анод светодиода через резистор 220 Ом соединяем с 9 пином на ардуино, а Катод с землей.

И соединим синюю шину макетной платы с контактом gnd на плате ардуино, а красную с контактом 5в.

Программа

В среде разработки arduino ide уже есть подходящая программа для нашего урока, воспользуемся ей. В меню файл, examples, digital выберем программу button.

По умолчанию, на вывод светодиода в ней используется 13 пин и подключенная лампочка на плате. Но мы изменим константу ledpin на 9.

const int ledPin =  9;

В цикле loop переменная buttonState считывает нажатие на кнопку.

buttonState = digitalRead(buttonPin);

И в блоке if else мы проверяем состояние переменной buttonState и зажигаем светодиод, если напряжение на 2 пине = 5 вольтам.

  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
Светодиод реагирует на нажатие кнопки
Светодиод реагирует на нажатие кнопки

Полный текст программы

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  9;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

Заключение

В этот раз мы рассмотрели новую программу из библиотеки примеров кода в arduino ide. Собрали схему управления светодиодом. Подключили кнопку к ардуино и научились считывать нажатия на эту кнопку в программе. Это уже похоже на настоящее устройство. В следующий раз рассмотрим использование кнопок чуть подробнее и улучшим программу для управления светодиодом.

Добавить комментарий

Ваш адрес email не будет опубликован.