Ett Arduino-projekt hur man gör blinkande jullampor
Detta är nästa del i vår lärande Arduino-serie, och den här gången kommer vi att lära oss om och använda arrayer att göra en liten julgransprydnad med olika blinkande sekvenser. Detta skulle vara ett idealiskt projekt för att hålla barnen upptagna om du skulle vilja lära dem grundläggande lödning - bara montera lysdioderna på ett kort och du kan få ström från ett vanligt 9v batteri.
Det är också en viktig lektion i nybörjare Arduino programmering, men om du inte planerar att faktiskt använda det här som en prydnad skulle jag starkt föreslå breadboarding det ändå.
Obs! Det här är en väldigt nybörjarehandledning och vi vann verkligen inte någon ny mark - det? S? bara en enhet för att undervisa koncepten att använda arrayer och För slingor att hantera a stort antal lysdioder (eller andra utmatningsenheter).
Om du inte redan har det, skulle det vara en bra tid att följa med de andra artiklarna i serien:
- Vad är Arduino och vad kan du göra med det Vad är Arduino & Vad kan du göra med det? Vad är Arduino och vad kan du göra med det? Arduino är en anmärkningsvärd liten elektronik enhet, men om du aldrig har använt en tidigare, precis vad exakt är de, och vad kan du göra med en? Läs mer ?
- Vad är en Arduino Starter Kit och vad innehåller den? Vad ingår i ett Arduino Starter Kit? [MakeUseOf Förklarar] Vad ingår i ett Arduino Starter Kit? [MakeUseOf Explains] Jag har tidigare introducerat Arduino open source-hårdvaran här på MakeUseOf, men du behöver mer än bara den verkliga Arduino att bygga något ut av det och faktiskt komma igång. Arduino "startpaket" är ... Läs mer
- Mer coola komponenter att köpa med din startpaket 8 Fler kalla komponenter till dina Arduino-projekt 8 Fler kalla komponenter till dina Arduino-projekt Så du tänker på att få en Arduino-startpaket, men undrar om några grundläggande lysdioder och motstånd kommer att bli tillräckligt för att hålla dig upptagen för helgen? Antagligen inte. Här är ytterligare 8 ... Läs mer
- Komma igång med din Arduino Starter Kit? Installera drivrutiner och ställa in styrningen och porten Komma igång med ditt Arduino-startpaket - Installera drivrutiner och konfigurera styret och porten Komma igång med ditt Arduino-startpaket - Installera drivrutiner och konfigurera styrelsen och porten Så du har köpt dig själv en Arduino starter kit, och eventuellt några andra slumpmässiga coola komponenter - nu vad? Hur kommer du faktiskt igång med att programmera denna Arduino sak? Hur ställer du upp det ... Läs mer
- Fritzing, ett gratis verktyg för ritning av kretsscheman Fritzing - Det ultimata verktyget för att skissa ut elektronikprojekt [Cross Platform] Fritzing - Det ultimata verktyget för att skissa ut elektronikprojekt [Cross Platform] Trots att det liknar en alcopop är Fritzing faktiskt en otrolig bit av fri programvara som du kan använda för att skapa krets- och komponentdiagram för användning med snabbprototiska elektronikkort, såsom den fantastiska öppen källan Arduino ... Läs mer
- En närmare titt på strukturen hos en Arduino App & Exempel Blink-programmet Första steget med Arduino: En närmare titt på kretskortet och strukturen i ett program Första steget med Arduino: En närmare titt på kretskortet och strukturen Av ett program Förra gången lämnade jag dig med att ha ställt in din Arduino för att arbeta med Mac eller Windows, och har laddat upp en enkel testapp som blinkade inbyggd LED. Idag ska jag förklara koden ... Läs mer
För det här projektet behöver du åtminstone 8 eller 9 lysdioder i antingen röd eller grön, a motstånd för var och en av dem, a bakbord och några anslutningstrådar. Startpaketet från Ooomlout, som jag nyligen köpte själv och är avbildat i denna handledning, erbjuder stort värde för pengarna och har mer lysdioder och motstånd än vad du någonsin behöver, samt att du kommer med ett bra brödbräda och Arduino-fodral för att hålla saker städa.
Här är det sista:
Och en video av den i aktion.
Här är en vy över ledningarna från Fritzing. Det är väldigt enkelt - anslut bara LED-ledarens positiva ledning till stiften 2-> oavsett (upp till stift 13), och anslut de negativa benen till marken inline med ett motstånd. Värdet jag har använt här är 560 Ohm. Det är det för ledningar.
På programsidan, tänk på hur du kan skriva till alla dessa lysdioder i koden. Du kan gå om det så här:
int led1 = 2; // första LED på stift 2 int led2 = 3; // andra på pin 3 // etc etc void loop () digitalWrite (led1, HIGH); fördröjning (100); digitalWrite (LED1, LOW); fördröjning (100); digitalWrite (LED2, HÖG); // etc
Du bör kunna se det med 9 lysdioder, det här blir snabbt tröttsamt. Svaret ligger med arrayer, vilken om du inte kan komma ihåg vår Programmering 101 om grundläggande datatyper Grundläggande för dataprogrammering 101 - Variabler och datatyper Grunderna för dataprogrammering 101 - Variabler och datatyper Efter att ha introducerat och pratat lite om Objektorienterad programmering före och där namnet kommer från , Jag trodde att det är dags att vi går igenom de absoluta grunderna för programmering på ett icke-språkligt sätt. Detta ... Läs mer - är i princip bara listor.
Syntaxen ser ut så här (placera detta som första raden i din kod):
int leds [] = 2,3,4,5,6,7,8,9,10;
Torghakarna indikerar att "ledarna" variabel kommer att bli en Array. De lockiga axlarna bifogar listan över stiftnummer som vårt sortiment kommer att hålla.
Nu, för att använda en Array, måste vi ta itu med det med indexnumret. De index börjar vid 0, och kommer därför alltid att gå upp till 1 mindre än det totala antalet saker inne i det (så med 9 saker, den sista skulle ha ett index på 8).
Du skriver det så här:
lysdioder [0]
Vilket i vårt fall skulle hämta numret 2, för det är vad? S på index 0 i vår array.
Följande hittills? Bra. Det ensamma är inte tillräckligt för oss - vi behöver också ett sätt att iterera över varje del av våra lysdioder. För det kommer vi att använda en för loop. Syntaxen för att göra det är så här:
för (initial variabel; villkor under vilket vi upprepar igen, byt till variabel varje iteration)
Till exempel:
för (int i = 0; i<9; i++)
Som säger
- starta denna loop med en variabel, jag, som har ett värde av noll-
- fortsätt looping bara när jag är mindre än 9?(så: 0,1,2,3,4,5,6,7,8)
- varje gång, lägg till 1 till i (jag ++ är en kort väg att säga i = i + 1)
Så i grunden kommer slingan att upprepas så många gånger som vi har lysdioder, och varje gång det upprepas kommer vi att ha en variabel, jag, som vi kan använda men vi gillar.
Vi ska använda denna struktur två gånger för att börja med. En gång inuti inställningsfunktionen för att göra alla våra stiften vänd till utgångsläge, så här:
tomrumsinställning () för (int i = 0; i< 9;i++) pinMode(leds[i],OUTPUT);
Kan du se vad vi gjorde där? Istället för att skriva 9 linjer kod för att deklarera varje enskild stift som utgång skapar vi en "för" slinga för att upprepa sig 9 gånger, varje gång en annan stift ställs in.
Nu borde du kunna se hur vi kan göra exakt samma sak i huvudprogramslingan för att slå varje LED i följd:
tomrumsling () för (int i = 0; i< 9;i++) digitalWrite(leds[i],HIGH); delay(100); digitalWrite(leds[i],LOW);
Försök med det. Du kan ladda ner hela koden för dagens projekt härifrån om du inte vill skriva ut det igen (även om jag uppmuntrar dig, eftersom det hjälper lärandeprocessen).
Okej, så nu har vi en ganska tråkig belysningssekvens. Låt oss programmera en annan. Bara för skoj, låt oss göra det helt slumpmässigt. Byt huvudslingskoden med följande:
tomrumsling () int randomLed = slumpmässig (0,8); digitalWrite (lysdioder [randomLed], HIGH); fördröjning (50); randomLed = slumpmässig (0,8); digitalWrite (lysdioder [randomLed], LOW);
I stället för att använda en "för" loop för att iterera över varje LED väljer vi ett slumptal från 0-9 istället och blinkar det på.
Jag ska lämna den där för idag, eftersom du nu ska vara beväpnad med tillräcklig kunskap för att programmera alla nya sekvenser och experimentera med loopar. För att bevisa hur lätt det här är, utmanade jag min fru att tänka på en sekvens som hon skulle vilja se och fick då?henne att programmera det själv, Gett bara koden och lektionerna du har haft hittills. Hon kom upp med det här, så se om du kan matcha det för läxor!
Frågor, förslag, problem - snälla ta kontakt i kommentarerna.
Utforska mer om: Arduino.