Пребарување код

Лекција 98-4: Постепено намалување на LED светло со Arduino: Контрола на осветленост

Лекција 98-4: Постепено намалување на LED светло со Arduino: Контрола на осветленост

Светлечките диоди се наоѓаат насекаде — индикатори, екрани, декоративно осветлување — но повеќето почетници застануваат само на нивното вклучување и исклучување. Овој проект го прави следниот чекор: непречено затемнување и осветлување на LED диода користејќи ја вградената PWM (пулсно-ширинска модулација) можност на Arduino. Наместо грубо трепкање, добивате постепено зголемување и намалување на осветленоста што имитира природно затемнување, ефекти на дишење и аналогна контрола од чисто дигитален пин. Ова е еден од најзадоволувачките први проекти бидејќи резултатот можете веднаш да го видите, а истата техника е основа за контрола на брзината на моторите, јачината на звукот и затемнувањето на позадинското осветлување кај вистинските производи.

LED-5mm-green

Откако ќе го разберете затемнувањето, можете да го примените во широк спектар практични изработки:

  • Создавање индикатор за статус што „дише“ на уред, кој пулсира нежно наместо да трепка вознемирувачки
  • Автоматско затемнување на LED ноќно светло врз основа на амбиенталната светлина или времето од денот
  • Контрола на осветленоста на позадинското осветлување на LCD или OLED екран
  • Изработка на атмосферско осветлување или декоративни ламби со непречени премини помеѓу нивоата на осветленост
  • Симулација на бавен аларм за изгрејсонце што постепено се осветлува за природно будење
  • Додавање контрола на брзината на мали DC мотори или вентилатори (истиот PWM принцип се применува)

Овој туторијал е дел од Robojax Arduino курс чекор-по-чекор и конкретно го опфаќа Проектот 4 од 10: Затемнување на LED светло користејќи Arduino. Целосната програма е достапна за преземање под статијата.

Хардвер и компоненти

330_ohm_resistor
330 ohm 0.25 watt resistor

Списокот на делови за овој проект е минимален — ако претходно сте работеле со Arduino, веројатно веќе ги имате сите потребни:

  • 1× Arduino плоча (Uno, Nano, Mega или која било компатибилна плоча)
  • 1× LED (5mm или 3mm, која било боја)
  • 1× Отпорник (200Ω до 1000Ω — опсег од 300Ω до 1kΩ функционира добро)
  • Плоча за поврзување и DuPont поврзувачки жици
  • USB кабел за програмирање и напојување

Една важна забелешка за LED диодата: подолгиот крак е анодата (позитивен), а пократкиот крак — или страната со рамниот раб на пластичното куќиште — е катодата (негативен). Ако ова се замени, LED диодата едноставно нема да светне, затоа проверете двојно пред да вклучите.

За вредноста на отпорникот, транскриптот ја објаснува математиката на (во видеото на 03:49): типична LED диода има пад од околу 2V и бара приближно 10mA струја. Со напојување од 5V, преостанатите 3V мора да се намалат преку отпорникот, давајќи R = V/I = 3V / 0.01A = 300Ω. Во пракса, сè од 300Ω до 1000Ω ќе функционира — повисоките вредности само произведуваат потемна LED диода. За затемнување, ова е всушност во ред, бидејќи и онака ја менувате осветленоста.

Водич за поврзување

Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw

Поврзувањето е едноставно колку што може да биде. Анодата на LED диодата се поврзува преку отпорник со пин на Arduino што поддржува PWM — во овој проект, пин 3. Катодата се поврзува со земја.

Зошто конкретно пин 3? Бидејќи не сите пинови на Arduino поддржуваат PWM. На повеќето Arduino плочи, пиновите што поддржуваат PWM се означени со симболот тилда (~) — обично пиновите 3, 5, 6, 9, 10 и 11 на Uno. Ако користите пин без PWM, analogWrite() нема да произведе променлив излез; LED диодата едноставно ќе биде вклучена или исклучена.

Поврзете го колото на следниов начин:

  1. Вметнете ја LED диодата во плочата за поврзување, забележувајќи кој крак е анодата (подолгиот) и кој е катодата (пократката/рамната страна).
  2. Поврзете ја анодата на LED диодата со пин 3 на Arduino преку отпорникот.
  3. Поврзете ја катодата на LED диодата со GND пинот на Arduino.
  4. Приклучете го Arduino во вашиот компјутер преку USB.

Објаснување на кодот

Скицата за овој проект е базирана на класичниот Arduino пример „Fade“, со неколку измени. Наместо да ја објаснуваме секоја линија, да се фокусираме на деловите што ќе сакате да ги прилагодите за вашите сопствени експерименти.

Променливи конфигурабилни од корисникот

На почетокот на кодот, три променливи го контролираат целото однесување:

int led = 3;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 3;    // how many points to fade the LED by
  • led — Ова дефинира на кој пин е поврзана ЛЕД диодата. Стандардно е пин 3, но можете да го промените на кој било пин што поддржува PWM (означен со ~ на вашата плоча). Ако ја преместите ЛЕД диодата на друг пин, ажурирајте ја оваа вредност за да одговара.
  • brightness — Ова е тековното ниво на осветленост, кое се движи од 0 (исклучено) до 255 (целосна осветленост). Кодот го започнува на 0, но можете да го започнете на која било вредност во тој опсег.
  • fadeAmount — Ова е најинтересното за играње. Тоа контролира колку „чекори" на осветленост се преземаат во секој циклус. Мала вредност како 3 произведува бавно, постепено затемнување. Поголема вредност како 20 прави ЛЕД диодата да се затемнува и осветлува многу брзо. Транскриптот го демонстрира ова на (во видеото на 22:37) — промената од 5 на 20 драматично го забрзува ефектот.

Како функционира затемнувањето

Сржта на затемнувањето се случува во две линии внатре во loop():

analogWrite(led, brightness);
brightness = brightness + fadeAmount;

При секое поминување низ циклусот, тековната вредност на осветленост се запишува на ЛЕД диодата користејќи analogWrite(), потоа осветленоста се зголемува за fadeAmount. Функцијата analogWrite() користи PWM за симулација на аналоген напон — таа брзо го вклучува и исклучува пинот, а односот на времето вклучено наспроти времето исклучено ја одредува перципираната осветленост.

Кога осветленоста ќе достигне или 0 или 255, кодот ја менува насоката со превртување на знакот на fadeAmount:

if (brightness <= 0 || brightness >= 255) {
  fadeAmount = -fadeAmount;
}

Ова е она што ја прави ЛЕД диодата да се затемнува, потоа да се осветлува, потоа повторно да се затемнува — континуиран циклус на дишење. delay(30) на крајот од циклусот ја контролира вкупната брзина на анимацијата. Пократко одложување го забрзува затемнувањето; подолго одложување го забавува.

Експериментирање со вредностите

Две променливи ви даваат најголема контрола врз визуелниот ефект:

  • Зголемете го fadeAmount за побрзо, подраматично затемнување. Пробајте 10 или 20.
  • Намалете го fadeAmount за бавен, нежен ефект на дишење. Пробајте 1 или 2.
  • Прилагодете ја вредноста на delay() за да го промените темпото. Помалите одложувања го забрзуваат целиот циклус; поголемите одложувања го продолжуваат.

Комбинирањето на мал fadeAmount со кратко одложување произведува исклучително мазно, речиси органско затемнување — одлично за амбиентално осветлување. Голем fadeAmount со кратко одложување создава ефект на брзо пулсирање.

Демонстрација на проектот во живо

Откако кодот ќе се постави, ќе видите како ЛЕД диодата полека се осветлува од исклучено до целосна осветленост, потоа се затемнува назад, повторувајќи се бесконечно. Транскриптот го прикажува стандардното однесување на (во видеото на 22:25) — мазно затемнување со умерена брзина.

Кога fadeAmount ќе се промени на 20, ЛЕД диодата се затемнува и осветлува многу брзо — речиси како трепкање. Кога е поставено на 3, затемнувањето трае забележливо подолго, создавајќи опуштена, постепена транзиција. Ова е јасно демонстрирано во видеото на (во видеото на 23:02).

Убавината на овој проект е тоа што можете веднаш да го видите ефектот од вашите промени во кодот — не се потребни промени во поврзувањето, само уредете ги променливите и повторно поставете. Таа тесна повратна врска го прави одличен начин да изградите интуиција за тоа како PWM и тајмингот комуницираат.

Ако сакате да го продолжите ова со активирање на затемнувањето со копче наместо да го оставите да работи континуирано, тоа е опфатено во посебен туторијал — видете го делот за поврзани проекти подолу.

Поврзани проекти од ова видео

Поглавја

  • [00:00] Преглед на 10 Arduino ЛЕД проекти
  • [01:22] Вовед во курсот и потребните компоненти
  • [02:29] Разбирање на ЛЕД диодите: симболи, поларитет и типови
  • [03:49] Пресметување на вредноста на отпорникот за ЛЕД диодата користејќи го Омовиот закон
  • [05:53] Проект 1: Вклучување и исклучување на ЛЕД диода
  • [12:43] Проект 2: Контрола на ЛЕД диода со копче
  • [17:13] Проект 3: Вклучување/исклучување на ЛЕД диода со копче
  • [20:12] Проект 4: Затемнување на ЛЕД диода — преглед на кодот
  • [22:25] Демонстрација на затемнување и прилагодување на брзината на затемнување
  • [23:20] Проект 5: Затемнување на ЛЕД диода со активирање со копче
  • [27:32] Проект 6: Ефект на ЛЕД диоди на клацкалка
  • [30:47] Проект 7: Светло што оди со 5 ЛЕД диоди
  • [36:41] Проект 8: Светло што оди контролирано со копче
  • [42:25] Проект 9: Мерач на ниво на напон на ЛЕД диоди со потенциометар
  • [49:25] Проект 10: Arduino сообраќајно светло

Слики

Arduino wiring for LED  with resistor
Arduino wiring for LED with resistor
Arduino schematic for LED
Arduino schematic for LED
Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
936-Lessson 98-LED-4: Arduino code to fade the LED light
Јазик: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Работи што можеби ќе ви требаат

Ресурси и референци

Датотеки📁

Arduino библиотеки (zip)

Упатство за корисникот