Pretraži kod

Lekcija 98-7: Hodajuće svjetlo korištenjem Arduina i 5 LED dioda

Lekcija 98-7: Hodajuće svjetlo korištenjem Arduina i 5 LED dioda

Hodajuće svjetlo (koje se još naziva i "jureće" ili "Knight Rider" svjetlo) jedan je od klasičnih Arduino projekata za početnike — i to s dobrim razlogom. Uči vas kako kontrolisati više izlaza u nizu, kako mjeriti vrijeme događaja i kako razmišljati o otpornicima za ograničavanje struje, a sve to dok stvarate nešto vizuelno zadovoljavajuće. U ovom projektu spojit ćete pet LED dioda na Arduino i programirati ih tako da se svaka redom uključuje, stvarajući iluziju jednog svjetla koje "hoda" duž niza.

5 leds on breadboard with resistor shown connected to Arduino UNO
5 leds on breadboard with resistor shown connected to Arduino UNO

Kada shvatite obrazac, možete ga prenamijeniti u iznenađujuće velikom broju stvarnih projekata:

  • Dekorativna rasvjeta: jureći obrub za policu, okvir za sliku ili maketu.
  • Pokazivači smjera: efekat sekvencijalnog žmigavca za repliku vozila ili električni bicikl.
  • Prikaz napretka ili statusa: niz LED dioda koji napreduje kako se proces završava.
  • Rekviziti za igre i semafore rezultata: "pokretna meta" ili indikator nivoa.
  • Nastavno pomagalo: najjasnija moguća demonstracija digitalnih izlaza i mjerenja vremena.

Isti raspored ožičenja s pet LED dioda ponovo se koristi u nekoliko drugih projekata u ovom kursu, tako da hardver koji ovdje napravite postaje platforma koja se može ponovo koristiti.

Kako hodajuće svjetlo funkcioniše

Princip je potpuno isti kao uključivanje jedne LED diode — samo se ponavlja pet puta (u videu na 30:47). Svaka LED dioda spojena je na vlastiti Arduino pin preko vlastitog otpornika za ograničavanje struje, a svi otpornici dijele zajedničku šinu uzemljenja. Skica zatim postavlja jedan pin na HIGH, čeka, postavlja ga na LOW, čeka i prelazi na sljedeći pin. Budući da je uvijek uključena samo jedna LED dioda, oko sekvencu čita kao kretanje.

Dvije vrijednosti vremena su ono što efektu daje njegov karakter. Vrijeme uključenosti kontroliše koliko dugo svaka LED dioda ostaje upaljena, a vrijeme isključenosti kontroliše razmak prije nego što se sljedeća LED dioda upali. Kratko vrijeme uključenosti s dugim vremenom isključenosti proizvodi jednu tačku koja putuje brzo; dugo vrijeme uključenosti s kratkim vremenom isključenosti proizvodi glatkiji, kontinuiraniji prelaz (u videu na 35:00).

Hardver i komponente

  • 1 × Arduino ploča (Uno, Nano ili slična)
  • 5 × LED dioda (bilo koje boje; miješanje boja olakšava čitanje efekta)
  • 5 × otpornika — 300 Ω do 1 kΩ rade dobro
  • 1 × breadboard
  • Jumper žice
  • USB kabel ili baterijski paket za napajanje

Ako kasnije želite dodati varijantu s push-buttonom, trebat će vam i jedan trenutni push button i dvije dodatne jumper žice.

Odabir vrijednosti otpornika

LED dioda ima prednji napon od otprilike 2 V i želi oko 10 mA za punu svjetlinu (u videu na 03:49). Uz napajanje od 5 V, otpornik mora spustiti preostala 3 V. Primjenom Ohmovog zakona, R = V / I = 3 V / 0,01 A = 300 Ω. U praksi će raditi bilo šta od 300 Ω do oko 1 kΩ — što je otpor veći, LED dioda je slabija, ali je krug sigurniji i efikasniji (u videu na 05:33).

Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button

Vodič za ožičenje

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino

Umetnite pet LED dioda u breadboard s njihovim anodama (duža nožica) okrenutim u istom smjeru. Spojite svaku katodu (kraća nožica s ravnom stranom) na vlastiti otpornik i spojite kraj svih pet otpornika na zajedničku šinu uzemljenja. Zatim provedite jumper od svake anode do Arduino pina.

U ovoj izradi LED diode su dodijeljene pinovima 3, 4, 5, 6 i 7 (u videu na 31:29). Brojevi pinova definirani su na vrhu skice, tako da ako želite drugačiji raspored, trebate promijeniti samo tih pet linija.

Objašnjenje koda

Skica je namjerno jednostavna kako bi početnik mogao pratiti svaku liniju. Samo blok na samom vrhu treba urediti za vlastito postavljanje.

const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int offTime = 30;  // the time each LED waits in the OFF state
int onTime = 100;  // the time each LED is ON

Definicije pinova. Pet const int linija mapira svaku LED diodu na fizički Arduino pin. Budući da su deklarirane kao const, vrijednosti se ne mogu mijenjati kasnije u programu — to je sigurnosna navika koja sprječava slučajno ponovno dodjeljivanje. Ako svoje LED diode spojite na druge pinove, promijenite brojeve ovdje i ništa drugo.

onTime i offTime. Ova dva cijela broja jedine su varijable "ponašanja" u projektu i one su s kojima ćete htjeti eksperimentisati:

  • onTime — koliko dugo (u milisekundama) svaka LED dioda ostaje upaljena. Veće vrijednosti čine da svaki korak izgleda sporije i promišljenije.
  • offTime — pauza nakon što se LED dioda isključi prije nego što se sljedeća upali. Manje vrijednosti čine da svjetlo putuje brže.

Isprobajte onTime = 200 i offTime = 200 za ravnomjeran lov srednje brzine, ili onTime = 30 i offTime = 30 za vrlo brz, gotovo zamućen efekat (u videu na 36:06).

Funkcija setup() se izvršava jednom i jednostavno postavlja svih pet pinova na OUTPUT režim. Funkcija loop() zatim ponavlja isti obrazac od četiri koraka za svaku LED diodu: postavi pin na HIGH, sačekaj onTime, postavi ga na LOW, sačekaj offTime. Kada peta LED dioda završi, petlja počinje ponovo od prve, stvarajući beskonačno kretanje.

Projekat uživo i demonstracija

Sa zadanim vrijednostima LED diode koračaju duž reda opuštenim tempom. Učitavanje skice sa onTime i offTime postavljenim na 200 ms daje stabilan, ravnomjeran hod; smanjenje oba na 30 ms čini da svjetlo juri preko reda gotovo prebrzo da bi se pratilo (u videu na 36:21).

Dva korisna eksperimenta za isprobati kada proradi:

  • Neka vrijeme uključenosti bude kraće od vremena isključenosti da stvorite izraženu putujuću tačku.
  • Neka vrijeme uključenosti bude duže od vremena isključenosti da stvorite mekani sjaj koji se preklapa.

Ista instalacija s pet LED dioda se ponovo koristi u sljedećem projektu, gdje push dugme pomjera svjetlo jedan korak po jedan. Ta izrada je obrađena u Lekcija 98-8: Pokretno svjetlo s push dugmetom i LED diodama uz Arduino.

Ako biste radije upravljali redom putem analognog ulaza umjesto dugmeta, pogledajte Lekcija 98-9: LED mjerač naponskog nivoa uz Arduino ili pokretno svjetlo s potenciometrom.

Idemo dalje

Kada osnovno kretanje proradi, prirodan sljedeći korak je učiniti da se svjetlo kreće naprijed-nazad umjesto da skače s posljednje LED diode na prvu. To je čista vježba kodiranja — bez dodatnog hardvera — i dobar je način da uvježbate petlje i nizove. Također možete kombinovati ovaj projekat s verzijom s push dugmetom da napravite ručno upravljani displej.

Povezani projekti iz ovog videa

Poglavlja

  • [00:00] Pregled deset LED projekata
  • [01:22] Uvod u Arduino kurs korak po korak
  • [02:29] Šta je LED dioda i kako prepoznati njene pinove
  • [03:49] Izračunavanje otpornika za ograničavanje struje
  • [30:47] Predstavljanje projekta pokretnog svjetla
  • [31:06] Šema povezivanja za pet LED dioda
  • [32:52] Objašnjenje koda pokretnog svjetla
  • [34:39] Demonstracija i promjena vrijednosti vremena
  • [36:41] Pomicanje svjetla pomoću push dugmeta (odvojeni tutorijal)
  • [42:25] LED naponska traka s potenciometrom (odvojeni tutorijal)
  • [49:25] Arduino semafor (odvojeni tutorijal)

Slike

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
5 LED dioda na breadboardu sa otpornikom prikazano povezano na Arduino UNO
5 LED dioda na breadboardu sa otpornikom prikazano povezano na Arduino UNO
939-Lessson 98-LED-7: Arduino code walking LED 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