Урок 98-5: Плавное затухание света при нажатии кнопки с помощью Arduino
В этом уроке вы соберёте светодиод, который плавно гаснет по команде: нажмите кнопку, и светодиод начнёт светиться на полную яркость, а затем плавно погаснет до полного выключения. Это один из самых полезных шаблонов для начинающих в Arduino, потому что он объединяет цифровой вход (кнопку) с аналоговым выходом ШИМ (яркостью светодиода) и учит управлять скоростью и плавностью изменения, а не просто включать и выключать что-либо.
Плавное затухание по команде встречается повсюду в реальных продуктах. Вот несколько практических способов использовать то, что вы здесь узнаете:
- Индикаторы плавного выключения — вместо того чтобы лампа резко гасла, она плавно тускнеет при нажатии кнопки, что выглядит гораздо более аккуратно на бытовой технике и корпусах, напечатанных на 3D-принтере.
- Режим сна / ожидания — нажмите кнопку, и яркий светодиод статуса плавно гаснет до чёрного, чтобы не мешать вам ночью, при этом схема остаётся под питанием.
- Сценическое или модельное освещение с «затемнением до чёрного» — одна кнопка запускает плавное затухание светодиодной ленты или панели вместо резкого отключения.
- Индикация экономии батареи — кратковременное нажатие кнопки даёт яркую вспышку подтверждения, которая плавно гаснет, так что светодиод светится на полную только короткое время.
- Интерактивное искусство и реквизит — эффект «выдоха», запускаемый прикосновением, идеально подходит для косплея, диорам или музейных экспозиций.
Основная идея проста: кнопка сообщает Arduino «начинай затухание сейчас», и Arduino понижает яркость светодиода от 255 (полная) до 0 (выключено) небольшими шагами. Поскольку шаги маленькие и происходят быстро, ваш глаз видит плавное затухание, а не скачок.
Если вы никогда раньше не делали плавное затухание светодиода, основы управления яркостью описаны в Уроке 98-4: Плавное затухание светодиода с помощью Arduino: управление яркостью. Этот урок напрямую опирается на ту основу, добавляя кнопку в качестве триггера.
Аппаратное обеспечение и компоненты
Это очень недорогая сборка — всё здесь является стандартным материалом из стартового набора:
- Плата Arduino (Uno, Nano, Mega или любая совместимая плата)
- Один светодиод (5 мм или 3 мм, любого цвета)
- Одна кнопка (тактильная, 4-контактного типа, хорошо подходит)
- Один резистор для светодиода — от 200 Ω до 1000 Ω (классические 220 Ω или 330 Ω идеальны)
- Макетная плата и соединительные провода DuPont
- USB-кабель для программирования (и батарея или адаптер 5 В, если вы хотите, чтобы схема работала автономно)
Небольшое замечание о резисторе для светодиода: светодиоду нужно примерно 2 В напряжения и около 10 мА тока. При питании 5 В резистор должен погасить оставшиеся 3 В, поэтому по закону Ома получается около 300 Ω. Подойдёт всё от 300 Ω до 1000 Ω — более высокие значения просто делают светодиод тусклее. Использование резистора не является опциональным; без него светодиод потребляет слишком большой ток и сгорит.
Руководство по подключению
Подключение намеренно минимальное. Анод светодиода (длинная ножка) подключается через резистор к цифровому выводу 3, а его катод (короткая ножка, с плоской стороной на корпусе) идёт на землю. Кнопка подключается между цифровым выводом 2 и землёй — внешний подтягивающий резистор не нужен, потому что код включает внутренний подтягивающий резистор Arduino.
Обратите внимание на полярность светодиода: плоская сторона пластикового корпуса и более короткая ножка обозначают катод (отрицательный). Если вы вставите его наоборот, светодиод просто не загорится — никаких повреждений не произойдёт, просто переверните его.
Что касается кнопки, если вы используете 4-контактный тактильный переключатель, помните, что контакты внутри попарно соединены: два из четырёх контактов всегда соединены вместе. Используйте мультиметр в режиме прозвонки, чтобы найти пару, которая пищит при нажатии, затем используйте один контакт с каждой стороны. Одна сторона идёт на вывод 2, другая на землю.
Объяснение кода
Скетч короткий, и почти всё, что вы могли бы захотеть изменить, находится в нескольких строках вверху. Вот настраиваемые пользователем части:
const int pushButtonPin = 2;//the pin push button switch is connected to
const int LEDPin = 3;//the pin LED is connected to
const int fadeAmount = 10; // how many points to fade the LED by
const int fadeSpeed = 5;//fade time in milliseconds. the smaller the value, the faster the fading
pushButtonPin и LEDPin просто сообщают Arduino, к каким выводам вы подключили компоненты. Если вы переместите кнопку на вывод 4 или светодиод на вывод 9 (вывод с поддержкой ШИМ), просто измените эти два числа в соответствии с вашей схемой подключения. Обратите внимание, что вывод светодиода обязательно должен поддерживать ШИМ — на Uno это выводы 3, 5, 6, 9, 10 или 11 — потому что для плавного изменения яркости требуется analogWrite().
fadeAmount управляет размером каждого шага яркости. Яркость изменяется от 0 до 255, поэтому fadeAmount равный 10 означает, что светодиод затухает примерно за 25 шагов. Большее число делает затухание более грубым и быстрым; меньшее число делает его более плавным и медленным.
fadeSpeed — это задержка в миллисекундах между каждым шагом. Это самый важный параметр для того, как эффект ощущается. Значение 5 мс даёт быстрое, резкое затухание; значение 30 мс или больше даёт медленное, плавное угасание. В сочетании с fadeAmount эти два значения позволяют настроить затухание именно с тем характером, который вам нужен.
Также стоит знать о внутренней переменной:
int brightness = 255; // how bright the LED is
int pushButtonStatus = 0; // push value from pin 2
brightness начинается с 255, что означает, что светодиод начинает с полной яркости каждый раз, когда вы нажимаете кнопку. Если вы хотите, чтобы затухание начиналось с более тусклого уровня — скажем, с половины яркости — измените это значение на 128.
Сама логика работает так: цикл считывает состояние кнопки. Если она нажата (LOW, из-за внутреннего подтягивающего резистора), цикл while выполняется, пока brightness больше нуля. Внутри этого цикла Arduino записывает текущую яркость на светодиод, вычитает fadeAmount, ждёт fadeSpeed миллисекунд и повторяет. Когда кнопка не нажата, на светодиод просто записывается 0, и он остаётся выключенным.
Одна важная деталь: внутренний подтягивающий резистор означает, что вывод читается как HIGH, когда кнопка не нажата, и как LOW, когда она нажата. Именно поэтому код проверяет LOW для обнаружения нажатия. Если вы когда-нибудь перейдёте на внешний стягивающий резистор, вам нужно будет изменить это сравнение на HIGH.
Живой проект и демонстрация
После загрузки поведение становится мгновенным и приятным. Нажмите кнопку, и светодиод сразу загорается на полную яркость, затем заметно тускнеет до нуля за период, который вы контролируете. Отпустите кнопку, и светодиод гаснет; нажмите снова, и затухание начнётся заново с полной яркости.
В видео затухание демонстрируется с несколькими настройками, чтобы вы могли услышать и увидеть разницу. При fadeAmount = 20 затухание быстрое и ступенчатое — оно достигает нуля за несколько видимых шагов. Снижение до fadeAmount = 10 значительно сглаживает его, а fadeAmount = 3 делает затухание заметно более длительным и почти непрерывным. Значение fadeSpeed оказывает столь же dramatic эффект: установка его на 1 мс делает затухание почти мгновенным, а большие значения растягивают его.
Попробуйте этот эксперимент: установите fadeAmount = 5 и fadeSpeed = 30. Вы получите медленное, плавное угасание, похожее на свет, который засыпает. Затем установите fadeAmount = 50 и fadeSpeed = 1 для резкого, быстрого отключения. Ни один из вариантов не является «неправильным» — всё зависит от настроения, которое вы хотите создать.
Поведение переключения той же кнопки рассматривается отдельно в Уроке 98-3: Как включить/выключить переключаемый светодиод с помощью кнопки на Arduino, а более простая версия с нажатием для включения — в Уроке 98-2: Как включить и выключить светодиод с помощью кнопки на Arduino.
Поскольку затухание запускается кратковременным контактом, эта же схема естественно подходит для управления реле или MOSFET вместо светодиода — вы можете плавно регулировать 12 В лампу, плавный пуск двигателя или прогрев нагревательного элемента. Кнопка — это всего лишь триггер; что именно вы будете регулировать, зависит от вас.
Связанные проекты из этого видео
- Урок 98-1: Как включить и выключить светодиод с помощью Arduino
- Урок 98-2: Как включить и выключить светодиод с помощью кнопки на Arduino
- Урок 98-3: Как включить/выключить переключаемый светодиод с помощью кнопки на Arduino
- Урок 98-4: Плавное затухание светодиода с помощью Arduino: управление яркостью
- Урок 98-6: Игра «Качели» со светодиодами на Arduino
- Урок 98-7: Бегущий огонь с использованием Arduino и 5 светодиодов
- Урок 98-8: Бегущий огонь с кнопкой и светодиодами на Arduino
- Урок 98-9: Измеритель уровня напряжения на светодиодах с использованием Arduino или бегущий огонь с потенциометром
- Урок 98-10: Светофор на Arduino
Главы
- [00:00] Обзор 10 проектов со светодиодами
- [01:00] Введение в пошаговый курс по Arduino
- [02:29] Основы светодиодов: обозначения, полярность и ток
- [03:49] Расчёт резистора для светодиода по закону Ома
- [05:53] Проект 1: Включение и выключение светодиода
- [12:43] Проект 2: Светодиод с кнопкой
- [17:13] Проект 3: Переключение светодиода кнопкой
- [20:12] Проект 4: Плавное затухание светодиода
- [23:20] Проект 5: Плавное затухание светодиода с кнопкой
- [27:32] Проект 6: Светодиод-качели
- [30:47] Проект 7: Бегущий огонь
- [36:41] Проект 8: Бегущий огонь с кнопкой
- [42:25] Проект 9: Светодиодный индикатор уровня напряжения
- [49:25] Проект 10: Светофор на Arduino
This code has not been parsed yet. Please return to the admin panel to parse it.
Вещи, которые могут вам понадобиться
-
АмазонкаSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Амазонка
-
Амазонка
-
Амазонка
Ресурсы и ссылки
-
ДокументацияДокументация для набора 3 в 1 IoT/умный автомобиль/обучающий комплект SunFounderdocs.sunfounder.com
-
Внешний
-
Внешний
-
Внешний
Файлы📁
Библиотеки Arduino (zip)
-
Исходный код обучающего набора 3-в-1 Smart Car от SunFounder
3in1-kit-main-v2.zip12.80 MB
Руководство пользователя
-
Руководство по сборке 3-в-1 Arduino Smart Car от SunFounderВ этом документе показана пошаговая сборка 3-в-1 Arduino Smart Car от SunFounder
SunFounder_car_assembly_manual.pdf1.20 MB