Stap 6: Voor verklaring
In dit voorbeeld is alles over de voor de verklaring. Ik zal de syntaxis en hoe het te gebruiken. Ik zal ook gebruik maken van een schets vanuit de Arduino IDE. Laden de schets ForLoopIteration aangeroepen vanuit File/Examples/05.Control.
Je moet een Arduino, 6 rode LEDs, 6 220ohms weerstanden, een breadboard en paar jumper draden. Sluit de + ve tot een weerstand van elke LED en verbind ze op PINS 2,3,4,5,6 en 7 op de Arduino. Vervolgens sluit de leads-ve aan de GND op de Arduino.
De schets:
int timer = 100; Hoe hoger het getal, hoe langzamer de timing.
VOID Setup {}
voor (int thisPin = 2 thisPin < 8; thisPin ++) {/ / gebruik een for-lus om te initialiseren van elke pin als uitgang
pinMode (thisPin, OUTPUT);
}
}
void loop {}
voor (int thisPin = 2 thisPin < 8; thisPin ++) {/ / loop vanaf de laagste pin aan de strengste:
digitalWrite (thisPin, hoge); de PIN-code inschakelen:
delay(timer);
digitalWrite (thisPin, laag); de pin uitschakelen:
}
voor (int thisPin = 7; thisPin > = 2; thisPin--) {/ / loop vanaf de hoogste pin naar de laag:
digitalWrite (thisPin, hoge); de PIN-code inschakelen:
delay(timer);
digitalWrite (thisPin, laag); de pin uitschakelen:
}
}
Laten we ontleden de schets
Aangezien deze oefening over de voor instructie of lus, allereerst door uitleggen hoe het te gebruiken.
Syntaxis:
for (initialisatie, voorwaarde; increment) {}
vermelding(en);
}
De lus wordt gebruikt om te herhalen de vermelding(en) omsloten de gekrulde haakjes een aantal keren gedefinieerd door de increment en de voorwaarde.
Bijvoorbeeld:
voor (int een = 0; een < 10; a ++) {serial.println(a);}
- Initialisatie: int een = 0, declareert u een variabele en geef het een waarde.
- Conditie: gebruikt de vergelijkingsoperators om in te stellen van de voorwaarde.
- Increment: stijging/daling van de waarde van de variabele.
- Verklaring: de waarde van de variabele afdrukken een.
In het bovenstaande voorbeeld, declareren we een variabele van het type int genaamd "a" en we geven het de waarde 0. Dan we een voorwaarde die zeggen zetten dat zo lang als "a" is minder dan 10 afdrukken de waarde van "a" dan stijging door 1 met behulp van samengestelde rekenkunde "a".
Hier is de output:
- "a" = 0, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 1, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 2, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 3, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 4, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 5, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 6, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 7, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 8, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 9, is "een" minder dan 10? Ja; afdrukken "a" dan er 1 bij optellen om "a"
- "a" = 10, is "een" minder dan 10? Nee; Stop de lus
Deze lus liep slechts 10 keer omdat de voorwaarde is niet voldaan wanneer het de 11e keer uitvoerde.
Samengestelde rekenkundige of samengestelde opdrachten:
Dit zijn de stenonotatie van een rekenkundige vergelijking. Ze kunnen gemakkelijk worden vervangen door de rekenkundige vergelijking maar ze ziet er mooier in de code:
een ++ hetzelfde als een = a + 1 stappen een door + 1
a--hetzelfde als een = a-1 verlaagt een door -1 een += b hetzelfde als een = a + b stappen een door + b een-= b hetzelfde als een = a-b verlaagt een door-b een * b = hetzelfde als een = een * b stappen een door een * b een / b = hetzelfde als een = een / b verlaagt een door een / b
We gaan terug naar de schets:
int timer = 100;
Hiermee declareert u een variabele van het type int genaamd timer met de waarde 100. Dit zal worden gebruikt als een timer later de Cylon-effect te creëren.
VOID Setup {}
voor (int thisPin = 2 thisPin < 8; thisPin ++) {}
pinMode (thisPin, OUTPUT);
}
}
Dit is een zeer interessant gebruik van de for-lus. We gebruiken de for-lus instellen de modi pin op de Arduino naar uitvoer. Dit werkt alleen als de pennen die wij gebruiken zijn in een reeks gebruiken we de pinnen 2 tot en met 7. Dit for-lus vervangen de volgende regels:
- pinMode (2, OUTPUT);
- pinMode (3, OUTPUT);
- pinMode (4, OUTPUT);
- pinMode (5, OUTPUT);
- pinMode (6, OUTPUT);
- pinMode (7, OUTPUT);
void loop {}
voor (int thisPin = 2 thisPin < 8; thisPin ++) {}
digitalWrite (thisPin, hoge);
delay(timer);
digitalWrite (thisPin, laag);
}
voor (int thisPin = 7; thisPin > = 2; thisPin--) {}
digitalWrite (thisPin, hoge);
delay(timer);
digitalWrite (thisPin, laag);
}
}
Het doel van deze oefening is het inschakelen van de LED's één in een tijd van links naar rechts en van rechts naar links kisten van een Cylon-effect of het effect van Knight rider.
We doen dit effect door het creëren van twee for-lussen eens te verplaatsen van het licht van rechts naar links en de andere te verplaatsen van de lichten in de tegenovergestelde richting.
voor (int thisPin = 2 thisPin < 8; thisPin ++) {}
digitalWrite (thisPin, hoge);
delay(timer);
digitalWrite (thisPin, laag);
}
In deze for-lus die we op pin beginnen nummer 2 draaien op de LED een tegelijk, totdat zij tot de 7e pin, de LED's op voor een vertraging van "timer" die 100 milliseconden is blijven, dit geeft ons de illusie dat het licht van rechts naar links reisde.
voor (int thisPin = 7; thisPin > = 2; thisPin--) {}
digitalWrite (thisPin, hoge);
delay(timer);
digitalWrite (thisPin, laag);
}
In de tweede lus het licht begint bij pin 7 en stopt in de pin2, weer uitschakelt na een vertraging van "timer". Dit voltooit de effecten van het rood licht in beide richtingen te bewegen.