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

Лекција 98-10: Ардуино семафор

Лекција 98-10: Ардуино семафор

Семафорите се еден од оние секојдневни системи за кои ретко размислуваме — сè додека не изградиме еден. Во овој проект, ќе користите Arduino за да симулирате вистинска секвенца на семафор: зелено вклучено, потоа жолто, потоа црвено, секое со свое конфигурирано времетраење, повторувајќи се бесконечно. Ова е совршен проект за почетници бидејќи ве учи на логика за секвенцијално темпирање, контрола на повеќе излези и врската помеѓу она што го пишувате во кодот и она што го гледате во физичкиот свет.

Семафор во реалниот живот со три бои

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

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

Најдобриот дел: целата работа функционира самостојно штом се вчита. Го програмирате Arduino еднаш од вашиот компјутер, потоа го напојувате од батерија или адаптер и работи засекогаш — не е потребен компјутер (во видеото на 12:27).

црвени, зелени и жолти LED диоди на плоча за проект за семафор
црвени, зелени и жолти LED диоди на плоча за проект за семафор

Како функционира семафорот

Семафорот е всушност само темпирана секвенца од три излези. Arduino вклучува една LED диода во еден момент, чека одреден број секунди, ја исклучува и преминува на следната. Циклусот потоа се повторува. Во примерот за темпирање од видеото, зеленото останува вклучено 3 секунди, жолтото 1 секунда, а црвеното 3 секунди — но сите овие се прилагодливи во кодот (во видеото на 49:44).

темпирање на семафор: црвено светло
темпирање на семафор: црвено светло
темпирање на семафор: жолто светло
темпирање на семафор: жолто светло
темпирање на семафор: зелено светло
темпирање на семафор: зелено светло

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

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

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

  • 1 × Arduino плоча (Uno, Nano или Mega — било што со најмалку 3 дигитални пина)
  • 3 × LED диоди (црвена, жолта/портокалова и зелена — различните бои го прават ефектот очигледен)
  • 3 × отпорници (300 Ω до 1 kΩ функционира добро; видеото користи 1 kΩ)
  • 1 × плоча за поврзување
  • Поврзувачки жици
  • Опционално: литиум-јонска батерија или 5 V адаптер за напојување за самостојно работење

Видеото препорачува користење на три јасно обоени LED диоди за ефектот на семафорот веднаш да биде видлив — инаку ќе треба да ги означите (во видеото на 02:04).

Разбирање на ограничувањето на струјата кај LED диодите

Секоја LED диода бара отпорник за ограничување на струјата во серија. Еве зошто: LED диодата има речиси фиксен напон на пропуштање (типично околу 2 V за стандардни 5 mm LED диоди), и ако ја поврзете директно на 5 V, струјата ќе се зголеми и ќе ја уништи. Отпорникот го апсорбира вишокот напон.

Користејќи го Омовиот закон, ако LED диодата губи 2 V и напојувањето е 5 V, тогаш 3 V мора да паднат преку отпорникот. Со целна струја од околу 10 mA, вредноста на отпорникот изнесува приближно 300 Ω (во видеото на 04:41). Во пракса, било што од 300 Ω до 1 kΩ ќе функционира — повисоките вредности едноставно ја прават LED диодата помрачна.

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

Шема на Arduino семафор
Шема на Arduino семафор
Поврзување на Arduino LED семафор
Поврзување на Arduino LED семафор

Секоја LED диода е поврзана идентично: анодата (подолгиот крак) се поврзува со дигитален пин на Arduino, а катодата (пократкиот крак, рамната страна на телото на LED диодата) се поврзува преку отпорник со земја.

Во поврзувањето од видеото, црвената LED диода се поврзува со пин 2, жолтата/портокаловата LED диода со пин 3, а зелената LED диода со пин 4 (во видеото на 50:50). Сите три отпорници делат заедничка земјена шина на плочата за поврзување. Редоследот на боите на плочата не е важен — важно е броевите на пиновите во вашиот код да се совпаѓаат со пиновите што всушност сте ги користеле.

Еден корисен совет од видеото: отпорникот може да се постави на која било страна од LED диодата. Може да го поставите помеѓу пинот на Arduino и анодата на LED диодата, или помеѓу катодата на LED диодата и масата — електрично е исто (во видеото на 51:52).

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

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

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

const int greenLED = 4;
const int yellowLED = 3;
const int redLED = 2;

Следно доаѓаат константите за временските интервали. Тие контролираат колку долго останува вклучено секое светло, во милисекунди. Видеото стандардно користи 5000 ms за зелено, 1000 ms за жолто и 5000 ms за црвено — но за време на демонстрацијата овие беа сменети на 3 s / 1 s / 3 s, а подоцна на 10 s / 3 s / 10 s (во видеото на 56:27):

const int greenOnTime = 5000;
const int yellowOnTime = 1000;
const int redOnTime = 5000;

За да го промените ритамот на вашето сообраќајно светло, само уредете ги овие три вредности. Сакате бавна, реалистична раскрсница? Пробајте 10000, 3000, 10000. Сакате брза демонстрација? Пробајте 1000, 300, 1000.

Внатре во loop(), секвенцата е едноставна: вклучи зелено, почекај, исклучи зелено; вклучи жолто, почекај, исклучи жолто; вклучи црвено, почекај, исклучи црвено; потоа врати се на зелено. Серискиот монитор ја печати секоја промена на состојбата за да можете да потврдите дека временските интервали се совпаѓаат со она што го очекувате.

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

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

Серискиот монитор го отсликува ова во текст — „green LED on“, „green off“, „yellow on“, и така натаму — што е одличен начин да потврдите дека вашите временски вредности функционираат како што е предвидено. Кога ќе бидете подготвени да го извршите без кабел, исклучете го USB и поврзете литиум-јонска батерија или адаптер од 5 V; Arduino ќе продолжи да го извршува циклусот без компјутер (во видеото на 56:11).

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

Поглавја

  • [00:00] Преглед на 10-те Arduino LED проекти
  • [01:22] Вовед во Arduino курс чекор по чекор
  • [02:29] Што е LED диода: симбол, анода и катода
  • [03:49] Пресметување на отпорникот за ограничување на струјата на LED диодата
  • [49:25] Вовед во проектот сообраќајно светло
  • [49:44] Објаснување на временските интервали на сообраќајното светло
  • [50:34] Шема за поврзување на сообраќајното светло
  • [52:13] Објаснување на кодот за сообраќајното светло
  • [54:32] Демонстрација во живо со сериски монитор
  • [55:30] Промена на временските вредности
  • [56:11] Извршување на сообраќајното светло на батерија

Слики

traffic light timing: green light
traffic light timing: green light
временски распоред на сообраќајно светло: жолто светло
временски распоред на сообраќајно светло: жолто светло
временски распоред на сообраќајно светло: црвено светло
временски распоред на сообраќајно светло: црвено светло
Шема на Arduino сообраќајно светло
Шема на Arduino сообраќајно светло
traffic_lights
traffic_lights
Поврзување на Arduino LED сообраќајни светла
Поврзување на Arduino LED сообраќајни светла
црвени, зелени и жолти LED диоди на експериментална плоча за проект за сообраќајно светло
црвени, зелени и жолти LED диоди на експериментална плоча за проект за сообраќајно светло
942-Lessson 98-LED-10: Arduino code traffic light
Јазик: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

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

Датотеки📁

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

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