Vodič za programiranje Arduino za početnike Upute za upravljanje semaforima

  • William Charles
  • 0
  • 2047
  • 181
Oglas

Arduino semafor je mali zabavni projekt koji možete ugraditi ispod jednog sata. Evo kako izgraditi vlastiti koristeći 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š vodič za kupovinu Arduino Vodič za kupnju Arduino: Koju ploču trebate nabaviti? Vodič za kupnju Arduinoa: Koji odbor trebate dobiti? Postoji toliko mnogo različitih 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-a! ako niste sigurni koji vam model treba. Možda već imate ove dijelove u vašem Arduino starter setu Što je u vašem Arduino Starter Kit-u? [Arduino početnici] Š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. .

Arduino semafor: Osnove

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

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šnjenja (15000);  void changeLights () // zeleno isključeno, žuto uključeno 3 sekunde digitalWrite (zeleno, LOW); digitalWrite (žuto, VISOKO); kašnjenja (3000); // isključiti žuto, zatim upaliti crveno na 5 sekundi digitalWrite (žuto, NISKO); digitalWrite (crveno, VISOKO); kašnjenja (5000); // crveno i žuto uključeno 2 sekunde (crveno je već uključeno) digitalWrite (žuto, VISOKO); kašnjenja (2000); // isključite crveno i žuto, a zatim uključite zeleno digitalWrite (žuto, NISKO); digitalWrite (crveno, NISKO); digitalWrite (zeleno, VISOKO); kašnjenja (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):

Raščlanimo ovaj kod. 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 15-sekundnom stankom 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:

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 od 10 im-oma 10k-ohma i možda se pitate zašto. Ovo je padajući otpornik.

Prekidač omogućava 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č s gumbom koji zapravo nije pritisnut bio u NIZOM stanju, ali zapravo se kaže da 'pluta', jer se uopće ne povlači struja.

U ovom je plutajućem stanju moguće da će se dogoditi lažno očitanje dok 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 kad 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 ćete pročitati stanje prekidača i mijenjati svjetla samo kad je aktivirana.

Šifra za pješački prijelaz Arduino

Započnite dodavanjem nove varijable za pohranjivanje 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 radi.

pinMode (gumb, 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šnjenja (15000); // pričekajte 15 sekundi

To bi trebalo učiniti. Možda se pitate zašto se provjera tipki događa dva puta (digitalRead (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 Izjava o 15 sekundi, semafori se ne mogu mijenjati barem 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 nije pritisnut, ako Izjava se nikada ne aktivira, svjetla se nikada ne mijenjaju i program se ponovo pokreće.

Evo kako ovo izgleda (ubrzanje):

Arduino semafor sa priključkom

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

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

Šifra za semafor Arduino sa spojnicom

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

// svijetli jedan int crveni1 = 10; int yellow1 = 9; int green1 = 8; // svjetlo two 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 (crveno2, 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šnjenja (15000); 

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

void changeLights () // okreće oba žuta na digitalWrite (green1, LOW); digitalWrite (žuto1, VISOKO); digitalWrite (žuto2, VISOKO); kašnjenja (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šnjenja (5000); // oba žutog na opet digitalWrite (yellow1, HIGH); digitalWrite (žuto2, VISOKO); digitalWrite (green2, LOW); kašnjenja (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šnjenja (5000); 

Evo kako to izgleda (ubrzanje):

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) raskrsnica, 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 DIY MIDI kontrolera ili Arduino robota s Xodom? Možete i pogledati Arduino kodiranje s VS kodom i PlatformIO Bolje Arduino kodiranje s VS kodom i PlatformIO Bolje Arduino kodiranje s VS kodom i PlatformIO Želite li jednostavan način započeti kodiranje Arduinoa? S PlatformIO i VS kodom možete pojednostaviti Arduino projekte i brže učiti. .

Kreditna slika: androsvector / Shutterstock




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.