aboutsummaryrefslogtreecommitdiffstats
path: root/source/arduino/for.rst
diff options
context:
space:
mode:
Diffstat (limited to 'source/arduino/for.rst')
-rw-r--r--source/arduino/for.rst117
1 files changed, 117 insertions, 0 deletions
diff --git a/source/arduino/for.rst b/source/arduino/for.rst
new file mode 100644
index 0000000..b7e2e95
--- /dev/null
+++ b/source/arduino/for.rst
@@ -0,0 +1,117 @@
+.. _arduino-for:
+
+for statements
+==============
+
+Desciption
+----------
+
+The **for** statement is used to repeat a block of statements
+enclosed in curly braces. An increment counter is usually used to
+increment and terminate the loop. The **for** statement is useful
+for any repetitive operation, and is often used in combination with
+arrays to operate on collections of data/pins.
+
+
+
+There are three parts to the **for** loop header:
+
+
+
+``<strong>for</strong> (<strong>initialization</strong>;<strong> condition</strong>;<strong> increment</strong>) {``
+
+
+
+``//statement(s);``
+
+
+
+``}``
+
+|image0|
+
+
+The **initialization** happens first and exactly once. Each time
+through the loop, the **condition** is tested; if it's true, the
+statement block, and the **increment** is executed, then the
+**condition** is tested again. When the **condition** becomes
+false, the loop ends.
+
+
+
+Example
+-------
+
+::
+
+ // Dim an LED using a PWM pin
+ int PWMpin = 10; // LED in series with 470 ohm resistor on pin 10
+
+ void setup()
+ {
+ // no setup needed
+ }
+
+ void loop()
+ {
+ for (int i=0; i <= 255; i++){
+ analogWrite(PWMpin, i);
+ delay(10);
+ }
+ }
+
+
+
+Coding Tips
+-----------
+
+The C **for** loop is much more flexible than **for** loops found
+in some other computer languages, including BASIC. Any or all of
+the three header elements may be omitted, although the semicolons
+are required. Also the statements for initialization, condition,
+and increment can be any valid C statements with unrelated
+variables, and use any C datatypes including floats. These types of
+unusual **for** statements may provide solutions to some rare
+programming problems.
+
+
+
+For example, using a multiplication in the increment line will
+generate a logarithmic progression:
+
+::
+
+ for(int x = 2; x < 100; x = x * 1.5){
+ println(x);
+ }
+
+
+
+Generates: 2,3,4,6,9,13,19,28,42,63,94
+
+
+
+Another example, fade an LED up and down with one **for** loop:
+
+
+
+::
+
+ void loop()
+ {
+ int x = 1;
+ for (int i = 0; i > -1; i = i + x){
+ analogWrite(PWMpin, i);
+ if (i = 255) x = -1; // switch direction at peak
+ delay(10);
+ }
+ }
+
+
+
+See also
+--------
+
+
+- `while <http://arduino.cc/en/Reference/While>`_
+