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.
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).
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).
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
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
- Lekcija 98-1: Kako uključiti i isključiti LED diodu s Arduinom
- Lekcija 98-2: Kako uključiti i isključiti LED diodu pomoću push dugmeta s Arduinom
- Lekcija 98-3: Kako uključiti/isključiti toggle LED diodu pomoću push dugmeta s Arduinom
- Lekcija 98-4: Postepeno paljenje i gašenje LED svjetla pomoću Arduina: Kontrola svjetline
- Lekcija 98-5: Postepeno paljenje i gašenje svjetla kada se pritisne dugme pomoću Arduina
- Lekcija 98-6: Seesaw LED igra s Arduinom
- Lekcija 98-7: Walking Light pomoću Arduina i 5 LED dioda
- Lekcija 98-8: Walking Light s push dugmetom i LED diodama s Arduinom
- Lekcija 98-9: LED mjerač napona pomoću Arduina ili walking light s potenciometrom
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
This code has not been parsed yet. Please return to the admin panel to parse it.
Stvari koje bi vam mogle zatrebati
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Resursi i reference
-
DokumentacijaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Eksterno
-
Eksterno
-
Eksterno
Datoteke📁
Arduino biblioteke (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Korisnički priručnik
-
SunFounder 3-u-1 Arduino Smart Car priručnik za sastavljanjeOvaj dokument prikazuje korak po korak sastavljanje SunFounder 3-u-1 Arduino Smart Car-a
SunFounder_car_assembly_manual.pdf1.20 MB