Your BOE Shield-Bot will need to make a lot of navigation decisions based on sensor inputs. Here is a simple sketch that demonstrates decision-making. It compares the value of a to b, and sends a message to tell you whether or not a is greater than b, with an if…else statement.
If the condition (a > b) is true, it executes the if statement’s code block: Serial.print("a is greater than b"). If a is not greater than b, it executes else code block instead: Serial.print("a is not greater than b").
// Robotics with the BOE Shield - SimpleDecisions void setup() { Serial.begin(9600); int a = 89; int b = 42; if(a > b) { Serial.print("a is greater than b"); } else { Serial.print("a is not greater than b"); } } void loop() { // Empty, no repeating code. }
Maybe you only need a message when a is greater than b. If that’s the case, you could cut out the else statement and its code block. So, all your setup function would have is the one if statement, like this:
void setup() { Serial.begin(9600); int a = 89; int b = 42; if(a > b) { Serial.print("a is greater than b"); } }
Maybe your sketch needs to monitor for three conditions: greater than, less than, or equal. Then, you could use an if…else if…else statement.
if(a > b) { Serial.print("a is greater than b"); } else if(a < b) { Serial.print("b is greater than a"); } else { Serial.print("a is equal to b"); }
A sketch can also have multiple conditions with the Arduino's boolean operators, such as && and ||. The && operator means AND; the || operator means OR. For example, this statement’s block will execute only if a is greater than 50 AND b is less than 50:
if((a > 50) && (b < 50)) { Serial.print("Values in normal range"); }
Another example: this one prints the warning message if a is greater than 100 OR b is less than zero.
if((a > 100) || (b < 0)) { Serial.print("Danger Will Robinson!"); }
One last example: if you want to make a comparison to find out if two values are equal, you have to use two equal signs next to each other: ==.
if(a == b) { Serial.print("a and b are equal"); }
You can chain more else if statements after if.
The example in this activity only uses one else if, but you could use more.
The rest of the statement gets left behind after it finds a true condition.
If the if statement turns out to be true, its code block gets executed and the rest of the chain of else ifs gets passed by.