Как запрограммировать кнопку на ардуино

Содержание

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

Кнопка ардуино

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

Тактовые кнопки и кнопки-переключатели

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

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

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

Вариантов различных кнопок великое множество, это действительно один из самых распространенных видов электронных компонентов.

/>

Кнопки ардуино для простых проектов

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

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

Для удобства работы в комплекте с тактовой кнопкой обычно идет пластмассовый колпачок какого-то цвета, он достаточно очевидно надевается на кнопку и придает проекту менее хакерский вид.

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

Включение и выключение светодиода с помощью кнопки

Давайте начнем с самого простого способа подключения тактовой кнопки. Рассмотрим схему с Arduino в качестве источника питания, светодиода, ограничительного резистора номиналом 220 Ом и кнопки, которая будет замыкать и размыкать цепь.

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

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

Сама схема с кнопкой, светодиодом и контроллером Arduino не нуждается в особых пояснениях. Кнопка разрывает цепь, светодиод не горит. При нажатии цепь замыкается, светодиод включается. Если вы перепутаете контакты (включите через замкнутые спаренные контакты кнопки), то кнопка работать не будет, потому что цепь никогда не разомкнется. Просто поменяйте контакты местами.

Подключение кнопки с подтягивающим резистором

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

В скетче мы будем отслеживать факт нажатия и выводить сообщение в монитор порта. Более интересный пример и подробное объяснение самой схемы мы приведем чуть позже.

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

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

Подключение кнопки в режиме INPUT_PULLUP

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

Альтернативным вариантом будет выбрать режим пина как OUTPUT и установить на данный порт высокий уровень сигнала. Встроенный подтягивающий резистор подключиться автоматически.

И все. Можно собрать вот такую сложную схему и работать с кнопкой в скетче.

Мигание светодиода после нажатия на кнопку

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

Полная схема проекта изображена на рисунке:

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

Нажимаем и держим – светодиод мигает. Отпускаем – он гаснет. Именно то , что хотели. Хлопаем от радости в ладоши и приступаем к анализу того, что сделали.

Давайте посмотрим на скетч. В нем мы видим довольно простую логику.

  1. Определяем, нажата ли кнопка.
  2. Если кнопка не нажата, то просто выходим из метода loop, ничего не включая и не меняя.
  3. Если кнопка нажата, то выполняем мигание, используя фрагмент стандартного скетча:
  1. Включаем светодиод, подавая напряжение на нужный порт
  2. Делаем нужную паузу при включенном светодиоде
  3. Выключаем светодиод
  4. Делаем нужную паузу при выключенном светодиоде

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

Дребезг кнопки ардуино

В процессе работы с кнопками мы можем столкнуться с очень неприятным явлением, называемым дребезгом кнопки. Как следует из самого названия, явление это обуславливается дребезгом контактов внутри кнопочного переключателя. Металлические пластины соприкасаются друг с другом не мгновенно (хоть и очень быстро для наших глаз), поэтому на короткое время в зоне контакта возникают скачки и провалы напряжения. Если мы не предусмотрим появление таких “мусорных” сигналов, то будем реагировать на них каждый раз и можем привести наш проект к хаусу.

Для устранения дребезга используют программные и аппаратные решения. В двух словах лишь упомянем основные методы подавления дребезга:

  • Добавляем в скетче паузу 10-50 миллисекунд между полкучением значений с пина ардуино.
  • Если мы используем прерывания, то программный метд использоваться не может и мы формируем аппаратную защиту. Простейшая из них – RC фильтр с конденсатором и сопротивлением.
  • Для более точного подавления дребезга используется аппаратный фильтр с использованием триггера шмидта. Этот вариант позволит получить на входе в ардуино сигнал практически идеальной формы.

Более подробную информацию о способах борьбы с дребезгом вы можете найти в этой статье об устранении дребезга кнопок.

Переключение режимов с помощью кнопки

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

Факт нажатия мы определяем с помощью функции digitalRead(). В результате мы получим HIGH (1, TRUE) или LOW(0, FALSE), в зависимости от того, как подключили кнопку. Если мы подключаем кнопку с помощью внутреннего подтягивающего резистора, то нажатие кнопки приведет к появлению на входе уровня 0 (FALSE).

Для хранения информации о нажатии на кнопку можно использовать переменную типа boolean:

boolean keyPressed = digitalRead(PIN_BUTTON)==LOW;

Почему мы используем такую конструкцию, а не сделали так:

boolean keyPressed = digitalRead(PIN_BUTTON);

Все дело в том, что digitalRead() может вернуть HIGH, но оно не будет означать нажатие кнопки. В случае использования схемы с подтягивающим резистором HIGH будет означать, что кнопка, наоборот, не нажата. В первом варианте (digitalRead(PIN_BUTTON)==LOW ) мы сразу сравнили вход с нужным нам значением и определили, что кнопка нажата, хотя и на входе сейчас низкий уровень сигнала. И сохранили в переменную статус кнопки. Старайтесь явно указывать все выполняемые вами логические операции, чтобы делать свой код более прозрачным и избежать лишних глупых ошибок.

Как переключать режимы работы после нажатия кнопки?

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

Логика работы программы очень проста:

  • Запоминаем факт нажатия в служебной переменной.
  • Ожидаем, пока не пройдут явления, связанные с дребезгом.
  • Ожидаем факта отпускания кнопки.
  • Запоминаем факт отпускания и устанавливаем в отдельной переменной признак того, что кнопка была полноценно нажата.
  • Очищаем служебную переменную.

Как определить нажатие нескольких кнопок?

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

В этом уроке мы узнаем: как подключить кнопку к ардуино, как подавить дребезг контактов, как в прошивке обработать нажатие на кнопку, как послать ШИМ сигнал, как создать свою функцию и как управлять светодиодом.

В этом уроке используются следующие детали:

Большая макетная плата на 1600 точек с 4 шинами питания: Купить
Набор резисторов из 100 штук на все случаи: Купить
Набор светодиодов из 100 штук: Купить
5 штук кнопок в удобной форме: Купить
Соединительные провода 120 штук: Купить

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

Как видите, ничего сложно в подключении кнопки к ардуино нет. Обратите внимание, что кнопка установлена так, что каждый ее контакт подключен к разным линиям макетной платы. Так же вы можете заметить резистор на 10 кОм который притягивает контакт к земле. Это нужно для того, что бы мы на 8 контакте не ловили наводок. Попробуйте убрать этот резистор из схемы. Светодиод будет загораться при шевелении проводов или кнопки. Теперь давайте рассмотрим скетч:

В этом уроке, как и прошлом, в самом начале мы объявляем переменные со значениями пинов к которым у нас подключены кнопка и светодиод. Далее в функции setup() мы обозначаем какой пин используется как вход, а какой как выход. В функции loop() мы используем условный оператор if с оператором сравнения и проверяем приходит ли на пин 8 высокий сигнал. Если да то включаем светодиод, если нет то выключаем. Описание функций и операторов вы найдете в справочнике по языку программирования Arduino

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

В этом скетче мы добавили переменные для хранения состояния светодиода и кнопки. Так же мы создали новую функцию для подавления дребезга контактов debounse(). Код в цикле loop() тоже немного изменился. Теперь в условном операторе мы проверяем нажата ли кнопка и если нажата, то меняем состояние светодиода на противоположное. Потом меняем переменную с последним состоянием на текущее состояние кнопки и включаем или выключаем светодиод.

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

Управление яркостью светодиода

Теперь светодиод подключен к 11 пину ардуино, которой умеет делать ШИМ. И нам пришлось добавить токоограничивающий резистор на 220 Ом перед светодиодом, что бы его не спалить. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В. Теперь посмотрим что нужно изменить в скетче:

В этом примере мы изменили значение переменной ledPin на 11. Так же добавили переменную для хранения уровня ШИМ ledLevel. При нажатии на кнопку будем увеличивать эту переменную. Функция debounce() осталась без изменений. В цикле мы теперь используем функцию analogWrite().

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

СХОЖИЕ СТАТЬИБОЛЬШЕ ОТ АВТОРА

Arduino. Урок 15. SD карта.

Ардуино для начинающих. Урок 14. Прерывания.

Ардуино для начинающих. Урок 13. Беспроводная связь.

18 КОММЕНТАРИИ

Здравствуйте)))
Подскажите пожалуйста новечьку,
Как можно реализовать такой скечь
При нажатии на кнопку светодиод плавно загорается если нажать ещё раз на кнопку то светодиод плавно тухнет…?

Очевидно при нажатии на кнопку в цикле менять значение ledLevel

Денис что такое ledlevel?

//Как можно реализовать такой скечь
//При нажатии на кнопку светодиод плавно загорается если нажать ещё раз на кнопку то светодиод плавно тухнет…?

/*== к примеру, вот так ==*/

// переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;

// настройка изменения яркости
int deltaLevel = 5; // Шаг изменения яркости
int sign = 1; // Знак шага
int step_delay = 100; // задержка в шаге изменения яркости светодиода

// настройка сигнализатора окончания изменения яркости
int max_blink = 3; //число морганий светодиода на pin13 (LED_BUILTIN)
int blink_delay = 500; //задержка состояния светодиода на pin13 (LED_BUILTIN)

void setup()

pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);// потушим светодиод на pin13 (LED_BUILTIN)

// функция для подавления дребезга
boolean debounse(boolean last)

boolean current = digitalRead(switchPin);
if(last != current)

delay(5);
current = digitalRead(switchPin);

return current;

// При нажатии на кнопку, светодиод медленно увеличивает яркость
// При повторном нажатии на кнопку, светодиод медленно гаснет
void loop()

currentButton = debounse(lastButton);
if(lastButton == LOW currentButton == HIGH)

if(ledLevel == 0) sign = 1;
if(ledLevel == 255) sign = -1;
for(int i = 0; i 255) ledLevel = 255;
if(ledLevel
Света12.03.2018 at 12:18

МУЖЧИНЫ кто согласится написать скетч за вознаграждение,к примеру на телефон.

Здравствуйте. Какой именно скетч вам нужен?

выдаёт ошибку на

for(int i = 0; i 255) ledLevel = 255;

помогите освоить кнопки для изменения параметра int b = 7883; с запоминанием
#include

LiquidCrystal_I2C lcd(0x27, 16, 2);

AccelStepper Stepper1(1, 13, 12); //использует пин 12 и 13 для dir и step, 1 — режим external driver (A4988)

int relayPin = 11;

pinMode (relayPin, OUTPUT);

digitalWrite (relayPin, HIGH);

Stepper1.setMaxSpeed(1500.0);
Stepper1.setAcceleration(1500.0);
if (Stepper1.distanceToGo() == 0)
digitalWrite (relayPin, LOW);
delay(30);
Stepper1.move(b);
delay(500);

if (Stepper1.distanceToGo() == b)

digitalWrite (relayPin, HIGH);
delay(30);
a = 0;

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

так то тело работает как надо, но чтото я в ступоре что и где написать ему еще ))))))

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

void setup()
motor.attach(8);
motor.writeMicroseconds(2300);
delay(2000);
motor.writeMicroseconds(800);
delay(6000);

int val = map(analogRead(0), 0, 1023, 800, 2300);
motor.writeMicroseconds(val);

Очень просто! в setup() надо добавить строку: pinMode(D5, INPUT); // D5 номер цифрового пина к которому подключена кнопка. Можете подключить к любому цифровому пину но не забудьте поменять значение

В loop() добавляем следующее условие:
if(digitalRead(D5)) // ждем высокого сигнала с кнопки
int val = map(analogRead(0), 0, 1023, 800, 2300);
motor.writeMicroseconds(val);

void setup()
pinMode(D5, INPUT);
motor.attach(8);
motor.writeMicroseconds(2300);
delay(2000);
motor.writeMicroseconds(800);
delay(6000);

if(digitalRead(D5))
int val = map(analogRead(0), 0, 1023, 800, 2300);
motor.writeMicroseconds(val);

ошибка ‘D5’ was not declared in this scope

подскажите где ошибка??

Народ помогите новичку нужен скетч когда держишь нажатой кнопку яркость светодиода увеличивается а как отпустишь сразу гаснет. Нужно для робота уже всю голову сломал

Странно что вам никто не ответил. В цикле изменяйте параметры ШИМ от 0 до 255 и постоянно опрашивайте кнопку на предмет нажатия. Сделайте задержку опроса немного больше, например 10ms. Чтобы не ошибиться с отжатием. По false заканчивайте опрос и устанавливайте выход в LOW.
Написать видимо могу, но тратить на это время не хочу. Я всего пару часов учу этот предмет #128578;
Надеюсь вы уже и без меня догадались как это сделать.

Есть стойкое ощущение, что автор статьи дисциплины схемотехника и принцип работы электронных приборов в ВУЗе прогуливал.
Теперь светодиод подключен к 11 пину ардуино, которой умеет делать ШИМ. И нам пришлось добавить токоограничивающий резистор на 220 Ом перед светодиодом, что бы его не спалить. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В.
1. Без разницы где стоит резистор До или После светодиода.
2. токоограничивающий резистор — совершенно верно!
3. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В. А это вы батенька придумали самостоятельно. Сетодиод — прибор управляемый током (в п.2 ошибки нет). На напряжение ему плевать, кроме полярности естественно. Дальше закон Киргоффа для участка цепи. Я включаю светодиоды в розетку 220В. Так что напряжение на выходе Arduino тут вообще не причем. Касаемо резистора то тут он, скорее всего ограничивает ток коллектора выходного транзистора контроллера, т.к. светодиод горит ярко уже при 10ma, новые даже при 5-7ma. А здесь ограничено около 20-23ma. Т.е. для свечения светодиода можно было смело ставить 470 Ом и выше. На это плевать когда вы питаетесь от компа и не греетесь. Как только будете жрать батарейки (или сделаете высоко нагруженную схему), то все будет греться а батарея заканчиваться довольно быстро.
Сорри. не по теме программирования.
К программированию претензий нет. Я в этом пока не сильно понимаю. Первый день…

Как сделать на 2 кнопках? Чтобы нажал на первую кнопку загорелся первый светодиод,нажал на вторую кнопку загорелся второй светодиод.

Подскажите пожалуйста а как написать код чтоб 2 кнопки и 2 светодиода работало. а то я не как не могу в толк взять. Как и что здесь сделоть. int switchPin = 2;
int switch2Pin = 4;
int ledPin = 12;
int led1Pin = 13;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean last1Button = LOW;
boolean currentButton = LOW;
boolean current1Button = LOW;
boolean ledOn = false;
boolean led1On = false;

void setup()
pinMode(switchPin, INPUT);
pinMode(switch2Pin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(led1Pin, OUTPUT);

// функция для подавления дребезга

boolean debounse(boolean last);
boolean debounse1(boolean last1);
boolean current = digitalRead(switchPin);
boolean current1 = digitalRead(switch2Pin);

if (last != current)
delay(5);
current = digitalRead(switchPin);

return current;

if (last1 != current1)
delay(5);
current1 = digitalRead(switch2Pin);

return current1;

currentButton = debounse(lastButton);
if(lastButton == LOW currentButton == HIGH)
ledOn = !ledOn;

lastButton = currentButton;
digitalWrite(ledPin, ledOn);

current1Button = debounse1(last1Button);
if(last1Button == LOW current1Button == HIGH)
led1On = !led1On;

last1Button = current1Button;
digitalWrite(led1Pin, led1On);

В предыдущей статье я писал об организации индикации на светодиодах.

О работе с кнопками на Ардуино написано очень много. В этой статье я напишу свое видение, как удобно разрабатывать управление микроконтроллера с использованием тактовых кнопок, подключенных к цифровым входам.

Не буду вдаваться в подробности схем подключения кнопок к цифровым (и не только) входам микроконтроллера. В данной статье рассматривается кнопка, подтянутая резистором к плюсу и замыкающая вход на землю. Поэтому состояния нажатой кнопки LOW, а отпущенной HIGH.

Тип кнопки не имеет значения, например может быть таким

Самый простой скетч работы с кнопкой выглядит так

Оператор delay(1000) задает задержку между нажатиями кнопки. Если время нажатия превысит 1000 мс, то происходит автоматическое повторное нажатие кнопки. Такой метод может разве что сгодиться для отладки, но в реальной жизни мало применим, так как delay не дает выполнятся остальным операторам скетча (если только не используются прерывания) и ограничивает минимальное время между нажатиями кнопки.

В следующем скетче попробую запоминать состояния кнопки

Все вроде бы работает, но иногда проскакивает два или более срабатывания. В чем же дело? Дело в дребезге контактов механической кнопки.

Обычное срабатывание кнопки выглядит так. Казалось бы все правильно.

Но иногда срабатывание может выглядеть и так

Особенно это заметно у изношенных или просто некачественных кнопок. Есть разные способы борьбы с этим эффектом, от установки конденсатора на цифровой вывод до целых электрических схем. Но у нас ведь есть целый микроконтроллер! Проанализировав работу кнопок, можно сделать вывод, что нажатие кнопки обычно длится более 150 мс, а дребезг контактов порождает импульсы длительностью 50 мс, ну очень редко чуть больше. Поэтому установив минимальное время между нажатиями кнопки в 50-100мс можно побороть эффект дребезга контактов программным путем.

Иногда для уменьшения числа кнопок в устройстве применяют короткое и длинное нажатие на кнопку. В этом случае короткое нажатие фиксируется при отпускания кнопки А длинное нажатие при достижении заданного интервала. код получается такой.

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

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

В конструкторе класса указывается цифровой вход кнопки. А также четыре необязательных параметра:

  • Таймаут для игнорирования дребезга контактов (По умолчанию 50 мс )
  • Время длинного нажатия кнопки, мс. Если 0, то длинное нажатие не фиксируется. (По умолчанию отключено)
  • Время удержания кнопки, после которого происходит автонажатие кнопки. Если 0, то не происходит. (По умолчанию отключено)
  • Интервал срабатывания кнопки при автонажатии (По умолчанию 500 мс)

Функция begin() производит инициализацию цифрового входа.

Функция loop() вызывается в основном цикле или по таймеру, но достаточно часто и возвращает следующие значения:


Источник: ingener-pto.ru