Добавил:
МТУСИ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практическая работа 2 / ПР2_Мягков_БАП2201

.docx
Скачиваний:
4
Добавлен:
21.04.2026
Размер:
7.34 Mб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ

КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

(МТУСИ)

Кафедра «Интеллектуальные системы в управлении и автоматизации»

(ИСУиА)

ПРАКТИЧЕСКАЯ РАБОТА №2

По дисциплине

Технологии промышленного интернета вещей

Выполнили:

Студенты 4-го курса

Группы БАП2201

Ли Самен

Мягков А.К.

Проверил:

к.т.н., доцент

Воронов В.И.

Москва 2026

СОДЕРЖАНИЕ

ВЫПОЛНЕНИЕ 3

ВЫВОДЫ 5

Дребезг кнопки

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

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

– Добавляем в скетче паузу 10-50 миллисекунд между получением значений с пина Ардуино.

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

– Для более точного подавления дребезга используется аппаратный фильтр с использованием триггера Шмидта. Этот вариант позволит получить на входе в Ардуино сигнал практически идеальной формы.

Программный способ устранения дребезга кнопок

Самым простым способом справиться с проблемой дребезга кнопки является выдерживание паузы. Мы просто останавливаемся и ждем, пока переходный процесс не завершится. Для этого можно использовать функцию delay() или millis(). 10-50 миллисекунд – вполне достаточное значение паузы для большинства случаев.

Листинг 1 – Программный способ устранения дребезга кнопок

int currentVa1ue, prevVa1ue;

void 1оор(){

currentva1ue = digitalRead(PIN_BUTTON);

if (currentVa1ue != prevValue){

// Что-то изменилось, здесь возможна зона неопределенности

// делаем задержку

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);

}

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 по миганию лампочкой.

Рисунок 3 – Горящая лампочка без (сверху) и с (снизу) включённой кнопкой по схеме со стягивающим резистором на ESP32

ВЫВОДЫ

Собрана схема подключения кнопки и светодиода к микроконтроллеру, а также написан скетч с использованием программного подавления дребезга контактов. Практически на EPS32 реализован режим мигания светодиода при удержании кнопки.

Соседние файлы в папке Практическая работа 2