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

Лекција 98-8: Светло за пешаци со копче и LED диоди со Arduino

Лекција 98-8: Светло за пешаци со копче и LED диоди со Arduino

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

5 leds on breadboard with push button shown connected to Arduino UNO
5 leds on breadboard with push button shown connected to Arduino UNO

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

  • Избирач на мени на уред каде секое притискање ја означува следната опција.
  • Секвенцијален индикатор за чекори за машина или процес (чекор 1, чекор 2, чекор 3...).
  • Приказ на резултат или ниво што го поместувате рачно со копче.
  • Индикатор за „следен канал“ или „следен режим“ за контролер за осветлување.
  • Едноставна игра или квиз со звучник каде играчите наизменично ја осветлуваат следната ламба.
  • Секвенционер за релеа или товари каде секое притискање го активира следниот излез по ред.

Клучната предност во однос на автоматско светло што работи е контролата: ништо не се случува додека не притиснете, така што светлото напредува само кога вие одлучувате. Видеото исто така забележува дека истата идеја за вклучување и секвенционирање може да управува со реле за вклучување на наизменично светло или контрола на мотор, не само LED диоди (во видеото на 19:52).

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

Списокот на делови е краток и евтин:

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

Кратка забелешка за LED диодите: катодата е пократкиот крак и страната со рамниот раб, додека анодата е подолгиот крак (во видеото на 03:13). Вредноста на отпорникот не е критична — повисок отпорник едноставно ја прави LED диодата потемна, така што сè од околу 300 Ω до 1000 Ω ќе работи добро (во видеото на 05:33).

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

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button

Поврзувањето е во суштина исто како кај стандардно светло што оди со пет LED диоди, со додадено едно копче. Анодата на секоја LED диода се поврзува со свој Arduino пин, а секоја катода се поврзува преку свој отпорник со заедничката земја на плочата за поврзување. Во овој проект LED диодите се поврзани на пиновите 3, 4, 5, 6 и 7 (во видеото на 31:37). Копчето е поставено на плочата за поврзување со едниот крак на земја, а другиот крак на пин 2 — истиот пин што кодот го користи за копчето (во видеото на 37:04).

Бидејќи кодот го овозможува внатрешниот pull-up отпорник на Arduino, не е потребен надворешен отпорник на копчето. Кога копчето не е притиснато, пинот чита HIGH, а кога ќе го притиснете, пинот се повлекува кон земја и чита LOW (во видеото на 14:02).

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

Целосната програма е достапна под овој напис. Овде се фокусираме на деловите што всушност ќе сакате да ги менувате.

На почетокот на скицата, секоја LED диода и копчето се доделуваат на пин. Ова е местото каде го прилагодувате проектот за да одговара на вашето поврзување:

const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;

int LED_ON = LED1; // which LED is currently lit

Променливата LED_ON е срцето на проектот. Таа памти која LED диода е моментално осветлена, почнувајќи од LED1. Секој пат кога ќе го притиснете копчето, кодот ја поместува LED_ON на следната LED диода во низата и ја исклучува претходната, така што само една LED диода е осветлена во секој момент.

Исто така има мало доцнење по секое притискање:

delay(200); // debounce / give the user time between presses

Оваа пауза од 200 милисекунди спречува едно физичко притискање да се регистрира како повеќе притискања. Ако вашиот прст трепери или копчето ви изгледа премногу чувствително, зголемете го овој број; ако сакате побрз одговор, намалете го. Имајте на ум дека поставувањето премногу ниско може да предизвика светлото неочекувано да прескокне напред (во видеото на 41:20).

Главната логика се наоѓа во loop(). Таа го чита копчето и само кога копчето е притиснато (читање LOW) го поместува светлото. Секвенцата користи синџир од if / else if проверки за да се движи од LED1 на LED2 на LED3, и така натаму, враќајќи се назад на LED1 по последното. Ако сакате да ја промените насоката или редоследот на LED-ите, ова е блокот што треба да се уреди — едноставно прераспределете кој пин следи по кој.

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

По качувањето на кодот, притискањето на копчето го осветлува првиот LED; отпуштањето го остава тој LED вклучен. Следното притискање го поместува светлото на вториот LED, потоа третиот, четвртиот и петтиот, а следното притискање се враќа на првиот — континуирана ротација (во видеото на 40:22).

Убав несакан ефект од доцнењето од 200 милисекунди е тоа што ако го држите копчето притиснато, светлото продолжува да се движи само по себе на секои 200 милисекунди, ефективно претворајќи го проектот во автоматско движечко светло додека копчето е задржано (во видеото на 42:07). Отпуштете го копчето и тоа запира на тековниот LED. Ова ви дава и рачно чекорување и работа без раце од едно копче.

Ако повеќе би сакале светлото да работи автоматски без никакво копче, тоа е посебна изработка. Автоматската верзија е опфатена во Лекција 98-7: Движечко светло со Arduino и 5 LED-и.

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

Поглавја

  • [00:00] Преглед на 10-те Arduino LED проекти
  • [01:22] Вовед во Arduino курс чекор по чекор
  • [02:29] Разбирање на LED-и: симболи, поларитет и пинови
  • [03:49] Пресметување на отпорникот за ограничување на струјата на LED
  • [30:47] Движечко светло со 5 LED-и: поврзување и принцип
  • [32:52] Код за движечко светло: пинови, тајминг и циклус
  • [36:41] Поместување на светлото со копче
  • [37:44] Движечко светло со копче: преглед на кодот
  • [40:22] Демонстрација и прилагодување на доцнењето при притискање
  • [57:16] Завршни забелешки и заклучок на курсот

Слики

wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
5 LED диоди на експериментална плоча со копче прикажани поврзани на Arduino UNO
5 LED диоди на експериментална плоча со копче прикажани поврзани на Arduino UNO
940-Lessson 98-LED-8: Arduino code walking LED light with push button
Јазик: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

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

Датотеки📁

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

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