Digital Read Arduino

Digital Read Arduino

Этот пример показывает, как смотреть состояние переключателя (или кнопки) с установлением последовательной связи между платой Arduino и компьютером через USB.

Нам понадобится

  • Плата Arduino.
  • Переключатель, кнопка или тумблер.
  • Резистор 10кОм.
  • Провода.
  • Макетная плата.


Схема подключения

 

Подключите три провода к плате.
Первые два (красный и черный) подключаются к двум длинным вертикальным рядам на боковой стороне макетной платы для доступа к 5-вольтовому питанию и земле.
Третий провод идет от цифрового пина 2 к одному из выводов кнопки.
Этот же вывод кнопки подключается через резистор (в данном случае 10к Ом) к земле.
Другой вывод кнопки подключается к 5-вольтовому источнику питания. В нашем случае к выводу +5В на плате Ардуино.

Переключатели или кнопки соединяют две точки в цепи при нажатии.
Когда кнопка не нажата, между двумя выводами кнопки нет соединения, и пин подключен к земле (через резистор) и считывается как LOW (0).
Когда кнопка нажата, она соединяет свои два вывода, подключая пин к 5 вольтам, и пин считывается как HIGH (1).

Цифровой пин в коде установлен в состояние INPUT? т.е. ВХОД. Если  он ник чему не подключен то его показания могут меняться хаотично.
Это происходит потому, что вход "плавает" - то есть у него нет надежного подключения к напряжению или земле, и он случайным образом будет возвращать HIGH или LOW.
Вот почему в цепи нужен резистор "pull-down" (подтягивающий к земле). Вместо реального подтягивающего резистора, можно установить виртуальный, просто прописав его в коде. Об этом читайте в другой статье.

Код

/*
  DigitalReadSerial

  Считывает цифровой вход на пине 2 и выводит результат в монитор последовательного порта.
*/

// К пину 2 цифрового входа подключена кнопка. Дадим имя переменной - pushButton:
int pushButton = 2;

// Процедура настройки выполняется один раз при нажатии кнопки сброса:
void setup() {
  // Инициализация последовательной связи с ограничением в 9600 бод в секунду:
  Serial.begin(9600);
  // Сделать пин входом:
  pinMode(pushButton, INPUT);
}

// Процедура цикла выполняется снова и снова бесконечное количество раз:
void loop() {
  // Считать цифровой вход:
  int buttonState = digitalRead(pushButton);
  // Вывести состояние кнопки:
  Serial.println(buttonState);
  delay(1);  // Задержка между считываниями для стабильности
}

Описание программы

В программе ниже первое, что вы делаете в функции setup, - начать последовательную связь с передачей данных на вашем устройстве и компьютере с помощью строки:

Serial.begin(9600);

Затем инициализируйте цифровой пин 2, который будет считывать сигнал с вашей кнопки, как входной:

pinMode(2, INPUT);

Теперь, когда настройка завершена, переходите к основному блоку вашего кода.
Когда ваша кнопка нажата, 5 вольт проходят через вашу цепь, а когда она не нажата, входной пин подключается к земле через резистор 10 кОм. Это цифровой вход, и это означает, что кнопка может быть либо в состоянии "включено" (для Arduino это "1", или HIGH), либо в состоянии "выключено" (для Arduino это "0", или LOW), без промежуточных состояний.

Первое, что вам нужно сделать в основном цикле вашей программы - установить переменную для хранения информации, поступающей с вашей кнопки.
Поскольку информация с кнопки будет либо "1", или "0", вы можете использовать переменную типа int.
Назовите эту переменную sensorValue и установите ее равной значению с цифрового пина 2.

Вы можете сделать все это одной строкой кода:

int sensorValue = digitalRead(2);

Как только плата считает входной сигнал, она выводит эту информацию в вашем последовательном мониторе в виде десятичного значения.
Вы можете сделать это с помощью команды Serial.println() в последней строке кода:

Serial.println(sensorValue);

Теперь, когда вы откроете свой последовательный монитор в Arduino IDE, вы увидите значение "0", если кнопка не нажата, или "1", если кнопка нажата.

5 примеров использования подобного кода:

Дверной звонок: Можно подключить кнопку к Arduino, чтобы создать дверной звонок. Когда кто-то нажимает на кнопку, Arduino считывает сигнал и может активировать звуковой сигнал или отправить уведомление на смартфон.

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

Игровой контроллер: Создайте кнопочный контроллер для компьютерных игр или управления роботом. Каждая кнопка может выполнять определенное действие в игре или управлять движением робота.

Система безопасности: Установите кнопку на окно или дверь и подключите ее к Arduino. Если окно или дверь откроется, Arduino может отправить уведомление или включить сирену.

Интерактивные проекты для обучения: Используйте кнопку в образовательных целях.
Например, можно создать учебный проект, в котором учащиеся должны нажать на кнопку, чтобы ответить на вопрос, и Arduino будет записывать правильные и неправильные ответы.

Такие проекты могут быть отличным способом изучить основы программирования и работы с электроникой.

Дополнительные материалы по теме
Подключение кнопки к ардуино
TTP223 сенсорная кнопка
Резистивные кнопки
Управление одной кнопкой на ESP
Первая программа на Arduino. Aрдуино для начинающих
Digital Read Arduino
Количество нажатий на кнопку
Управление светодиодами кнопкой на Ардуино
Кнопка, дребезг контактов при нажатии
input pullup arduino кнопка
Analog Read Arduino
Ардуино аналоговый вход Чтение аналогового напряжения