Lijsten
Een lijst (ook wel array genoemd) is een soort variabele die meerdere waarden tegelijk kan bewaren.
Je kunt het vergelijken met een ijsblokjesvorm: in plaats van één vakje (zoals bij een gewone variabele),
heb je meerdere vakjes naast elkaar waarin je getallen kunt zetten.
int pinLijst[] = {10,8,6,3};
- pinLijst is de gekozen naam voor de lijst
- Tussen de { } geef je de waardes van de lijst mee. In dit geval pin 2 tem pin 5.
- Elke waarde in de lijst krijgt een indexnummer, we starten bij 0. index 0 bevat de waarde 10, index 1 = 8, index 3 = 6, index 4 = 3.
- Eén enkele waarde uit de lijst kan je met het indexnummer oproepen:
x = pinLijst[1], waarbij x de waarde 8 zal bevatten.
We zagen reeds dat je een for-lus kan gebruiken om een reeks pinnen als input of output in te stellen. In het setup deel komt dan dit te staan:
// Deel 2: setup (wordt eenmalig doorlopen bij opstarten)
void setup() {
for(int PinNum = 2; PinNum < 8; PinNum++) {// pinnen met nummer 2 tot en met 8
pinMode(PinNum, OUTPUT);// instellen als output pinnen
}
}
Wanneer je pinnummers opgeslaan staan in een lijst wordt de code dit:
// Deel 1: declaratie en initialisatie (wordt eenmalig doorlopen bij opstarten)
int pinLijst [] = {2,3,5,7};
// Deel 2: setup (wordt eenmalig doorlopen bij opstarten)
void setup() {
for(int i = 0; i < 4; i++) {// alle waardes vanuit pinLijst met index 0,1,2,3
pinMode(pinLijst [i], OUTPUT);// instellen als output pinnen
}
}
Opdracht 1
Bouw je een schakeling met 4 leds volgens het circuit hieronder.
Je mag zelf kiezen op welke pinnen de leds zijn aangesloten. Zorg telkens voor een weerstand in serie.
Laat nu elke led afzonderlijk branden. Maak gebruik van een lijst en een for-lus.
Optimaliseer deze code:
Maak een lijst ledPins[] aan
- Maak een variable aan voor de wachttijd
- Maak een lijst aan die alle pinnummers bevat die je gebruikt.
herinner je: int pinLijst[] = {2,3,5,7};
Mogelijk oplossing
2. Lus in de set-up
Maak een for-lus in de set-up zo dat aan alle leds in de lijst een pinMode wordt toegekend.
Herinner je je nog?
for(initialisatie;voorwaarde;increment) {
proces;
}
Mogelijke oplossing
Hier werd de variable int i aangemaakt om alle waardes in de lijst te doorlopen. De naam van de variabele mag je zelf kiezen.
Aangezien onze lijst 4 waardes bevat lopen de indexnummers van 0 tot en met 3. Vandaar dat i van 0 tot en met 3 (i<4) doorlopen wordt.
3. Lus in de loop
Maak een for-lus in de loop zo dat aan alle leds in de lijst een voor een beginnen branden.
Herinner je je nog?
for(initialisatie;voorwaarde;increment) {
proces;
}
Mogelijke oplossing
Hier werd de variable int huidigePin aangemaakt om alle waardes in de lijst te doorlopen. De naam van de variabele mag je zelf kiezen.
Aangezien onze lijst 4 waardes bevat lopen de indexnummers van 0 tot en met 3. Vandaar dat huidigePin van 0 tot en met 3 (i<4) doorlopen wordt.
Deze oefening is gebaseerd op een voorbeeld van Arduino. Wil je de volledige oefening proberen, breidt dan uit naar 6 leds en implementeer een tweede for-lus in het loop gedeelte waarbij alle leds één voor één weer uit gaan.
Voor de oplossing ga naar File > Examples > 05.Control > Arrays.