Pretraži kod

Lekcija 98-10: Arduino semafor

Lekcija 98-10: Arduino semafor

Semaforska svjetla su jedan od onih svakodnevnih sistema o kojima rijetko razmišljamo — sve dok ne napravimo jedan. U ovom projektu koristit ćete Arduino za simulaciju stvarnog slijeda semaforskih svjetala: zeleno uključeno, zatim žuto, zatim crveno, svako u svom podesivom trajanju, ponavljajući se beskonačno. Ovo je savršen početnički projekat jer podučava logiku sekvencijalnog tajminga, kontrolu više izlaza i odnos između onoga što napišete u kodu i onoga što vidite u fizičkom svijetu.

Semaforsko svjetlo u stvarnom životu s tri boje

Osim školske demonstracije, logika tajminga koju ovdje naučite pojavljuje se svuda:

  • Izrada realističnog modela semaforskog svjetla za maketu željeznice ili dioramu
  • Kreiranje sistema tajmiranih indikatora za radionicu ili garažu (npr. signali "sigurno za ulazak" / "čekaj")
  • Učenje osnova za signale pješačkog prelaza s fazama pokrenutim dugmetom
  • Prototipiranje tajmiranog slijeda releja za industrijske ili kućne automatizacijske zadatke
  • Podučavanje djece o sekvenciranju, tajmingu i elektronici pomoću poznatog, prepoznatljivog predmeta

Najbolji dio: cijela stvar radi samostalno nakon što je učitana. Programirate Arduino jednom s računara, zatim ga napajate iz baterije ili adaptera i radi zauvijek — nije potreban PC (u videu na 12:27).

crvena, zelena i žuta LED dioda na breadboardu za projekat semaforskog svjetla
crvena, zelena i žuta LED dioda na breadboardu za projekat semaforskog svjetla

Kako semaforsko svjetlo funkcioniše

Semaforsko svjetlo je zapravo samo tajmirani slijed od tri izlaza. Arduino uključuje jednu LED diodu u jednom trenutku, čeka određeni broj sekundi, isključuje je i prelazi na sljedeću. Ciklus se zatim ponavlja. U primjeru tajminga iz videa, zeleno ostaje uključeno 3 sekunde, žuto 1 sekundu, a crveno 3 sekunde — ali sve se to može podesiti u kodu (u videu na 49:44).

tajming semaforskog svjetla: crveno svjetlo
tajming semaforskog svjetla: crveno svjetlo
tajming semaforskog svjetla: žuto svjetlo
tajming semaforskog svjetla: žuto svjetlo
tajming semaforskog svjetla: zeleno svjetlo
tajming semaforskog svjetla: zeleno svjetlo

Razlog zašto slijed djeluje realistično je taj što trajanja odražavaju stvarni tok saobraćaja: zeleno i crveno traju duže jer vozilima treba vremena da prođu kroz raskrsnicu, dok je žuto kratko jer je samo upozorenje na tranziciju. Možete ih podesiti da odgovaraju bilo kojem scenariju koji želite.

Hardver i komponente

Lista dijelova za ovaj projekat je minimalna:

  • 1 × Arduino ploča (Uno, Nano ili Mega — bilo šta s najmanje 3 digitalna pina)
  • 3 × LED diode (crvena, žuta/narandžasta i zelena — različite boje čine efekat očiglednim)
  • 3 × otpornika (300 Ω do 1 kΩ radi dobro; video koristi 1 kΩ)
  • 1 × breadboard
  • Jumper žice
  • Opcionalno: litijum-jonska baterija ili 5 V adapter za napajanje za samostalan rad

Video preporučuje korištenje tri jasno obojene LED diode kako bi efekat semaforskog svjetla bio odmah vidljiv — inače biste ih morali označiti (u videu na 02:04).

Razumijevanje ograničavanja struje LED diode

Svakoj LED diodi je potreban otpornik za ograničavanje struje u seriji. Evo zašto: LED dioda ima gotovo fiksni napon naprijed (obično oko 2 V za standardne LED diode od 5 mm), i ako je spojite direktno na 5 V, struja će skočiti i uništiti je. Otpornik apsorbira višak napona.

Koristeći Ohmov zakon, ako LED dioda pada 2 V, a napajanje je 5 V, tada 3 V mora pasti na otporniku. Uz ciljanu struju od oko 10 mA, vrijednost otpornika iznosi otprilike 300 Ω (u videu na 04:41). U praksi, bilo šta od 300 Ω do 1 kΩ će raditi — veće vrijednosti jednostavno čine LED diodu tamnijom.

Vodič za povezivanje

Šema Arduino semaforskog svjetla
Šema Arduino semaforskog svjetla
Povezivanje Arduino LED semaforskih svjetala
Povezivanje Arduino LED semaforskih svjetala

Svaka LED dioda je povezana identično: anoda (duža nožica) spaja se na digitalni pin Arduina, a katoda (kraća nožica, ravna strana tijela LED diode) spaja se preko otpornika na masu.

U povezivanju iz videa, crvena LED dioda spaja se na pin 2, žuta/narandžasta LED dioda na pin 3, a zelena LED dioda na pin 4 (u videu na 50:50). Sva tri otpornika dijele zajedničku šinu za masu na breadboardu. Redoslijed boja na breadboardu nije važan — važno je da brojevi pinova u vašem kodu odgovaraju pinovima koje ste stvarno koristili.

Jedan koristan savjet iz videa: otpornik može ići na bilo koju stranu LED diode. Možete ga postaviti između Arduino pina i anode LED diode, ili između katode LED diode i uzemljenja — električno je isto (u videu na 51:52).

Objašnjenje koda

Kompletan program je dostupan ispod članka. Ovdje ćemo se fokusirati na dijelove koje ćete htjeti prilagoditi.

Na vrhu skice, tri definicije pinova mapiraju svaku LED diodu na digitalni pin. Ako ste svoje LED diode povezali na druge pinove, promijenite ove vrijednosti:

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

Zatim dolaze vremenske konstante. One kontroliraju koliko dugo svako svjetlo ostaje uključeno, u milisekundama. Video koristi 5000 ms za zeleno, 1000 ms za žuto i 5000 ms za crveno po defaultu — ali tokom demonstracije ove su promijenjene na 3 s / 1 s / 3 s, a kasnije na 10 s / 3 s / 10 s (u videu na 56:27):

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

Da promijenite ritam svog semafora, samo uredite ove tri vrijednosti. Želite sporo, realistično raskrižje? Pokušajte 10000, 3000, 10000. Želite brzu demonstraciju? Pokušajte 1000, 300, 1000.

Unutar loop(), sekvenca je jednostavna: uključi zeleno, čekaj, isključi zeleno; uključi žuto, čekaj, isključi žuto; uključi crveno, čekaj, isključi crveno; zatim se vrati na zeleno. Serijski monitor ispisuje svaku promjenu stanja tako da možete provjeriti da se tajming poklapa s onim što očekujete.

Demonstracija uživo

Kada se kod učita, Arduino samostalno izvršava ciklus. U videu, zelena LED dioda svijetli prva, zatim nakon svog trajanja žuta svijetli kratko, zatim crvena, i ciklus se odmah ponovo pokreće (u videu na 55:20).

Serijski monitor prati ovo u tekstu — "green LED on", "green off", "yellow on", i tako dalje — što je odličan način da potvrdite da vaše vremenske vrijednosti rade kako je predviđeno. Kada budete spremni da ga pokrenete bez kabla, isključite USB i povežite litijum-jonsku bateriju ili 5 V adapter; Arduino će nastaviti ciklus bez računara (u videu na 56:11).

Povezani projekti iz ovog videa

Poglavlja

  • [00:00] Pregled 10 Arduino LED projekata
  • [01:22] Uvod u Arduino kurs korak po korak
  • [02:29] Šta je LED dioda: simbol, anoda i katoda
  • [03:49] Izračunavanje otpornika za ograničavanje struje LED diode
  • [49:25] Uvod u projekat semafora
  • [49:44] Objašnjenje tajminga semafora
  • [50:34] Šema povezivanja za semafor
  • [52:13] Objašnjenje koda za semafor
  • [54:32] Demonstracija uživo sa serijskim monitorom
  • [55:30] Promjena vremenskih vrijednosti
  • [56:11] Pokretanje semafora na baterijsko napajanje

Slike

traffic light timing: green light
traffic light timing: green light
tajming semafora: žuto svjetlo
tajming semafora: žuto svjetlo
tajming semafora: crveno svjetlo
tajming semafora: crveno svjetlo
Šema Arduino semafora
Šema Arduino semafora
traffic_lights
traffic_lights
Ožičenje Arduino LED semafora
Ožičenje Arduino LED semafora
crvene, zelene i žute LED diode na breadboardu za projekat semafora
crvene, zelene i žute LED diode na breadboardu za projekat semafora
942-Lessson 98-LED-10: Arduino code traffic light
Jezik: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Datoteke📁

Arduino biblioteke (zip)

Korisnički priručnik