diff options
Diffstat (limited to 'source/arduino/if.rst')
-rw-r--r-- | source/arduino/if.rst | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/source/arduino/if.rst b/source/arduino/if.rst new file mode 100644 index 0000000..d75f6d3 --- /dev/null +++ b/source/arduino/if.rst @@ -0,0 +1,95 @@ +.. _arduino-if: + +if (conditional) and ==, !=, <, > (comparison operators) +======================================================== + +**``if``**, which is used in conjunction with a comparison +operator, tests whether a certain condition has been reached, such +as an input being above a certain number. The format for an if test +is: + + + +:: + + if (someVariable > 50) + { + // do something here + } + + + +The program tests to see if someVariable is greater than 50. If it +is, the program takes a particular action. Put another way, if the +statement in parentheses is true, the statements inside the +brackets are run. If not, the program skips over the code. + + + +The brackets may be omitted after an *if* statement. If this is +done, the next line (defined by the semicolon) becomes the only +conditional statement. + +:: + + + if (x > 120) digitalWrite(LEDpin, HIGH); + + if (x > 120) + digitalWrite(LEDpin, HIGH); + + if (x > 120){ digitalWrite(LEDpin, HIGH); } + + if (x > 120){ + digitalWrite(LEDpin1, HIGH); + digitalWrite(LEDpin2, HIGH); + } // all are correct + + + +The statements being evaluated inside the parentheses require the +use of one or more operators: + + + +Comparison Operators: +~~~~~~~~~~~~~~~~~~~~~ + +:: + + x == y (x is equal to y) + x != y (x is not equal to y) + x < y (x is less than y) + x > y (x is greater than y) + x <= y (x is less than or equal to y) + x >= y (x is greater than or equal to y) + + + +Warning: +-------- + +Beware of accidentally using the single equal sign +(e.g.``if (x = 10)`` ). The single equal sign is the assignment +operator, and sets x to 10 (puts the value 10 into the variable x). +Instead use the double equal sign (e.g.``if (x == 10)``), which is +the comparison operator, and tests *whether* x is equal to 10 or +not. The latter statement is only true if x equals 10, but the +former statement will always be true. + + + +This is because C evaluates the statement ``if (x=10)`` as follows: +10 is assigned to x (remember that the single equal sign is the +`assignment operator <http://arduino.cc/en/Reference/Assignment>`_), +so x now contains 10. Then the 'if' conditional evaluates 10, which +always evaluates to TRUE, since any non-zero number evaluates to +TRUE. Consequently, ``if (x = 10)`` will always evaluate to TRUE, +which is not the desired result when using an 'if' statement. +Additionally, the variable x will be set to 10, which is also not a +desired action. + + + +**if** can also be part of a branching control structure using the +`if...else <http://arduino.cc/en/Reference/Else>`_] construction. |