Добавил:
МТУСИ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая работа 1 / ПР1_Мягков_БАП2201.docx
Скачиваний:
4
Добавлен:
21.04.2026
Размер:
6.6 Mб
Скачать
    1. 2.2 Тема 2

В листинге 1 представлена программа работы встроенного светодиода с подтягивающим и стягивающими резисторами для Tinker CAD.

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

// C++ code

// Задаём номера выводов:

const int buttonPin = 2;

const int ledPin = 13;

void setup()

{

pinMode(ledPin, OUTPUT); // Подключаем встроенный светодиод на плате Arduino

pinMode(buttonPin, INPUT);

}

void loop()

{

// Считываем состояние кнопки

int buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {

digitalWrite(ledPin, HIGH); // Зажигаем светодиод при нажатии кнопки

}

else {

digitalWrite(ledPin, LOW); // Гасим светодиод при опускании кнопки

}

}

В листинге 2 представлена программа для работы встроенного светодиода со стягивающим и подтягивающим резисторами на реальной плате ESP32. На рисунке 2.9 представлена реализация для подтягивающего резистора. На рисунке 2.12 представлена реализация для стягивающего резистора.

Листинг 2 – Программа для работы встроенного светодиода по кнопке на реальном примере с ESP32 WROOM DA

const int buttonPin = 4; // Перенесли кнопку на D4, чтобы не мешать загрузке, как было с пином 2 на Aruino в TinkerCAD

const int ledPin = 2;

void setup() {

pinMode(ledPin, OUTPUT);

pinMode(buttonPin, INPUT_PULLUP);

}

void loop() {

if (digitalRead(buttonPin) == LOW) {

digitalWrite(ledPin, LOW); // Гасим светодиод при опускании кнопки

} else {

digitalWrite(ledPin, HIGH); // Зажигаем светодиод при нажатии кнопки

}

}

Рисунок 2.7 – Подключение кнопки к Arduino по схеме с

подтягивающим резистором

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

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

Рисунок 2.10 – Подключение кнопки к Arduino по схеме со

стягивающим резистором

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

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

    1. 2.3 Тема 3

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

Рисунок 2.13 – Принципиальная схема подключения светодиода

На рисунке 2.14 представлена схема подключения светодиода в TinkderCAD. На рисунке 2.15 представлена схема подключения на ESP32.

Рисунок 2.14 – Схема подключения светодиода к плате Arduino UNO

Рисунок 2.15 – Подключение светодиода к плате ESP32

В листинге 3 представлена программа для включения/выключения светодиода для Arduino UNO и ESP32 через среду программирования Arduino IDE.

Листинг 3 – Программа для включения/выключения светодиода

// C++ code

const int LED = 8;

void setup()

{

pinMode(LED, OUTPUT);

}

void loop()

{

digitalWrite(LED, HIGH);

delay(500);

digitalWrite(LED, LOW);

delay(500);

}

Работа программы на основе листинга 3 для esp32 показано на рисунке 2.16.

Рисунок 2.16 – Подключение светодиода к плате ESP32

Ключевые моменты:

– pinMode(LED, OUTPUT);

pinMode – это функция для настройки режимов портов.

У портов есть 3 режима:

– INPUT – настройка порта на прием сигнала/вход

– OUTPUT – настройка порта на выдачу сигнала/выход

– INPUT_PULLUP

Синтаксис: pinMode(<Имя или номер порта>,<Режим настройки>);

Таким образом в нашей программе мы 8-му порту, который мы назвали LED настроили режим на выдачу сигнала: на зажигание или затухание светодиода.

– digitalWrite(LED, HIGH);

digitalWrite – это функция подачи цифрового сигнала

Синтаксис: digitalWrite (<Имя или номер порта>,<Режим подачи>);

У этой функции есть 2 режима настройки:

– HIGH – 1, true, 5 В

– LOW - 0, false, 0 B

Чтобы заставить что-то работать, нужно подать питание. То есть чтобы зажечь светодиод, нам нужно подать на выход, к которому он подключён, сигнал HIGH или 5B. Соответственно, чтобы светодиод перестал гореть, питание нужно снять, т.е. подать сигнал LOW

– Delay (миллисек.) – функция задержки сигнала.

Итак, подключаем светодиод к 8му пину. В функции setup() задаём для светодиода параметр выхода. Поскольку со светодиода мы не можем ничего считать, а можем только вывести, то параметр OUTPUT.

В функции loop() с помощью digitalWrite(LED, HIGH) – подаём сигнал и включаем светодиод. Ждём полсекунды с помощью delay(500). С помощью digitalWrite(LED, LOW) – подаём сигнал и выключаем светодиод. Ждём полсекунды с помощью delay(500).

Плавное изменение яркости светодиода

Ранее мы с помощью цифровых пинов просто включали и выключали светодиод. То есть подавали напряжение 5 В и 0 В. Теперь же подключим светодиод к цифровому пину с поддержкой ШИМ-сигнала, чтобы выдавать напряжение не только 0 и 5, а ещё и промежуточное. В листинге 4 представлена программа для плавного изменения яркости.

Листинг 4 – Программа для плавного изменения якрости светодиода

// C++ code

const int LED = 8;

void setup()

{

pinMode(LED, OUTPUT);

}

void loop()

{

for (int i=0; i<256; i = i+1) {

analogWrite(LED, i);

delay(10);

}

for (int i = 255; i>=0; i = i-1) {

analogWrite(LED, i);

delay(10);

}

}

Функция analogWrite() имеет два аргумента: номер контакта и 8-разрядное значение от 0 до 255, которое устанавливается на этом контакте. Что будет происходить со светодиодом при выполнении программы? Вы будете наблюдать, как свечение светодиода изменяется от тусклого к яркому в одном цикле for, а затем от яркого к тусклому в другом цикле for.

Обязательно обратите внимание на различие двух циклов for. В первом цикле выражение i++ является сокращением кода i = i + 1. Аналогично, запись i -- эквивалентна коду i = i - 1. Первый цикл плавно зажигает светодиод до его максимальной яркости, второй - постепенно гасит его.

ВЫВОДЫ

Собраны схемы в среде моделирования TinkerCAD и аналоговая сборка на ESP32 с использованием кнопоки светодиодов, реализовано управление свечением через цифровые сигналы и ШИМ. С помощью Arduino IDE мониторили работу спрограммированных скетчей.

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