Annonse
Dette er neste del i vår læring Arduino-serie, og denne gangen vi? Jeg skal lære om og bruke arrays å lage et lite juletreornament med forskjellige blinkende sekvenser. Dette ville være et ideelt prosjekt for å holde barna opptatt hvis du vil lære dem grunnleggende lodding - bare monter lysdiodene på et kortstykke, så kan du få strøm fra et standard 9v-batteri.
Det er også en viktig leksjon i Arduino-nybegynner-programmering, men hvis du ikke planlegger å bruke dette som ornament, vil jeg på det sterkeste foreslå å brette det ut uansett.
Merk: Dette er en veldig nybegynnernivå, og vi vant absolutt? t bryter noe nytt bakken - det? s? bare et apparat for å lære konseptene å bruke arrays og For løkker å forholde seg til a stort antall lysdioder (eller andre utgangsenheter).
Hvis du ikke har det? t allerede, nå ville det være et godt tidspunkt å følge med på andre artikler i serien:
- Hva er Arduino og hva kan du gjøre med det Hva er Arduino og hva kan du gjøre med det?Arduino er et bemerkelsesverdig lite elektronikkapparat, men hvis du aldri har brukt en før, hva er de egentlig, og hva kan du gjøre med en? Les mer ?
- Hva er et Arduino Starter Kit, og hva inneholder det? Hva er inkludert i et Arduino Starter Kit? [MakeUseOf Explains]Jeg har tidligere introdusert Arduino open source-maskinvare her på MakeUseOf, men du trenger mer enn bare den faktiske Arduino for å bygge noe ut av det og faktisk komme i gang. Arduino "startpakker" er ... Les mer
- Flere kule komponenter du kan kjøpe med startpakken 8 kule komponenter til Arduino-prosjektene dineSå du tenker på å skaffe deg et Arduino-startsett, men lurer på om noen grunnleggende LED-er og motstander vil være nok til å holde deg opptatt til helgen? Sannsynligvis ikke. Her er ytterligere 8 ... Les mer
- Komme i gang med Arduino Starter Kit? Installere drivere og konfigurere styre og port Komme i gang med Arduino Starter Kit - Installere drivere og sette opp styret og portenSå, du har kjøpt deg et Arduino-startsett, og muligens noen andre tilfeldige kule komponenter - hva nå? Hvordan kommer du faktisk i gang med å programmere denne Arduino-tingen? Hvordan setter du det opp ... Les mer
- Fritzing, et gratis verktøy for å tegne kretsdiagrammer Fritzing - Det ultimate verktøyet for å skisse ut elektroniske prosjekter [Cross Platform]Til tross for at det høres ut som en alcopop, er Fritzing faktisk en utrolig liten gratis programvare du kan bruke til å lage krets- og komponentdiagrammer for bruk med raske prototyping av elektronikktavler, for eksempel den fantastiske open-source Arduino ... Les mer
- Et nærmere blikk på strukturen til en Arduino-app og eksempelblinkprogrammet Første trinn med Arduino: Et nærmere blikk på kretskortet og strukturen i et programForrige gang jeg forlot deg etter å ha satt opp Arduino-en din til å fungere med Mac eller Windows, og etter å ha lastet opp en enkel test-app som blinket LED-lampen ombord. I dag skal jeg forklare koden ... Les mer
For dette prosjektet, du? Jeg trenger minst 8 eller 9 lysdioder i enten rød eller grønn, a motstand for hver av dem, a brødfjel og noen koblingsledninger. Startpakken fra Ooomlout, som jeg nylig har kjøpt selv og er avbildet i denne opplæringen, gir god valuta for pengene og har flere lysdioder og motstander enn deg? Jeg trenger noen gang, i tillegg til at det kommer med et pent brødbrett og Arduino-etui for å holde ting ryddig.
Her? det er den siste tingen:
Og en video av den i aksjon.
Her? s utsikt til ledningene fra Fritzing. Den? er veldig grunnleggende - bare koble den positive ledningen til LEDene til pinnene 2-> uansett (opp til pinne 13), og koble de negative bena til bakken i linjen med en motstand. Verdien jeg? Jeg har brukt her er 560 Ohms. At? er det for kabling.
På programvaresiden, tenk på hvordan du kan skrive til alle disse LED-ene i koden. Du kan gjøre det slik:
int led1 = 2; // første LED på pinne 2. int led2 = 3; // sekund på pinne 3. // etc etc void loop () {digitalWrite (led1, HIGH); forsinkelse (100); digitalWrite (led1, LOW); forsinkelse (100); digitalWrite (led2, HIGH); // etc. }
Du bør kunne se at med 9 lysdioder vil dette raskt bli slitsomt. Svaret ligger hos arrays, hva hvis du kan? husker ikke vår Programmering 101 om grunnleggende datatyper Grunnleggende om dataprogrammering 101 - variabler og datatyperEtter å ha introdusert og snakket litt om objektorientert programmering før og hvor dens navnebror kommer fra, jeg trodde det er på tide at vi går gjennom de absolutte grunnleggende programmene i et ikke-språkspesifikt vei. Dette... Les mer - er i utgangspunktet bare lister.
Syntaksen ser slik ut (plasser dette som den første linjen i koden din):
int leds [] = {2,3,4,5,6,7,8,9,10};
De firkantede parentesene indikerer at "leds"? variabel kommer til å bli en Array. De krøllete selene inkluderer listen over pinnetall som gruppen vår vil ha.
Nå, for å bruke en matrise, må vi adressere den etter indeksnummeret. De indeks starter på 0, og vil derfor alltid gå opptil 1 mindre enn det totale antallet ting som er inne i det (så med 9 artikler, ville den siste ha en indeks på 8).
Du skriver det slik:
leds [0]
Hvilket i vårt tilfelle vil hente nummer 2, fordi det? hva? s på indeks 0 i vårt utvalg.
Følger så langt? Flott. Det alene er det ikke? men nok for oss - vi trenger også en måte å iterere over hvert element i LED-arrayene våre. For det vil vi bruke en for sløyfe. Syntaksen for å gjøre det er slik:
for (innledende variabel; tilstand under hvilken vi gjentar oss igjen; endre til variabel hver iterasjon)
For eksempel:
for (int i = 0; i <9; i ++)
Som sier
- start denne loopen med en variabel, Jeg, som har en verdi av null
- fortsett å sløyfe bare mens jeg er mindre enn 9? (altså: 0,1,2,3,4,5,6,7,8)
- hver gang, legg til 1 til i (i ++ er en kort måte å si i = i + 1)
Så i utgangspunktet kommer sløyfen til å bli gjentatt så mange ganger som vi har lysdioder, og hver gang? gjentas vil vi ha en variabel, Jeg, som vi kan bruke, men vi vil.
Vi? Jeg bruker denne strukturen to ganger til å begynne med. Når du er inne i konfigurasjonsfunksjonen for å få alle pinnene våre til å gå til utgangsmodus, slik:
void setup () {for (int i = 0; i <9; i ++) {pinMode (leds [i], OUTPUT); } }
Kan du se hva vi gjorde der? I stedet for å skrive 9 linjer med kode for å erklære hver enkelt pin som utdata, oppretter vi en ‘for’ loop for å gjenta seg selv 9 ganger, hver gang vi setter en annen pin.
Nå skal du kunne se hvordan vi kan gjøre nøyaktig det samme i hovedprogramsløyfen for å slå på hver LED i rekkefølge:
void loop () {for (int i = 0; i <9; i ++) {digitalWrite (leds [i], HIGH); forsinkelse (100); digitalWrite (leds [i], LOW); } }
Prøv det. Du kan Last ned hele koden for dagens prosjekt herfra hvis du? d heller ikke skriv det ut igjen (selv om jeg oppfordrer deg til det, da det hjelper læringsprosessen).
Ok, så nå har vi en ganske kjedelig lyssekvens. La? s program en annen. Bare for moro skyld, la? s gjør det helt tilfeldig. Bytt ut hovedsløyfekoden med denne:
void loop () { int randomLed = tilfeldig (0,8); digitalWrite (leds [randomLed], HIGH); forsinkelse (50); randomLed = random (0,8); digitalWrite (leds [randomLed], LOW); }
I stedet for å bruke en ‘for’ -sløyfe for å iterere over hver LED, velger vi et tilfeldig tall fra 0-9 i stedet, og blinker det på.
Jeg kommer til å la det ligge der i dag, fordi du nå skal være bevæpnet med nok kunnskap til å programmere alle nye sekvenser og eksperimentere med løkker. For å bevise hvor lett dette er, utfordret jeg min kone til å tenke på en sekvens hun? har du lyst til å se, og så fått?henne til å programmere det selv, gitt bare koden og leksjonene du? har hatt så langt. Hun kom på dette, så se om du kan matche det for lekser!
Spørsmål, forslag, problemer - ta kontakt med kommentarene.
James har en BSc i kunstig intelligens, og er CompTIA A + og Network + sertifisert. Han er hovedutvikler av MakeUseOf, og bruker fritiden sin på å spille VR paintball og brettspill. Han har bygd pc-er siden han var liten.