Лекција 98-8: Светло за пешаци со копче и LED диоди со Arduino
Овој проект ви покажува како да изградите „светло што оди“ кое напредува еден чекор секој пат кога ќе притиснете копче. Наместо светло што работи на свој тајмер, добивате директна, тактилна контрола: секое притискање ја поместува осветлената LED диода една позиција напред, а по последната LED диода се враќа назад на првата. Ова е еден од најкорисните градежни блокови во учењето на Arduino, бидејќи ве учи како да комбинирате дигитален влез (копчето) со ротирачка состојбена машина (која LED диода е моментално осветлена) — шема што постојано ќе ја користите.
Откако ќе ја разберете оваа шема, истата логика ја напојува огромна низа реални проекти. Еве неколку практични идеи што можете да ги изградите со неа:
- Избирач на мени на уред каде секое притискање ја означува следната опција.
- Секвенцијален индикатор за чекори за машина или процес (чекор 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).
Водич за поврзување
Поврзувањето е во суштина исто како кај стандардно светло што оди со пет 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-и.
Поврзани проекти од ова видео
- Лекција 98-1: Како да вклучите и исклучите LED со Arduino
- Лекција 98-2: Како да вклучите и исклучите LED со помош на копче со Arduino
- Лекција 98-3: Како да вклучите/исклучите LED со прекинувач со помош на копче со Arduino
- Лекција 98-4: Затемнување на LED светло со Arduino: Контрола на осветленост
- Лекција 98-5: Затемнување на светло кога е притиснато копче со Arduino
- Лекција 98-6: Игра со LED клацкалка со Arduino
- Лекција 98-7: Движечко светло со Arduino и 5 LED-и
- Лекција 98-9: LED мерач на ниво на напон со Arduino или движечко светло со потенциометар
- Лекција 98-10: Arduino сообраќајно светло
Поглавја
- [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] Завршни забелешки и заклучок на курсот
This code has not been parsed yet. Please return to the admin panel to parse it.
Работи што можеби ќе ви требаат
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Ресурси и референци
-
ДокументацијаDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Надворешно
-
Надворешно
-
Надворешно
Датотеки📁
Arduino библиотеки (zip)
-
SunFounder's 3-in-1 Smart Car learning kit изворен код
3in1-kit-main-v2.zip12.80 MB
Упатство за корисникот
-
Прирачник за склопување на SunFounder 3-во-1 Arduino паметен автомобилОвој документ покажува чекор по чекор склопување на SunFounder 3-во-1 Arduino паметен автомобил
SunFounder_car_assembly_manual.pdf1.20 MB