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

Лекција 98-5: Избледување на светло кога е притиснато копче со помош на Arduino

Лекција 98-5: Избледување на светло кога е притиснато копче со помош на Arduino

Во оваа лекција ќе изградите светло што се намалува по команда: притиснете копче и LED диодата почнува со целосна осветленост, потоа непречено се намалува до исклучено. Ова е еден од најкорисните шаблони за почетници во Arduino бидејќи комбинира дигитален влез (копчето) со PWM аналоген излез (осветленоста на LED диодата), и ве учи како да ја контролирате брзината и мазноста на промената наместо само да вклучувате и исклучувате нешто.

LED with resistor on breadboard connected to Arduino with a push button
LED with resistor on breadboard connected to Arduino with a push button

Намалувањето по команда се појавува насекаде во реалните производи. Еве неколку практични начини како можете да го искористите она што ќе го научите овде:

  • Индикаторски светла за меко исклучување — наместо ламбата нагло да се исклучи, таа нежно се намалува кога ќе притиснете копче, што изгледа многу попрофесионално на апарати и 3D-печатени куќишта.
  • Режим на спиење / подготвеност — притиснете копче и светлата статусна LED диода се намалува до црно за да не ве вознемирува ноќе, додека колото останува напојано.
  • Сценско или моделско осветлување со „избледување до црно" — едно копче активира непречено намалување на LED лента или панел наместо нагло прекинување.
  • Повратна информација за заштеда на батерија — моментално притискање на копче ви дава светло потврдно трепкање што се намалува, така што LED диодата е целосно осветлена само кратко време.
  • Интерактивна уметност и реквизити — ефект на „издишување" активиран со допир, идеален за косплеј, диорами или музејски изложби.

Основната идеја е едноставна: копчето му кажува на Arduino „започни со намалување сега", а Arduino ја намалува осветленоста на LED диодата од 255 (целосна) до 0 (исклучена) во мали чекори. Бидејќи чекорите се мали и се случуваат брзо, вашето око гледа непречено намалување наместо скок.

Ако никогаш претходно не сте намалувале LED диода, основната контрола на осветленоста е опфатена во Лекција 98-4: Намалување на LED светло со Arduino: Контрола на осветленост. Оваа лекција се надоврзува директно на таа основа со додавање на копче како активатор.

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

330_ohm_resistor
330_ohm_resistor

Ова е многу евтина изработка — сè овде е стандарден материјал од почетнички комплет:

  • Arduino плоча (Uno, Nano, Mega или која било компатибилна плоча)
  • Една LED диода (5 mm или 3 mm, која било боја)
  • Еден прекинувач со копче (моментален, 4-пински тактилен тип функционира добро)
  • Еден отпорник за LED диодата — било каде од 200 Ω до 1000 Ω (класичниот 220 Ω или 330 Ω е совршен)
  • Плоча за поврзување и DuPont жици за поврзување
  • USB кабел за програмирање (и батерија или 5 V адаптер ако сакате да работи без кабел)

Кратка забелешка за отпорникот на LED диодата: LED диодата бара приближно 2 V преку неа и околу 10 mA струја. Со напојување од 5 V, отпорникот мора да ги намали преостанатите 3 V, така што Омовиот закон дава околу 300 Ω. Било што од 300 Ω до 1000 Ω ќе работи — повисоките вредности само ја прават LED диодата потемна. Користењето на отпорник не е опционално; без него LED диодата ќе влече премногу струја и ќе изгори.

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

Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch

Поврзувањето е намерно минимално. Анодата на LED диодата (подолгата нога) се поврзува преку отпорникот со дигиталниот пин 3, а нејзината катода (пократката нога, со рамната страна на куќиштето) оди на маса. Копчето се поврзува помеѓу дигиталниот пин 2 и маса — не е потребен надворешен pull-up отпорник бидејќи кодот го овозможува внатрешниот pull-up на Arduino.

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

За копчето, ако користите 4-пински тактилен прекинувач, запомнете дека пиновите се внатрешно спарени: два од четирите пина се секогаш поврзани заедно. Користете мултиметар во режим на континуитет за да најдете пар што ѕвони кога е притиснат, потоа користете еден пин од секоја страна. Едната страна оди на пин 2, другата на маса.

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

Скицата е кратка, и речиси сè што би сакале да промените се наоѓа во неколку линии на врвот. Еве ги деловите што може да ги конфигурира корисникот:

const int pushButtonPin = 2;//пинот на кој е поврзан копчето
const int LEDPin = 3;//пинот на кој е поврзана ЛЕД диодата
const int fadeAmount = 10;    // за колку точки да се намалува осветленоста на ЛЕД диодата
const int fadeSpeed = 5;//време на намалување во милисекунди. колку е помала вредноста, толку е побрзо намалувањето

pushButtonPin и LEDPin едноставно му кажуваат на Arduino на кои пинови сте ги поврзале работите. Ако го преместите копчето на пин 4 или ЛЕД диодата на пин 9 (пин што поддржува PWM), само сменете ги овие два броја за да одговараат на вашето поврзување. Имајте предвид дека пинот на ЛЕД диодата мора да поддржува PWM — на Uno тоа значи пиновите 3, 5, 6, 9, 10 или 11 — бидејќи намалувањето бара analogWrite().

fadeAmount контролира колку е голем секој чекор на осветленоста. Осветленоста се движи од 0 до 255, така што fadeAmount од 10 значи дека ЛЕД диодата се намалува во приближно 25 чекори. Поголем број го прави намалувањето погрубо и побрзо; помал број го прави помазно и побавно.

fadeSpeed е доцнењето во милисекунди помеѓу секој чекор. Ова е единствениот најважен параметар за тоа како ефектот се чувствува. Вредност од 5 ms дава брзо, живо намалување; вредност од 30 ms или повеќе дава бавно, луксузно затемнување. Комбинирани со fadeAmount, овие две вредности ви овозможуваат да го прилагодите намалувањето точно на карактерот што го сакате.

Исто така, вреди да се знае за една внатрешна променлива:

int brightness = 255;    // колку е светла ЛЕД диодата
int pushButtonStatus = 0; // вредност притисната од пинот 2

brightness започнува од 255, што значи дека ЛЕД диодата започнува со целосна осветленост секој пат кога ќе го притиснете копчето. Ако сакате намалувањето да започне од потемна точка — да речеме, половина осветленост — сменете го ова на 128.

Самата логика функционира вака: циклусот го чита копчето. Ако е притиснато (LOW, поради внатрешниот pull-up), while циклус се извршува сè додека осветленоста е над нула. Внатре во тој циклус Arduino ја запишува тековната осветленост на ЛЕД диодата, го одзема fadeAmount, чека fadeSpeed милисекунди и повторува. Кога копчето не е притиснато, ЛЕД диодата едноставно се запишува на 0 и останува исклучена.

Еден важен детал: внатрешниот pull-up значи дека пинот чита HIGH кога копчето не е притиснато и LOW кога е притиснато. Затоа кодот проверува за LOW за да детектира притискање. Ако некогаш преминете на надворешен pull-down отпорник, ќе треба да ја смените таа споредба на HIGH.

Жив проект и демонстрација

Откако ќе се постави, однесувањето е веднаш видливо и задоволувачко. Притиснете го копчето и ЛЕД диодата скока на целосна осветленост, потоа видливо се намалува до ништо во период што вие го контролирате. Отпуштете го копчето и ЛЕД диодата се исклучува; притиснете повторно и намалувањето започнува повторно од целосна осветленост.

Во видеото намалувањето е демонстрирано со неколку поставки за да можете да ја слушнете и видите разликата. Со fadeAmount = 20 намалувањето е брзо и грубо — достигнува нула во неколку видливи чекори. Намалувањето на fadeAmount = 10 значително го измазнува, а одењето на fadeAmount = 3 го прави намалувањето значително подолго и изгледа речиси континуирано. Вредноста fadeSpeed има подеднакво драматичен ефект: поставувањето на 1 ms го прави намалувањето речиси моментално, додека поголемите вредности го продолжуваат.

Пробајте го овој експеримент: поставете fadeAmount = 5 и fadeSpeed = 30. Ќе добиете бавно, нежно затемнување што изгледа како светло што заспива. Потоа поставете fadeAmount = 50 и fadeSpeed = 1 за тврдо, брзо исклучување. Ниту едното не е „погрешно" — сè е за расположението што го сакате.

Однесувањето на префрлување на истото копче е опфатено одделно во Лекција 98-3: Како да вклучите/исклучите LED диода со префрлување користејќи копче со Arduino, а поедноставната верзија со притискање за осветлување е во Лекција 98-2: Како да вклучите и исклучите LED диода користејќи копче со Arduino.

Бидејќи намалувањето се активира со моментален контакт, истото коло е природно погодно за управување со реле или MOSFET наместо со ЛЕД диода — можете да намалувате 12 V ламба, меко стартување на мотор или загревање на грејно тело. Копчето е само тригерот; она што го намалувате зависи од вас.

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

Поглавја

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

Слики

Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
LED диода со отпорник на експериментална плоча поврзани на Arduino со копче
LED диода со отпорник на експериментална плоча поврзани на Arduino со копче
937-Lessson 98-LED-5: Arduino code to fade the LED when push button is pressed
Јазик: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

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

Датотеки📁

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

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