input pullup arduino кнопка

input pullup arduino кнопка

Данный код демонстрирует использование режима INPUT_PULLUP с функцией pinMode() и мониторинг состояния переключателя с установлением  связи по серийному порту между Arduino и компьютером через USB соединение.

Кроме того, при высоком уровне входного сигнала встроенный светодиод, подключенный к пину 13, включается, а при низком уровне светодиод выключается.

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

  • Плата Arduino.
  • Кнопка или переключатель.
  • Макетная плата.
  • Провода для подключения.


Подключение:

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

Схема:

Код:

В программе ниже первое, что вы делаете в функции setup(), - начать последовательную связь со скоростью 9600 бит в секунду между Arduino и компьютером с помощью строки:

Serial.begin(9600);

Затем инициализируйте цифровой пин 2 как вход, с включенным внутренним резистором подтяжки:

pinMode(2, INPUT_PULLUP);

Следующая строка делает пин 13, с встроенным светодиодом, выходом:

pinMode(13, OUTPUT);

Теперь, когда настройка завершена, перейдите в основной цикл вашего кода.
Когда ваша кнопка не нажата, внутренний резистор подтяжки соединен с 5 вольтами.
Это заставляет Arduino возвращать "1" или HIGH.
Когда кнопка нажата, пин Arduino подтягивается к земле, из-за чего Arduino возвращает "0" или LOW.

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

int sensorValue = digitalRead(2);

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

Serial.println(sensorValue, DEC);

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

Светодиод на пине 13 будет гореть, когда переключатель находится в состоянии HIGH, и выключаться при состоянии LOW.

/*
  Pull-up

  Этот пример демонстрирует использование pinMode(INPUT_PULLUP). Он считывает значения с цифрового
  входа, с пина 2, и выводит результаты в монитор последовательного порта.

  Схема подключения:
  - кнопка подключена от пина 2 к земле
  - встроенный светодиод на пине 13

  В отличие от pinMode(INPUT), здесь не требуется подтягивающий резистор. Внутренний
  резистор 20КОм подключен к 5 В. Эта конфигурация заставляет вход считывать
  HIGH, когда кнопка не нажата, и LOW, когда нажата.

*/

void setup() {
  // Начало последовательного соединения
  Serial.begin(9600);
  // Настройка пина 2 как входа и включение внутреннего подтягивающего резистора
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
}

void loop() {
  // Считать значение кнопки в переменную
  int sensorVal = digitalRead(2);
  // Вывести значение кнопки
  Serial.println(sensorVal);

  // Учтите, что подтягивающий резистор означает, что логика кнопки инвертирована. Она
  // становится HIGH, когда открыта, и LOW, когда нажата. Включите пин 13, когда
  // кнопка нажата, и выключите, когда она не нажата:
  if (sensorVal == HIGH) {
    digitalWrite(13, LOW);
  } else {
    digitalWrite(13, HIGH);
  }
}

5 примеров использования INPUT_PULLUP с pinMode():

Датчики кнопок: Используйте INPUT_PULLUP, чтобы считывать состояние кнопок или переключателей. Когда кнопка не нажата, вход будет HIGH, нажата - LOW.

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

Клавиатура: При создании собственной клавиатуры с использованием кнопок, вы можете использовать INPUT_PULLUP, чтобы знать, какие клавиши нажаты.

Сигналы включения/выключения: Если вы хотите управлять другими устройствами (например, светодиодами) при помощи кнопок, внутренний подтягивающий резистор облегчит обработку сигналов.

Управление режимами: Переключайте режимы вашего устройства (например, между режимом работы и режимом настройки) с помощью кнопок и INPUT_PULLUP.

Это всего лишь несколько примеров того, как можно использовать INPUT_PULLUP с pinMode().
Этот режим полезен везде, где важно определить, нажата ли кнопка или включено какое-либо внешнее устройство.

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