МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики» (МТУСИ)
Кафедра «Интеллектуальные системы в управлении и автоматизации» (ИСУиА)
ПРАКТИЧЕСКАЯ РАБОТА №2
По дисциплине
Технологии промышленного интернета вещей
Выполнили: Студенты 4-го курса Группы БАП2201 Ли Самен Мягков А.К.
Проверил: к.т.н., доцент Воронов В.И.
Москва 2026
СОДЕРЖАНИЕ |
|
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ........................................................ |
3 |
ВЫПОЛНЕНИЕ...................................................................................................... |
4 |
ВЫВОДЫ ................................................................................................................ |
6 |
2
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ Дребезг кнопки
В процессе работы с кнопками мы можем столкнуться явлением, называемым дребезгом кнопки. Как следует из самого названия, явление это обуславливается дребезгом контактов внутри кнопочного переключателя. Металлические пластины соприкасаются друг с другом не мгновенно (хотя и очень быстро), поэтому на короткое время в зоне контакта возникают скачки и провалы напряжения. Если мы не предусмотрим появление таких «мусорных» сигналов, то будем реагировать на них каждый раз.
Для устранения дребезга используют программные и аппаратные решения. В двух словах лишь упомянем основные методы подавления дребезга:
–Добавляем в скетче паузу 10-50 миллисекунд между получением значений с пина Ардуино.
–Если мы используем прерывания, то программный метод использоваться не может, и мы формируем аппаратную защиту. Простейшая из них – RC фильтр с конденсатором и сопротивлением.
–Для более точного подавления дребезга используется аппаратный фильтр с использованием триггера Шмидта. Этот вариант позволит получить на входе в Ардуино сигнал практически идеальной формы.
Программный способ устранения дребезга кнопок
Самым простым способом справиться с проблемой дребезга кнопки является выдерживание паузы. Мы просто останавливаемся и ждем, пока переходный процесс не завершится. Для этого можно использовать функцию delay() или millis(). 10-50 миллисекунд – вполне достаточное значение паузы для большинства случаев.
Листинг 1 – Программный способ устранения дребезга кнопок
int currentVa1ue, prevVa1ue; void 1оор(){
currentva1ue = digitalRead(PIN_BUTTON); if (currentVa1ue != prevValue){
// Что-то изменилось, здесь возможна зона неопределенно-
сти
3
//делаем задержку de1ay{10);
//А вот теперь спокоЙно считываем значение, считая, что
нестабильность исчезла
currentVa1ue = digita1Read(PIN_BUTTON);
}
prevVa1ue = currentVa1ue ;
Seria1.print1n (currentVa1ue);
}
ВЫПОЛНЕНИЕ
На рисунке 1 представлена схема подключения из TinkerCAD по реализации рабочей схемы мигания лампочкой через кнопку.
Рисунок 1 – Подключение кнопки и светодиода к плате Arduino UNO
В листинге 2 приведён пример программирования схемы со стягивающим резистором.
Листинг 2 – Программирование кнопки и светодиода
const int PIN_BUTTON = 2; const int PIN_LED = 13;
void setup() {
Serial.begin(9600); pinMode(PIN_LED, OUTPUT);
}
4
void loop() {
int buttonState = digitalRead(PIN_BUTTON); // Получаем состоя-
ние кнопки
Serial.println(buttonState);
if (!buttonState) { // Если кнопка не нажата, то ничего не делаем
delay(50);
return;
}
//Этот блок кода будет выполняться, если кнопка нажата
//Мигаем светодиодом
digitalWrite(PIN_LED, HIGH); delay(1000); digitalWrite(PIN_LED, LOW); delay(1000);
}
Нажимаем и держим – светодиод мигает, отпускаем – он гаснет. Приступаем к анализу проделанного.
В скетче мы видим следующую логику:
1)Определяем, зажата ли кнопка.
2)Если кнопка не зажата, то просто выходим из метода loop(), ничего не включая и не меняя.
3)Если кнопка зажата, то выполняем мигание, используя фрагмент стандартного скетча:
3.1) Включаем светодиод, подавая напряжение на нужный порт. 3.2) Делаем нужную паузу при включенном светодиоде.
3.3) Выключаем светодиод.
3.4) Делаем нужную паузу при выключенном светодиоде.
На рисунке 3 представлена физическая реализация на ESP32 по миганию лампочкой.
5
Рисунок 3 – Горящая лампочка без (сверху) и с (снизу) включённой кнопкой по схеме со стягивающим резистором на ESP32
ВЫВОДЫ
Собрана схема подключения кнопки и светодиода к микроконтроллеру, а также написан скетч с использованием программного подавления дребезга контактов. Практически на EPS32 реализован режим мигания светодиода при удержании кнопки.
6
