6 Ардуино для начинающих Дребезг контактов

Автор Maksim Inshakov
6  Ардуино для начинающих  Дребезг контактов

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

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

Нажали на миллисекунде и она со значением напряжения 0 будет включу если напряжение 5.

Вольт, но справа показан график. Как на самом деле — это происходит кнопка фактически возвращается вверх-вниз пока значение не установится есть так называемые дребезг контактов теперь когда мы знаем. Как ведёт себя кнопка можно написать программу для кнопки с дребезгом которая фиксирует изменения состояния кнопки некоторое время ждёт и затем снова читать состояние переключать из элементов нам сегодня понадобится всё, что было в прошлом уроке плата Arduino. Уно с питанием перемычки резистор и светодиод кнопка вот собственно и всё — это можете купить на алиэкспрессе ссылки на эти радиоэлементы тебе оставлю в описании к алгоритм такой программу можно сделать следующим образом сначала сохраняем предыдущие текущее состояние кнопки затем второй шаг считываем текущее состояние кнопки третий шаг если текущее состояние кнопки отличается от предыдущего ждём 5 миллисекунд потому, что кнопка возможно изменит своё состояние. Даня подождав 5 миллисекунд состояние кнопки и делаем его текущим состоянием кнопки затем если предыдущее состояние кнопки было у о текущих ой переключаем состояние светодиода затем устанавливаем предыдущий с кнопки в качестве текущего педали возвращаемся к шагу 2 вот и весь алгоритм не очень понятно. Да, но — это прекрасный пример для изучения функций функция — это оператор которые может принимать входные аргументы выполнения фрагмента всех использованием и возможно возвращать результат мы уже встречали функции в наших предыдущих программах на понять такая функция digitalwrite эта функция которая принимает в качестве аргументов номер контакта и его значение например означающий. На девятом контакте будет напряжение lo0. И вообще чтобы упросить программу можно определить свои собственные функции которые придется повторять неоднократно. И сейчас мы напишем функцию для устранения дребезга контактов можно вызывать неоднократно наша функция будет принимать предыдущее состояние кнопки в качестве входных данных выполнять противо Drake защиту и выводить установившееся состояние кнопки основной цикл программы переключает состояние светодиода при каждом нажатии кнопки так. Давайте напишем эту программу сначала задаем константы лето 9 для подключения светодиода батон — это второй контакт для подключения кнопки затем создаем также 3 переменных были на. Ласт батон — это переменная для сохранения предыдущего состояния кнопки Button Content Button для сохранения текущего состояния кнопки блин лет он со значением. Фолз текущее состояние светодиода. Это ты так называемые глобальные логические переменные они будут изменяться в течение программой выйти из этих трёх переменных присвоенное начальное значение. Лау Лау и false в программе значения этих переменных можно изменять с помощью этого оператора присваивания. Ну на письме символ равно дали работаем здесь помощью с помощью операторов Kenwood задаем лет 9 контакт как выход и второй контакт кнопки как вход затем сглаживание дребезга которая принимает в качестве аргумента предыдущее состояние кнопки и выдаёт фактическое вообще эта функция будет doblons принимает логическую переменную логической переменной имеет всегда только два сосуда True false High и Low включено выключено 100 и функции текущее состояние кнопки помните былин корунд сравнивается с предыдущим с помощью какого оператора означает она не равно есть ли состояние отличаются кто кнопка возможно нажато затем ожидаем 5 секунд этого достаточно чтобы состояние кнопки стабилизировалась после дребезга и затем вновь проверяем состояние кнопки как выполнить эту функцию означает результат данная функция возвращает текущее значение булевой локальной переменной которой объявлена используется только функции диван когда функция doblons вызывает из основного цикла возвращенное значение глобальную переменную каринбутан которые помните было у нас определено в начале программы после вызова функции денси установки переменный каринбутан происходит сравнение текущего и предыдущего значение состояния кнопки. Таня после. Вызов Баланс установки значения переменной каринбутан происходит сравнение текущего и предыдущего значения состояние кнопки с помощью оператора который записывается. Вот так. Это логический оператор и означающее, что выражение в скобках выполняться только если истина каждое задание разделённых этим оператором если ранее была у, а теперь. Хай значит кнопка была нажата и нужно инвертировать значение переменной лет он инверсия выполняет вот такой оператор перед собственной переменной в питон цикл закончен обновляем предыдущую стене кнопки изменяем состояние светодиода. Так, что — это программа изменяет состояние светодиода после каждого нажатия кнопки и если не делать эту программу сглаживания дребезга то результат нажатия кнопки будет ни перед. Давайте войдем этот скетчи ношу платья длинные посмотрим, что же будет запитываем плату нажимаем кнопку света.

0 комментариев
0

Читайте также