Цели урока:
- Познакомиться с понятием цифровых сигналов.
- Научить использовать функции
pinMode(),digitalWrite()иdigitalRead(). - Закрепить знания на практике, создав проекты с мигающим светодиодом, кнопкой и "бегущим огнём".
Теоретическая часть
Что такое цифровые сигналы?
Цифровые сигналы — это сигналы, которые могут принимать только два значения:
HIGH(высокий уровень): 5 В (или 3.3 В на некоторых платах).LOW(низкий уровень): 0 В.
Цифровые сигналы используются для:
- Управления устройствами (например, включение/выключение светодиода).
- Чтения состояния устройств (например, проверка, нажата ли кнопка).
Функции для работы с цифровыми сигналами
Функция pinMode()
Функция pinMode() настраивает пин как вход (INPUT) или выход (OUTPUT).
Синтаксис:
pinMode(pin, mode);
pinНомер пина, который вы хотите настроить (например, 2, 3, 13).mode: Режим работы пина:INPUT— пин работает как вход.OUTPUT— пин работает как выход.INPUT_PULLUP— пин работает как вход с включенным внутренним подтягивающим резистором.
Пример использования:
void setup() {
pinMode(13, OUTPUT); // Настройка пина 13 как выхода
pinMode(2, INPUT); // Настройка пина 2 как входа
}
Функция digitalWrite()
Функция digitalWrite() устанавливает значение на выходном пине (HIGH или LOW).
Синтаксис:
digitalWrite(pin, value);
pinНомер пина, на который вы хотите подать сигнал.valueЗначение, которое нужно установить:HIGH— подать напряжение 5 В (или 3.3 В на некоторых платах).LOW— подать напряжение 0 В.
Пример использования:
void loop() {
digitalWrite(13, HIGH); // Включить светодиод
delay(1000); // Ждать 1 секунду
digitalWrite(13, LOW); // Выключить светодиод
delay(1000); // Ждать 1 секунду
}
Функция digitalRead()
Функция digitalRead() используется для чтения значения на входном пине (HIGH или LOW).
Синтаксис:
digitalRead(pin);
pin: Номер пина, с которого вы хотите прочитать значение.
Пример использования:
void loop() {
int buttonState = digitalRead(2); // Чтение состояния кнопки на пине 2
if (buttonState == HIGH) {
digitalWrite(13, HIGH); // Включить светодиод, если кнопка нажата
} else {
digitalWrite(13, LOW); // Выключить светодиод, если кнопка не нажата
}
}
Подтягивающие резисторы
Что такое подтягивающий резистор?
Подтягивающий резистор — это резистор, который подключается между входным пином и источником питания (VCC) или землей (GND). Он используется для стабилизации состояния пина, когда кнопка или другой входной компонент не активен.
Зачем он нужен?
Когда кнопка не нажата, пин, к которому она подключена, находится в "плавающем" состоянии. Это означает,
что его значение может случайно меняться между HIGH и LOW, что приводит к ложным
срабатываниям. Подтягивающий резистор фиксирует состояние пина, когда кнопка не нажата.
Краткое упоминание о ШИМ (PWM)
Некоторые цифровые пины на Arduino (например, 3, 5, 6, 9, 10, 11 на Arduino Uno) поддерживают ШИМ (широтно-импульсную модуляцию). Это позволяет управлять аналоговыми устройствами, такими как яркость светодиода или скорость мотора, с помощью цифровых сигналов.
Пример использования:
analogWrite(9, 128); // Установить яркость светодиода на 50%
Подробнее о ШИМ мы поговорим в следующем уроке, посвященном аналоговым сигналам.
Практическая часть
Задание 1: Мигающий внешний светодиод
Цель задания:
Создать проект, в котором внешний светодиод будет мигать с интервалом 1 секунда.
Необходимые компоненты:
- Светодиод.
- Резистор 220 Ом.
- Провода.
- Макетная плата (можно и без нее).
Схема подключения:
- Подключите анод (длинная ножка) светодиода к пину 13 через резистор 220 Ом.
- Подключите катод (короткая ножка) светодиода к GND.
Код программы:
void setup() {
pinMode(13, OUTPUT); // Настройка пина 13 как выхода
}
void loop() {
digitalWrite(13, HIGH); // Включить светодиод
delay(1000); // Ждать 1 секунду
digitalWrite(13, LOW); // Выключить светодиод
delay(1000); // Ждать 1 секунду
}
Вот готовый проект на Wokwi, нажмите кнопку "Start the simulation" и посмотрите что будет.
Задание 2: Управление светодиодом с помощью кнопки
Цель задания:
Создать проект, в котором светодиод включается только при нажатии кнопки.
Необходимые компоненты:
- Светодиод.
- Резистор 220 Ом.
- Кнопка.
- Провода.
- Макетная плата (можно и без нее).
Схема подключения (рисунок ниже):
- Подключите анод светодиода к пину 13 через резистор 220 Ом.
- Подключите катод светодиода к GND.
- Подключите один контакт кнопки к пину 2, а другой — к 5 V.
- Подключите резистор 10 кОм между пином 2 и GND (подтягивающий резистор).
Код программы:
void setup() {
pinMode(13, OUTPUT); // Настройка пина 13 как выхода
pinMode(2, INPUT); // Настройка пина 2 как входа
}
void loop() {
int buttonState = digitalRead(2); // Чтение состояния кнопки
if (buttonState == HIGH) { // Если кнопка нажата
digitalWrite(13, HIGH); // Включить светодиод
} else {
digitalWrite(13, LOW); // Выключить светодиод
}
}
Вот готовый проект на Wokwi, нажмите кнопку "Start the simulation" и после этого понажимайте на кнопку.
Задание 3: "Бегущий огонь"
Цель задания:
Создать эффект "бегущего огня" с использованием 3-5 светодиодов.
Необходимые компоненты:
- 3-5 светодиодов.
- Резисторы 220 Ом.
- Провода.
- Макетная плата (можно и без нее).
Схема подключения (рисунок ниже):
- Подключите аноды светодиодов к пинам 2, 3, 4, 5, 6 через резисторы 220 Ом.
- Подключите катоды светодиодов к GND.
Код программы:
void setup() {
pinMode(2, OUTPUT); // Настройка пинов как выходов
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
for (int i = 2; i <= 6; i++) {
digitalWrite(i, HIGH); // Включить светодиод
delay(200); // Ждать 200 мс
digitalWrite(i, LOW); // Выключить светодиод
}
}
Вот готовый проект на Wokwi, нажмите кнопку "Start the simulation" и посмотрите что произойдет.
Вопросы для закрепления:
- Что такое цифровой сигнал?
- Какие функции используются для работы с цифровыми сигналами?
- Как подключить светодиод к Arduino?
- Как работает подтягивающий резистор?
- Какие пины на Arduino поддерживают ШИМ (PWM)?
Домашнее задание:
- Создайте проект, где светодиод мигает только при нажатии одной кнопки, а при нажатии другой — перестает мигать.
- Подключите 3 светодиода и заставьте их мигать поочередно с разной скоростью.
Советы по работе в Wokwi:
- Используйте встроенные примеры кода в Wokwi для быстрого старта.
- Экспериментируйте с разными компонентами, чтобы лучше понять их работу.
- Не бойтесь ошибаться — симулятор позволяет легко исправлять ошибки и пробовать новые идеи.
Что мы узнали:
- Познакомились с понятием цифровых сигналов.
- Научились использовать функции
pinMode(),digitalWrite()иdigitalRead().
Следующий урок: Аналоговые сигналы