Et Arduino-prosjekt Slik lager du lyse ornamenter
Dette er neste del i vår lærings Arduino-serie, og denne gangen skal vi lære om og bruke arrays å lage et lite juletre ornament med ulike blinkende sekvenser. Dette ville være et ideelt prosjekt for å holde barna opptatt hvis du vil lære dem grunnleggende lodding - bare monter LEDene på et kort, og du kan få strøm fra et standard 9v batteri.
Det er også en viktig leksjon i nybegynner Arduino programmering, men hvis du ikke har tenkt på å faktisk bruke dette som et ornament, vil jeg sterkt foreslå at du bringer det ut uansett.
Merk: Dette er en veldig nybegynner nivå opplæring og vi absolutt vant? Ikke bryte noe nytt grunnlag - det? S? bare en enhet for å undervise konseptene for bruk arrays og For sløyfer å håndtere a stort antall lysdioder (eller andre utgangsenheter).
Hvis du ikke allerede har det, ville det være en god tid å følge med de andre artiklene i serien:
- Hva er Arduino og hva kan du gjøre med det Hva er Arduino og hva kan du gjøre med det? Hva er Arduino og hva kan du gjøre med det? Arduino er en bemerkelsesverdig liten elektronikk enhet, men hvis du aldri har brukt en før, akkurat hva er de, og hva kan du gjøre med en? Les mer ?
- Hva er en Arduino Starter Kit og hva inneholder den? Hva er inkludert i en Arduino Starter Kit? [MakeUseOf Forklarer] Hva er inkludert i et Arduino Starter Kit? [MakeUseOf Forklarer] Jeg har tidligere introdusert Arduino open-source hardware her på MakeUseOf, men du trenger mer enn bare den faktiske Arduino å bygge noe ut av det og faktisk komme i gang. Arduino "startpakker" er ... Les mer
- Flere kjølige komponenter for å kjøpe med startpakken 8 Flere kjølige komponenter for dine Arduino-prosjekter 8 Flere kule komponenter for dine Arduino-prosjekter Så du tenker på å få et Arduino-startpakke, men lurer på om noen grunnleggende lysdioder og motstander kommer til å bli nok til å holde deg opptatt i helgen? Sannsynligvis ikke. Her er en annen 8 ... Les mer
- Komme i gang med Arduino Starter Kit? Installere drivere og sette opp styret og porten Komme i gang med Arduino Starter Kit - Installere drivere og sette opp styret og porten Komme i gang med Arduino Starter Kit - Installere drivere og sette opp styret og porten Så du har kjøpt deg selv et Arduino startpakke, og muligens noen andre tilfeldige, kule komponenter - nå hva? Hvordan kommer du faktisk i gang med programmering av denne Arduino-tingen? Hvordan setter du opp ... Les mer
- Fritzing, et gratis verktøy for å tegne kretsdiagrammer Fritzing - Det ultimate verktøyet for å skisse ut elektroniske prosjekter [Cross Platform] Fritzing - Det ultimate verktøyet for å skille ut elektroniske prosjekter [Cross Platform] Til tross for å lyde som en alcopop, er Fritzing faktisk en utrolig bit av gratis programvare du kan bruke til å lage krets- og komponentdiagrammer for bruk med raske prototypingelektronikkbrett som den fantastiske open-source Arduino ... Les mer
- En nærmere titt på strukturen av en Arduino App og eksempelblinkprogrammet Første skritt med Arduino: En nærmere titt på kretsbordet og strukturen av et program Første trinn med Arduino: En nærmere titt på kretsbordet og strukturen Av et program Sist gang jeg forlot at du hadde satt opp din Arduino til å jobbe med Mac eller Windows, og har lastet opp en enkel testapplikasjon som blinket innebygd LED. I dag skal jeg forklare koden ... Les mer
For dette prosjektet trenger du minst 8 eller 9 lysdioder i enten rød eller grønn, a motstand for hver av dem, a brødfjel og noen hookup ledninger. Startpakken fra Ooomlout, som jeg nylig kjøpte meg selv og er avbildet i denne opplæringen, gir god valuta for pengene og har flere lysdioder og motstander enn du trenger, samt å komme med et pent brødbrett og Arduino-tilfelle for å holde ting ryddig.
Her er det siste:
Og en video av den i aksjon.
Her er en oversikt over ledninger fra Fritzing. Det er veldig grunnleggende - bare koble den positive ledningen til lysdiodene til pins 2-> uansett (opp til pin 13), og koble de negative benene til bakken inline med en motstand. Verdien jeg har brukt her er 560 Ohm. Det er det for ledninger.
På programvare siden, tenk på hvordan du kan skrive til alle disse lysdiodene i koden. Du kan gå om det slik:
int led1 = 2; // første LED på pin 2 int led2 = 3; // sekund på pin 3 // etc etc void loop () digitalWrite (led1, HIGH); forsinkelse (100); digitalWrite (LED1, LAV); forsinkelse (100); digitalWrite (LED2, HIGH); // etc
Du bør kunne se det med 9 lysdioder, dette vil raskt bli slitsomt. Svaret ligger hos arrays, som hvis du ikke kan huske vår Programmering 101 om grunnleggende datatyper Grunnleggende om dataprogrammering 101 - Variabler og datatyper Grunnleggende om dataprogrammering 101 - Variabler og datatyper Etter å ha introdusert og snakket litt om Objektorientert Programmering før og hvor dets navnebringer kommer fra , Jeg trodde det er på tide at vi går gjennom det absolutt grunnleggende for programmering på en ikke-språklig måte. Dette ... Les mer - er i utgangspunktet bare lister.
Syntaxen ser slik ut (plasser dette som første linje 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. Den krøllete båndet inneholder listen over pinnumre som vårt utvalg vil holde.
Nå, for å bruke en Array, må vi adressere den ved hjelp av indeksnummeret. De indeksen starter ved 0, og vil derfor alltid gå opp til 1 mindre enn det totale antall ting inni den (så med 9 elementer, ville den siste ha en indeks på 8).
Du skriver det slik:
leds [0]
Som i vårt tilfelle ville hente tallet 2, fordi det er hva? S på indeks 0 i vårt utvalg.
Følgende så langt? Flott. Det alene er ikke nok for oss selv - vi trenger også en måte å iterere over hvert element i LED-arrayet. For det vil vi bruke en for sløyfe. Syntaxen for å gjøre det er slik:
for (første variabel; tilstanden deretter vi gjentar igjen, bytt til variabel hver iterasjon)
For eksempel:
for (int i = 0; i<9; i++)
Som sier
- start denne sløyfen med en variabel, Jeg, som har en verdi av null
- fortsett looping bare mens jeg er mindre enn 9?(slik: 0,1,2,3,4,5,6,7,8)
- hver gang, legg til 1 til i (jeg ++ er en kort måte å si i = jeg + 1)
Så i utgangspunktet vil sløyfen gjentas så mange ganger som vi har lysdioder, og hver gang den blir gjentatt, vil vi ha en variabel, Jeg, som vi kan bruke, men vi liker.
Vi skal bruke denne strukturen to ganger for å begynne med. Når du er inne i oppsettfunksjonen for å gjøre alle våre pinner til utgangsmodus, slik:
tomromoppsett () 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 å deklarere hver enkelt pin som utgang, oppretter vi en "for" loop for å gjenta seg 9 ganger, hver gang du setter inn en annen pin.
Nå bør du kunne se hvordan vi kunne gjøre nøyaktig samme ting i hovedprogramsløyfen for å slå hver LED på i rekkefølge:
tomromsløyfe () for (int i = 0; i< 9;i++) digitalWrite(leds[i],HIGH); delay(100); digitalWrite(leds[i],LOW);
Prøv det. Du kan laste ned hele koden til dagens prosjekt herfra hvis du ikke vil skrive det ut igjen (selv om jeg oppfordrer deg til, da det hjelper læringsprosessen).
Ok, så nå har vi en ganske kjedelig belysningssekvens. La oss programmere en annen. Bare for moro skyld, la oss gjøre det helt tilfeldig. Bytt hovedløkkekoden med dette:
tomromsløyfe () int randomLed = tilfeldig (0,8); digitalWrite (leds [randomLed], HØY); forsinkelse (50); randomLed = tilfeldig (0,8); digitalWrite (leds [randomLed], LAV);
I stedet for å bruke en "for" -løkke for å iterere over hver LED, velger vi et tilfeldig tall fra 0-9 i stedet, og blinker det på.
Jeg kommer til å legge det der for i dag, da du nå skal være bevæpnet med nok kunnskap til å programmere alle nye sekvenser og eksperimentere med sløyfer. For å bevise hvor lett dette er alt, utfordret jeg min kone til å tenke på en sekvens som hun ville se, og da fikk han?henne til å programmere det selv, gitt bare koden og leksjonene du har hatt så langt. Hun kom opp med dette, så se om du kan matche det til lekser!
Spørsmål, forslag, problemer - vennligst ta kontakt i kommentarene.
Utforsk mer om: Arduino.