Reklame

arduino julelysDette er den næste del i vores Arduino-serie, og denne gang vi? Jeg lærer om og bruger Arrays at lave et lille juletræornament med forskellige blinkende sekvenser. Dette ville være et ideelt projekt til at holde børnene optaget, hvis du gerne vil lære dem grundlæggende lodning - bare monter LED'erne på et stykke kort, og du kan få strøm fra et standard 9v batteri.

Det er også en vigtig lektion i Arduino-begynderprogrammering, men hvis du ikke planlægger at bruge dette som ornament, vil jeg alligevel stærkt anbefale, at du brætter det ud.

Bemærk: Dette er en meget nybegyndervejledning, og vi vandt bestemt? t bryder nogen ny jord - det? s? bare en enhed til at lære begreberne at bruge Arrays og For løkker at håndtere en stort antal lysdioder (eller andre outputenheder).

Hvis du har tilflugtssted? t allerede, nu ville det være et godt tidspunkt at følge med på de andre artikler i serien:

  • Hvad er Arduino og hvad kan du gøre med det Hvad er Arduino og hvad kan du gøre med det?Arduino er en bemærkelsesværdig lille elektronik, men hvis du aldrig har brugt en før, hvad er de nøjagtigt, og hvad kan du gøre med en?
    instagram viewer
    Læs mere
    ?
  • Hvad er et Arduino-startkit, og hvad indeholder det? Hvad er inkluderet i et Arduino Starter Kit? [MakeUseOf Explains]Jeg har tidligere introduceret Arduino open source-hardware her på MakeUseOf, men du har brug for mere end bare den faktiske Arduino for at bygge noget ud af det og faktisk komme i gang. Arduino "starter sæt" er ... Læs mere
  • Flere seje komponenter, der kan købes med dit startsæt 8 flere seje komponenter til dine Arduino-projekterSå overvejer du at få et Arduino-startkit, men spekulerer på, om nogle grundlæggende LED'er og modstande vil være nok til at holde dig travlt i weekenden? Sikkert ikke. Her er endnu 8 ... Læs mere
  • Kom godt i gang med dit Arduino Starter Kit? Installation af drivere og opsætning af tavle og port Kom godt i gang med dit Arduino Starter Kit - Installation af drivere og opsætning af tavlen og havnenSå du har købt dig et Arduino-startpakke og muligvis nogle andre tilfældige, coole komponenter - hvad nu? Hvordan kommer du faktisk i gang med programmeringen af ​​denne Arduino-ting? Hvordan konfigurerer du det ... Læs mere
  • Fritzing, et gratis værktøj til at tegne kredsløbsdiagrammer Fritzing - Det ultimative værktøj til at skitsere elektronikprojekter [Cross Platform]På trods af at det lyder som en alcopop, er Fritzing faktisk en utrolig smule gratis software, du kan bruge til at oprette kredsløb og komponentdiagrammer til brug med hurtige prototyper elektroniktavler såsom den fantastiske open source Arduino ... Læs mere
  • Et nærmere kig på strukturen i en Arduino-app og eksemplet Blink-program Første trin med Arduino: Et nærmere kig på kredsløbspladsen og strukturen i et programSidste gang jeg forlod dig, havde du konfigureret din Arduino til at arbejde med Mac eller Windows, og efter at have uploadet en simpel testapp, der blinkede LED-indbygget. I dag skal jeg forklare koden ... Læs mere

Til dette projekt, du? Jeg har mindst brug for 8 eller 9 lysdioder i enten rød eller grøn, a modstand for hver af dem, a breadboard og nogle tilslutningsledninger. Startsættet fra Ooomlout, som jeg for nylig har købt selv og er afbildet i denne tutorial, giver stor værdi for pengene og har flere lysdioder og modstande end dig? Jeg har nogensinde brug for, såvel som at komme med en pæn brødbræt og Arduino etui for at holde tingene ryddige.

Her? det er den sidste ting:

arduino julelys

Og en video af det i aktion.

Her? s en oversigt over ledninger fra Fritzing. Det? er meget grundlæggende - bare tilslut den positive ledning af LED'erne til stifter 2-> hvad (op til pin 13), og forbind de negative ben til jorden inline med en modstand. Værdien jeg? der er brugt her er 560 Ohms. At? er det til ledningsføring.

arduino julelys

Tænk på softwaresiden, hvordan du skriver til alle disse LED'er i koden. Du kan gøre det sådan:

int led1 = 2; // første LED på pin 2. int led2 = 3; // sekund på pin 3. // osv osv. void loop () {digitalWrite (led1, HIGH); forsinkelse (100); digitalWrite (led1, LOW); forsinkelse (100); digitalWrite (led2, HIGH); // etc. }

Du skulle være i stand til at se, at med 9 lysdioder vil dette hurtigt blive trættende. Svaret ligger hos Arrays, hvad hvis du kan? husk vores Programmering 101 om grundlæggende datatyper Grundlæggende om computerprogrammering 101 - variabler og datatyperEfter at have introduceret og talt lidt om Objektorienteret programmering før og hvor dens navnebror kommer fra, jeg troede, det er på tide, at vi gennemgår de absolutte grundlæggende programmering i et ikke-sprogspecifikt vej. Dette... Læs mere - er dybest set bare lister.

Syntaks ser sådan ud (placer dette som den første linje i din kode):

int leds [] = {2,3,4,5,6,7,8,9,10};

De firkantede parenteser angiver, at leds? variabel bliver en Array. De krøllede seler omslutter listen over pin-numre, som vores matrix har.

For at bruge en matrix skal vi adressere det ved indeksnummeret. Det indeks starter ved 0, og vil derfor altid gå op til 1 mindre end det samlede antal ting deri (så med 9 varer ville den sidste have et indeks på 8).

Du skriver det sådan:

leds [0]

Hvilket i vores tilfælde ville hente nummer 2, fordi det? hvad hvad? s ved indeks 0 i vores array.

Følger indtil videre? Store. Det alene er det ikke? Men dog nok til os - vi har også brug for en måde at itereere over hvert element i vores LED-array. Til det bruger vi en til løkke. Syntaks for at gøre det er sådan:

for (startvariabel; tilstand, under hvilken vi gentager igen; skift til variabel hver iteration)

For eksempel:

for (int i = 0; i <9; i ++)

Som siger

  • start denne loop med en variabel, jeg, som har en værdi af nul
  • fortsæt kun med looping, mens jeg er mindre end 9? (så: 0,1,2,3,4,5,6,7,8)
  • hver gang, tilføj 1 til i (i ++ er en kort måde at sige i = i + 1)

Så dybest set, vil løkken gentages så mange gange, som vi har lysdioder, og hver gang det? gentages, vi har en variabel, jeg, som vi kan bruge, uanset hvor vi kan lide.

Vi? Jeg bruger denne struktur to gange til at begynde med. Når du først er inde i installationsfunktionen for at få alle vores stifter til at gå til outputtilstand, som denne:

tom opsætning () {for (int i = 0; i <9; i ++) {pinMode (leds [i], OUTPUT); } }

Kan du se, hvad vi gjorde der? I stedet for at skrive 9 linjer med kode for at erklære hver enkelt pin som output, opretter vi en 'for' loop til at gentage sig selv 9 gange, hver gang der indstilles en anden pin.

Nu skulle du være i stand til at se, hvordan vi kunne gøre nøjagtigt det samme i hovedprogramsløjfen for at tænde hver LED i rækkefølge:

void loop () {for (int i = 0; i <9; i ++) {digitalWrite (leds [i], HIGH); forsinkelse (100); digitalWrite (leds [i], LAV); } }

Prøv det. Du kan download den fulde kode til dagens projekt herfra hvis du? d hellere ikke skriv det ud igen (skønt jeg opfordrer dig til det, da det hjælper læringsprocessen).

Okay, så nu har vi en ret kedelig lyssekvens. Lade? s program en anden. Bare for sjov, lad? s gør det helt tilfældigt. Udskift hovedsløjfekoden med denne:

void loop () { int randomLed = tilfældig (0,8); digitalWrite (leds [randomLed], HIGH); forsinkelse (50); randomLed = tilfældig (0,8); digitalWrite (leds [randomLed], LOW); }

I stedet for at bruge en 'for'-løkke til at itereere over hver LED, vælger vi et tilfældigt tal fra 0-9 i stedet og blinker det på.

Jeg vil overlade det til i dag, da du nu skal være bevæbnet med tilstrækkelig viden til at programmere alle nye sekvenser og eksperimentere med loops. For at bevise, hvor let dette er, udfordrede jeg min kone til at tænke på en rækkefølge, hun? vil jeg gerne se, og så fik?hende til at programmere det selv, kun givet koden og lektioner du? vi havde hidtil. Hun kom med dette, så se om du kan matche det til hjemmearbejde!

Spørgsmål, forslag, problemer - kontakt venligst kommentarerne.

James har en BSc i kunstig intelligens og er CompTIA A + og Network + certificeret. Han er hovedudvikler af MakeUseOf og bruger sin fritid på at spille VR paintball og brætspil. Han har bygget pc'er siden han var barn.