Een Arduino-project Hoe maak je flitsende kerstverlichting Ornamenten

Een Arduino-project Hoe maak je flitsende kerstverlichting Ornamenten / DIY

Dit is het volgende deel in onze Arduino-serie, en deze keer zullen we het leren en gebruiken arrays om een ​​klein kerstboomornament te maken met verschillende knipperende reeksen. Dit zou een ideaal project zijn om de kinderen bezig te houden als je ze elementair solderen wilt leren - monteer de LED's gewoon op een kaart en je krijgt stroom van een standaard 9v batterij.

Het is ook een belangrijke les in de Arduino Arduino-programmering, maar als je niet van plan bent om dit als een sieraad te gebruiken, raad ik je ten sterkste aan het uit te leggen.

Opmerking: dit is een tutorial op beginnersniveau en we zullen zeker geen nieuwe grond breken - het is? gewoon een apparaat om de concepten van het gebruik te leren arrays en Voor loops omgaan met een groot aantal LED's (of andere uitvoerapparaten).

Als je dit nog niet hebt gedaan, zou dit nu 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 doen? Wat is Arduino en wat kun je ermee doen? De Arduino is een opmerkelijk klein elektronisch apparaat, maar als je er nog nooit een hebt gebruikt, wat precies zijn ze dan, en wat kun je ermee doen? Lees verder ?
  • Wat is een Arduino-starterkit en wat zit erin? Wat zit er in een Arduino Starter Kit? [MakeUseOf Explains] 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 zult meer nodig hebben dan alleen de echte Arduino om er iets uit te bouwen en daadwerkelijk aan de slag te gaan. Arduino "starter kits" zijn ... Lees meer
  • Meer coole onderdelen om te kopen met uw startpakket 8 meer coole componenten voor uw Arduino-projecten 8 meer coole componenten voor uw Arduino-projecten Dus u denkt erover om een ​​Arduino-starterkit te kopen, maar u vraagt ​​zich af of sommige basis-leds en -weerstanden zullen worden genoeg om je het weekend bezig te houden? Waarschijnlijk niet. Hier zijn nog eens 8 ... Lees meer
  • Aan de slag met uw Arduino-starterkit? Stuurprogramma's installeren en het board en de poort instellen Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het board en de poort instellen Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het board en de poort instellen Dus u hebt uzelf gekocht een Arduino-starterkit 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 meer
  • Fritzing, een gratis hulpmiddel voor het tekenen van schakelschema's Fritzing - de ultieme tool voor het schetsen van elektronica-projecten [Cross-platform] Fritzing - de ultieme tool voor het schetsen van elektronische projecten [Cross Platform] Ondanks klinken als een alcopop, is Fritzing eigenlijk een ongelooflijk stukje gratis software die je kunt gebruiken om circuit- en componentdiagrammen te maken voor gebruik met rapidprototyping-elektronicaborden zoals de fantastische open-source Arduino ... Lees meer
  • Een nadere blik op de structuur van een Arduino-app & het voorbeeld Blink-programma Eerste stappen met de Arduino: een nadere blik op de printplaat en de structuur van een programma Eerste stappen met de Arduino: een nadere blik op de printplaat en de structuur Van een programma De laatste keer dat ik vertrok, heb je je Arduino ingesteld om met Mac of Windows te werken, en heb je een eenvoudige testapp geüpload die de ingebouwde LED knipperde. Vandaag ga ik de code uitleggen ... Lees meer

Voor dit project heb je tenminste nodig 8 of 9 LED's in rood of groen, a weerstand voor elk van hen, a broodplank en een paar aansluitdraden. De starterkit van Ooomlout, die ik onlangs zelf heb gekocht en die in deze tutorial is afgebeeld, biedt veel waar voor uw geld en heeft meer LED's en weerstanden dan u ooit nodig zult hebben, en komt ook met een nette breadboard en een Arduino-hoes om dingen te bewaren ordelijk.

Hier is het laatste ding:

En een video ervan in actie.

Hier is een weergave van de bedrading van Fritzing. Het is heel basic - sluit gewoon de positieve draad van de LED's aan op pinnen 2-> ongeacht (tot pin 13) en verbind de negatieve benen met de grond in lijn met een weerstand. De waarde die ik hier heb gebruikt is 560 Ohm. Dat is het voor bedrading.

Denk er aan de software over na hoe je naar al deze LED's in de code kunt schrijven. Je zou het zo kunnen aanpakken:

int led1 = 2; // eerste LED op pin 2 int led2 = 3; // tweede op pin 3 // etc etc void loop () digitalWrite (led1, HIGH); vertraging (100); digitalWrite (LED1, LOW); vertraging (100); digitalWrite (LED2, HIGH); // enz 

Je zou dat moeten kunnen zien met 9 LED's, dit zal snel moe worden. Het antwoord ligt bij arrays, wat als je je niet kunt herinneren aan onze Programmering 101 over basisgegevenstypes De grondbeginselen van computerprogrammering 101 - Variabelen en datatypen De basisprincipes van computerprogrammering 101 - Variabelen en datatypen Na een introductie en bespreking van Object Oriented Programming voor en waar de naamgever vandaan komt , Ik dacht dat het tijd werd om de absolute basis van programmeren op een niet-taalspecifieke manier te doorlopen. Deze ... Lees meer - zijn eigenlijk gewoon lijsten.

De syntaxis ziet er als volgt uit (plaats dit als de eerste regel in uw code):

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

De vierkante haken geven aan dat de? Leds? variabele wordt een reeks. De accolades omsluiten de lijst met pincodes die onze array bevat.

Om een ​​array te gebruiken, moeten we deze nu adresseren aan de hand van het indexnummer. De index begint om 0, en zal daarom altijd tot 1 minder gaan dan het totaal aantal dingen erin (dus met 9 items zou de laatste een index van 8 hebben).

Je schrijft het zo:

leds [0]

Wat in ons geval het nummer 2 zou halen, want dat is wat? S op index 0 in onze array.

Tot nu toe volgen? Super goed. Dat alleen is niet genoeg voor ons - we hebben ook een manier nodig om elk element van onze LED-array te herhalen. Daarvoor zullen we een for loop. De syntaxis om dat te doen is als volgt:

voor (initiële variabele; voorwaarde waaronder we opnieuw herhalen; verander in variabele elke iteratie)

Bijvoorbeeld:

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

Waarop staat

  • start deze lus met een variabele, ik, met een waarde van nul
  • ga door met herhalen alleen als i is 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 in principe zal de lus zo vaak worden herhaald als we LED's hebben en elke keer dat deze herhaald wordt, hebben we een variabele, ik, die we kunnen gebruiken hoe we ook houden.

We zullen deze structuur in het begin twee keer gebruiken. Eenmaal in de set-upfunctie om al onze pinnen naar de uitvoermodus te schakelen, zoals deze:

void setup () for (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, maken we een 'voor' lus om zichzelf 9 keer te herhalen, elke keer dat een andere pin wordt ingesteld.

Nu zou je in staat moeten zijn om precies te zien hoe we precies hetzelfde kunnen doen in de hoofdprogrammalus om elke LED in volgorde aan te zetten:

void loop () for (int i = 0; i< 9;i++) digitalWrite(leds[i],HIGH); delay(100); digitalWrite(leds[i],LOW);  

Probeer dat eens. Je kunt de volledige code voor het project van vandaag hier downloaden als je het liever niet opnieuw typt (hoewel ik je aanmoedig, omdat het het leerproces helpt).

Oké, dus nu hebben we een vrij saaie verlichtingsreeks. Laten we nog een programma programmeren. Gewoon voor de lol, laten we het helemaal willekeurig maken. Vervang de hoofdluscode hiermee:

void loop () int randomLed = random (0,8); digitalWrite (leds [randomLed], HIGH); delay (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 uit 0-9 en laten we dat oplichten.

Ik laat het daar vandaag achter, want je zou nu voldoende kennis moeten hebben om alle nieuwe reeksen te programmeren en met loops te experimenteren. Om te bewijzen hoe gemakkelijk dit alles is, daagde ik mijn vrouw uit om een ​​reeks te bedenken die ze graag wilde zien en vervolgens kreeg?haar om het zelf te programmeren, alleen de code en lessen die je tot nu toe hebt gehad. Ze bedacht dit, dus kijk of je dat kunt matchen voor huiswerk!

Vragen, suggesties, problemen - neem contact op met de opmerkingen.

Ontdek meer over: Arduino.