Advertentie
Dit is het volgende deel in onze lerende Arduino-serie, en deze keer? Ik leer over en gebruik het Arrays om een klein kerstboomornament te maken met verschillende knipperende sequenties. Dit zou een ideaal project zijn om de kinderen bezig te houden als je ze basissolderen wilt leren - monteer gewoon de LED's op een stuk kaart en je krijgt stroom van een standaard 9v-batterij.
Het is ook een belangrijke les in Arduino-programmeren voor beginners, maar als je niet van plan bent dit daadwerkelijk als ornament te gebruiken, raad ik je ten zeerste aan om het toch uit te proberen.
Opmerking: dit is een tutorial voor beginners en we hebben zeker gewonnen? geen baanbrekend werk meer? s? gewoon een apparaat om de concepten van het gebruik te leren Arrays en Voor lussen om te gaan met een groot aantal leds (of andere uitvoerapparaten).
Als je het niet hebt gedaan? t al, nu zou het een goed moment zijn om samen met de andere artikelen in de serie te volgen:
- Wat is Arduino en wat kun je ermee doen Wat is Arduino en wat kun je ermee?De Arduino is een opmerkelijk klein elektronisch apparaat, maar als je er nog nooit een hebt gebruikt, wat zijn dat dan precies en wat kun je ermee doen? Lees verder ?
- Wat is een Arduino-starterkit en wat bevat deze? Wat zit er in een Arduino Starter Kit? [MakeUseOf Explains]Ik heb eerder de Arduino open-source hardware hier op MakeUseOf geïntroduceerd, maar je hebt meer nodig dan alleen de daadwerkelijke Arduino om er iets uit te bouwen en daadwerkelijk aan de slag te gaan. Arduino "starterkits" zijn ... Lees verder
- Meer coole componenten om te kopen met uw starterkit 8 meer coole componenten voor uw Arduino-projectenDus u denkt erover om een Arduino-starterkit te kopen, maar vraagt u zich af of enkele basis-LED's en weerstanden voldoende zullen zijn om u een weekend bezig te houden? Waarschijnlijk niet. Hier zijn er nog 8 ... Lees verder
- Aan de slag met uw Arduino Starter Kit? Stuurprogramma's installeren en het bord en de poort instellen Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het bord en de poort instellenDus je hebt een Arduino-starterkit voor jezelf gekocht, en mogelijk enkele andere willekeurige coole componenten - wat nu? Hoe begin je eigenlijk met het programmeren van dit Arduino-ding? Hoe stel je het in ... Lees verder
- Fritzing, een gratis tool voor het tekenen van schakelschema's Fritzing - De ultieme tool voor het uittekenen van elektronische projecten [Cross Platform]Ondanks dat het klinkt als een alcopop, is Fritzing eigenlijk een ongelooflijk beetje gratis software die je kunt gebruiken om te maken circuit- en componentdiagrammen voor gebruik met rapid-prototyping elektronische printplaten zoals de fantastische open-source Arduino ... Lees verder
- Een nadere blik op de structuur van een Arduino-app en het voorbeeldknipperprogramma Eerste stappen met de Arduino: een nadere blik op de printplaat en de structuur van een programmaDe laatste keer dat ik je verliet, heb je je Arduino ingesteld om met Mac of Windows te werken en heb ik een eenvoudige test-app geüpload die de ingebouwde LED knipperde. Vandaag ga ik de code uitleggen ... Lees verder
Voor dit project, jij? Ik heb tenminste nodig 8 of 9 LED's in rood of groen, een weerstand voor elk van hen, een broodplank en enkele aansluitdraden. De starterkit van Ooomlout, die ik onlangs zelf heb gekocht en in deze tutorial staat afgebeeld, biedt veel waar voor uw geld en heeft meer leds en weerstanden dan u? Ik zal het ooit nodig hebben, maar ook met een nette breadboard en Arduino-koffer om alles netjes te houden.
Hier? s het laatste ding:
En een video ervan in actie.
Hier? s een zicht op de bedrading van Fritzing. Het? s erg eenvoudig - sluit gewoon de positieve draad van de LED's aan op pinnen 2-> wat dan ook (tot pin 13) en verbind de negatieve poten in lijn met de grond met een weerstand. De waarde ik? hier gebruikt is 560 Ohm. Dat? s het voor bedrading.
Denk aan de softwarekant na over hoe u naar al deze LED's in de code kunt schrijven. Je zou het zo kunnen doen:
int led1 = 2; // eerste LED op pin 2. int led2 = 3; // tweede op pin 3. // etc etc ongeldige lus () {digitalWrite (led1, HIGH); vertraging (100); digitalWrite (led1, LOW); vertraging (100); digitalWrite (led2, HIGH); // enz. }
Je zou moeten kunnen zien dat met 9 LED's dit snel vermoeiend wordt. Het antwoord ligt bij Arrays, wat als je kunt? niet herinneren onze Programmering 101 over basistypen data De basis van computerprogrammering 101 - Variabelen en gegevenstypenIk heb een beetje geïntroduceerd en gepraat over Object Oriented Programming voor en waar zijn naamgenoot komt van, ik dacht dat het tijd is dat we de absolute basis van programmeren doorlopen in een niet-taalspecifieke manier. Dit... Lees verder - zijn in feite gewoon lijsten.
De syntax ziet er zo uit (plaats dit als de eerste regel in je code):
int leds [] = {2,3,4,5,6,7,8,9,10};
De vierkante haken geven aan dat de? Leds? variabele wordt een Array. De accolades omsluiten de lijst met pincodes die onze array zal bevatten.
Om een array te gebruiken, moeten we deze nu aan de hand van het indexnummer aanpakken. De index begint bij 0, en zal daarom altijd tot 1 minder gaan dan het totale aantal dingen erin (dus met 9 items zou de laatste een index van 8 hebben).
Je schrijft het zo:
leds [0]
Welke zou in ons geval het nummer 2 ophalen, omdat dat? s wat? s op index 0 in onze array.
Volg je tot nu toe? Super goed. Is dat alleen niet? t genoeg voor ons - we hebben ook een manier nodig om elk element van onze led-array te herhalen. Daarvoor gebruiken we een for loop. De syntaxis om dat te doen is als volgt:
voor (initiële variabele; toestand waaronder we opnieuw herhalen; verander naar variabele elke iteratie)
Bijvoorbeeld:
voor (int i = 0; ik <9; ik ++)
Waarop staat
- begin deze lus met een variabele, ik, die een waarde heeft van nul
- alleen doorgaan met lussen terwijl ik dat wel ben minder dan 9? (dus: 0,1,2,3,4,5,6,7,8)
- elke keer, voeg 1 toe aan i (i ++ is een korte manier om i = i + 1 te zeggen)
Dus eigenlijk zal de lus net zo vaak worden herhaald als we LED's hebben, en elke keer? s herhaald hebben we een variabele, ik, die we kunnen gebruiken zoals we willen.
Wij? Ik zal deze structuur twee keer gebruiken om mee te beginnen. Eenmaal binnen de setup-functie om al onze pinnen in de uitvoermodus te zetten, zoals deze:
ongeldige setup () {voor (int i = 0; i <9; i ++) {pinMode (leds [i], OUTPUT); } }
Kun je zien wat we daar hebben gedaan? In plaats van 9 regels code te schrijven om elke individuele pin als uitvoer te declareren, creëren we een 'for'-lus om zichzelf 9 keer te herhalen, waarbij elke keer een andere pin wordt ingesteld.
Nu zou u moeten kunnen zien hoe we precies hetzelfde kunnen doen in de hoofdprogrammalus om elke LED achtereenvolgens in te schakelen:
leegte lus () {voor (int i = 0; i <9; i ++) {digitalWrite (leds [i], HIGH); vertraging (100); digitalWrite (leds [i], LOW); } }
Probeer dat eens. Jij kan download hier de volledige code voor het project van vandaag als jij? typ het liever niet nog een keer uit (hoewel ik je aanmoedig dit te doen, omdat het het leerproces helpt).
Oké, dus nu hebben we een vrij saaie verlichtingsreeks. Laat? s nog een programma programmeren. Gewoon voor de lol? s maken het volledig willekeurig. Vervang de hoofdluscode door deze:
leegte lus () { int randomLed = willekeurig (0,8); digitalWrite (leds [randomLed], HIGH); vertraging (50); randomLed = willekeurig (0,8); digitalWrite (leds [randomLed], LOW); }
In plaats van een ‘for’ -lus te gebruiken om elke LED te herhalen, kiezen we in plaats daarvan een willekeurig getal van 0-9, en laten we dat branden.
Ik laat het daar voor vandaag, omdat je nu voldoende kennis moet hebben om alle nieuwe reeksen te programmeren en met lussen te experimenteren. Om te bewijzen hoe gemakkelijk dit allemaal is, daagde ik mijn vrouw uit om aan een reeks zij te denken? wil je zien, en dan?haar om het zelf te programmeren, gezien alleen de code en lessen je? heb tot nu toe gehad. Ze bedacht dit, dus kijk of je dat kunt matchen voor huiswerk!
Vragen, suggesties, problemen - neem contact op in de comments.
James heeft een BSc in Artificial Intelligence en is CompTIA A + en Network + gecertificeerd. Hij is de hoofdontwikkelaar van MakeUseOf en brengt zijn vrije tijd door met het spelen van VR paintball en bordspellen. Hij bouwt al pc's sinds hij een kind was.