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 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:
Deel 1: declaratie en initialisatie
- 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
Deel 2: setup
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.
Deel 3: 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.
Opdracht 2
Bouw dezelfde schakeling van verkeerslichten A en B zoals in module 5 (sequentie).
Je mag zelf kiezen op welke pinnen de leds zijn aangesloten. Zorg telkens voor een weerstand in serie.
Maak gebruik van lijsten en een eigen functie om de leds aan en uit te zetten.
Pas deze code aan:
Deel 1: declaratie en initialisatie
Deel 2: setup
Eigen functies
Deel 3: loop
Deel 1: declaratie en initialisatie
- Maak een lijst aan die alle pinnummers bevat die je gebruikt. Handig is hier om een lijst met de namen van de pinnen te maken.
- Maak een variabele aan voor het totaal aantal pinnen dat gebruikt wordt.
herinner je: int pinLijst[] = {2,3,5,7};
Mogelijk oplossing
Deel 2: setup
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 6 waardes bevat lopen de indexnummers van 0 tot en met 5. Vandaar dat i van 0 tot en met 5 (i<6) doorlopen wordt.
Eigen functies
Maak de functie setPins(int pinWaardes[]) aan. Deze functie wordt bepaald door 1 parameter namelijk een lijst van pinWaardes[].
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.
De functie digitalwrite(pin, waarde) wordt bepaald door twee parameters namelijk pin en waarde. Deze worden meegegeven door de lijst pinLijst[] en door de lijst pinWaardes[].