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

Схема соединения

Схема на макетной плате

Пояснение к схеме

Обратите внимание, мы не используем  «подтягивающий» резистор, так как Arduino имеет внутренний подтягивающий резистор на 10 кОм, мы будем использовать команду «INPUT_PULLUP» в цикле setup и обозначим 3 пин как вход с «подтяжкой», вместо стандартной команды «INPUT». Это упростит монтаж схемы от лишних проводов.

Скетч

Пояснение к коду

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

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

Делаем опрос состояние кнопки.

 Ставим два условия, при которых будем менять состояние светодиода (с «LOW» на «HIGH»). Следующая команду звучит так, если кнопка опущена и не была нажата, то…

&&- логический оператор («и») значение «истина» только, если оба значения его операнда верны. В нашем случае, если кнопку нажали и ее предыдущее состояние равно 0. Тогда запускается код ниже.

Для борьбы с дребезгом нам нужно подождать пока кнопка успокоится и будет в замкнутом положении, для этого используем команду delay на 20 мс.

Затем мы меняем состояние кнопки на 1 –( LAST = 1;) тем самым говорим, что кнопка была нажата, и меняем состояние светодиода  LED = !LED; восклицательный знак ! – инвертирует значение (с 0 на 1, с 1 на 0).

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

Вот и все загружаем код в программу и восхищаемся своим творением.

0 0 vote
Article Rating