Oglas

Arduino semafor je mali zabavni projekt koji možete ugraditi ispod jednog sata. Evo kako sami napraviti Arduino i kako promijeniti krug za naprednu varijaciju.

Ako biste radije gledali ovo kao udžbenik kao video, pokrili smo:

Što trebate za izgradnju kontrolera semafora Arduino

Osim osnovnog Arduina, trebat će vam:

  • Otpornik 1 x 10k-ohm
  • 1 x sklopka tipki
  • Otpornici 6 x 220 ohma
  • Ploča za kruh
  • Spajanje žica
  • Crvene, žute i zelene LED

Gotovo svaki Arduino će raditi na ovom projektu pod uvjetom da ima dovoljno igara. Obavezno pročitajte naše Arduino vodič za kupnju Vodič za kupnju Arduinoa: Koji odbor trebate dobiti?Postoji toliko mnogo vrsta Arduino ploča vani da bi vam bilo oprošteno što ste zbunjeni. Koje biste trebali kupiti za svoj projekt? Pomozite nam s ovim vodičem za kupovinu Arduino! Čitaj više ako niste sigurni koji vam model treba. Te dijelove možda već imate u svom Arduino starter kit Što je u vašem Arduino Starter Kit-u? [Arduino početnici]Suočeni s kutijom punom elektroničkih komponenti, lako je biti preopterećen. Evo vodiča o tome što ćete točno naći u svom kompletu.

instagram viewer
Čitaj više .

Arduino semafor: Osnove

Počnimo s malim. Osnovni, jedinstveni semafor je dobro mjesto za početak. Evo kruga:

Dijagram kruga za osnovni semafor Arduino

Spojite anodu (dugu nogu) svakog LED-a na digitalne igle osam, devet i deset (putem otpornika od 220 ohma). Spojite katode (kratka noga) s Arduinovim tlom.

Šifra za semafor Arduino

Započnite definiranjem varijabli kako biste svjetlima mogli odgovarati po imenu, a ne broju. Započnite novi Arduino projekt i započnite s ovim linijama:

int crvena = 10; int žuta = 9; int zelena = 8;

Zatim dodajmo funkciju za postavljanje gdje ćete konfigurirati crvene, žute i zelene LED za izlaz. Budući da ste stvorili varijable za predstavljanje brojeva pinova, sada možete umjesto njih uputiti nazive:

void setup () {pinMode (crveni, OUTPUT); pinMode (žuto, OUTPUT); pinMode (zelena, OUTPUT); }

pinMode funkcija konfigurira Arduino da koristi zadani pin kao izlaz. To morate učiniti kako bi vaše LED diode uopće radile. Sada za stvarnu logiku semafora. Evo koda koji vam treba. Dodajte ovo ispod svoje varijable definicije i funkcije postavljanja:

void petlja () {changeLights (); kašnjenje (15000); } void changeLights () {// zeleno isključeno, žuto uključeno 3 sekunde digitalWrite (zeleno, NISKO); digitalWrite (žuto, VISOKO); kašnjenje (3000); // isključiti žuto, zatim upaliti crveno na 5 sekundi digitalWrite (žuto, NISKO); digitalWrite (crveno, VISOKO); kašnjenje (5000); // crveno i žuto uključeno 2 sekunde (crveno je već uključeno) digitalWrite (žuto, VISOKO); kašnjenje (2000); // isključite crveno i žuto, a zatim uključite zeleno digitalWrite (žuto, NISKO); digitalWrite (crveno, NISKO); digitalWrite (zeleno, VISOKO); kašnjenje (3000); }

Pošaljite ovaj kôd na svoj Arduino i pokrenite (obavezno odaberite ispravnu ploču i priključak s alat > Odbor i alat > Luka izbornika). Trebali biste imati radni semafor koji se mijenja svakih 15 sekundi, poput ovog (ubrzavanje):

Arduino semafor na djelu

Raščlanimo ovaj kôd. changeLights funkcija obavlja sav težak posao. Ovo rotira semafor kroz žutu i crvenu boju, a zatim natrag u zeleno. Kako se to zove unutar petlja funkcija, Arduino će pokrenuti ovaj kod zauvijek, s pauzom od 15 sekundi svaki put.

changeLights funkcija se sastoji od četiri različita koraka:

  • Zeleno na, žuto isključeno
  • Žuto isključeno, crveno na
  • Žuto na, crveno na
  • Zeleno upaljeno, crveno isključeno, žuto isključeno

Ova četiri koraka ponavljaju postupak koji se koristi na stvarnim semaforima. Kod za svaki korak je kod vrlo sličan. Pomoću LED-a se uključuje ili isključuje upotrebu digitalWrite. Ovo je Arduino funkcija koja se koristi za postavljanje izlaznih pinova na HIGH (za uključeno) ili LOW (za isključeno).

Nakon omogućavanja ili onemogućavanja potrebnih LED-ova, odgoditi tjera Arduina da čeka određeno vrijeme. Tri sekunde u ovom slučaju.

Zalazak dublje: pješački prijelaz Arduino

Sad kad znate osnove, hajde da je poboljšamo. Dodajte gumbu za pješake da mijenjaju svjetlo kad god žele:

Shema kruga za pješački prijelaz Arduino

Primjetite kako je semafor potpuno isti kao u prethodnom primjeru. Gumb spojite na digitalni pin 12. Primijetit ćete da na prekidaču je pričvršćen otpornik 10-oma visokog otpora, a možda se pitate zašto. Ovo je padajući otpornik.

Prekidač ili omogućuje trenutni protok ili ne. To se čini dovoljno jednostavnim, ali u logičkom krugu struja uvijek treba teći ili u visokom ili niskom stanju (zapamtite, 1 ili 0, VISOKO ili NIZKO). Možete pretpostaviti da bi prekidač tipki koji zapravo nije pritisnut bio u NIZOM stanju, ali u stvari, kaže se da "pluta", jer se struja uopće ne povlači.

U ovom je plutajućem stanju moguće da će se pojaviti lažno očitanje jer fluktuira s električnim smetnjama. Drugim riječima, plutajući prekidač ne daje pouzdano HIGH niti LOW očitanje. Otporni otpornik zadržava malu količinu struje koja teče kada se prekidač zatvori, osiguravajući tačno očitavanje niskog stanja.

U ostalim logičkim krugovima, umjesto toga, možete naći povlačni otpornik, i to radi na istom principu, ali obrnuto, osiguravajući da određena logička vrata imaju zadane vrijednosti na visokim.

Sada, u dijelu koda s petljom, umjesto da mijenjate svjetla svakih 15 sekundi, umjesto toga pročitaćete stanje prekidača i mijenjati svjetla tek kada se aktiviraju.

Šifra za pješački prijelaz Arduino

Započnite dodavanjem nove varijable za spremanje igle gumba:

int gumb = 12; // prekidač je na pin 12. 

Sada u funkciji postavljanja dodajte novi redak za proglašavanje prekidača kao ulaza. Dodajte liniju za postavljanje semafora na zelenu pozornicu. Bez ove početne postavke isključili bi se do prvog puta changeLights pokreće.

pinMode (tipka, ULAZ); digitalWrite (zeleno, VISOKO);

Umjesto toga, promijenite cijelu funkciju petlje na sljedeće:

void petlja () {if (digitalRead (gumb) == HIGH) {delay (15); // softver debounce if (digitalRead (gumb) == HIGH) {// ako je prekidač HIGH, tj. gurnuto dolje - promijenite svjetla! changeLights (); kašnjenje (15000); // pričekajte 15 sekundi}} }

To bi trebalo učiniti. Možda se pitate zašto se provjera tipki događa dva puta (digitalno čitanje (gumb)), razdvojena malim kašnjenjem. Ovo je odustajanje. Slično poput padajućeg otpornika za gumb, ova jednostavna provjera zaustavlja kod otkrivanja manjih smetnji tijekom pritiska na tipku.

Čekajući unutar ako izjavu u trajanju od 15 sekundi, semafori se ne mogu mijenjati najmanje to vrijeme. Kad se 15 sekundi završi, petlja se ponovno pokreće. Svakim ponovnim pokretanjem petlje ponovo se očita stanje gumba, ali ako se ne pritisne, ikona ako Izjava se nikada ne aktivira, svjetla se nikada ne mijenjaju i program se ponovo pokreće.

Evo kako ovo izgleda (ubrzanje):

Pješački prijelaz Arduino u akciji

Arduino semafor sa priključkom

Pokušajmo napredniji model. Umjesto pješačkog prijelaza, promijenite svoj krug na dva semafora:

Cricuit dijagram semafora Arduino sa križanjem

Spojite drugi semafor na digitalne pinove 11, 12 i 13.

Šifra za semafor Arduino sa spojnicom

Prvo dodijelite svoje nove segmente semafora varijablama i konfigurirajte ih kao izlaze, kao u prvom primjeru:

// lagana. int red1 = 10; int yellow1 = 9; int green1 = 8; // svjetlo dva. int red2 = 13; int yellow2 = 12; int green2 = 11; void setup () {// svijetli jedan pinMode (crveni1, OUTPUT); pinMode (žuti1, IZLAZ); pinMode (zelena1, IZLAZ); // svjetlo dva pinMode (crvena2, OUTPUT); pinMode (yellow2, OUTPUT); pinMode (green2, OUTPUT); }

Ažurirajte petlju da biste koristili kôd iz prvog primjera (umjesto pješačkog prijelaza):

void petlja () {changeLights (); kašnjenje (15000); }

Još jednom se svi radovi izvode u changeLights funkcija. Umjesto da odem Crvena > Crvena & žuta boja > zelena, ovaj će kôd zamijeniti semafore. Kad je jedan na zelenoj boji, drugi je na crvenoj boji. Evo koda:

void changeLights () {// okreću obje žute boje na digitalWrite (green1, LOW); digitalWrite (žuto1, VISOKO); digitalWrite (žuto2, VISOKO); kašnjenje (5000); // isključite obje žute i nasuprot zelene i crvene digitalWrite (žute1, NISKE); digitalWrite (crvena1, VISOKO); digitalWrite (žuto2, NISKO); digitalWrite (crvena2, NIZKA); digitalWrite (zelena2, VISOKO); kašnjenje (5000); // oba žutog na opet digitalWrite (yellow1, HIGH); digitalWrite (žuto2, VISOKO); digitalWrite (green2, LOW); kašnjenje (3000); // isključite obje žute i nasuprot zelene i crvene digitalWrite (zelene1, VISOKE); digitalWrite (žuto1, NISKO); digitalWrite (crvena1, NIZKA); digitalWrite (žuto2, NISKO); digitalWrite (crvena2, VISOKO); kašnjenje (5000); }

Evo kako to izgleda (ubrzanje):

Arduino semafor sa križanjem u akciji

Sljedeći koraci semafora Arduino

To je sve za danas. Vaše novo razumijevanje Arduino LED i tipki odnosi se na sve vrste različitih projekata. Ako želite proširiti ove semafore, zašto ne izgradite četverostrani (ili više) raskrižja, zajedno s mnogim pješačkim prijelazima i pješačkim semaforima?

Ili zašto ne proširiti svoje nove vještine većim projektom poput ovog Napravite MIDI kontroler ili Arduino robot s Xodom? Možete i pogledati Arduino kodiranje s VS kodom i PlatformIO Bolje Arduino kodiranje s VS kodom i platformiŽelite li jednostavan način započeti kodiranje Arduina? S PlatformIO i VS kodom možete pojednostaviti Arduino projekte i brže učiti. Čitaj više .

Kreditna slika: androsvector / Shutterstock

Joe je diplomski studij informatike na Sveučilištu u Lincolnu u Velikoj Britaniji. On je profesionalni programer softvera, a kad ne leti dronovima ili piše glazbu, često ga mogu naći fotografirati ili snimati videozapise.