Comparators
Comparators are used to compare values and create conditional logic; aka as Logical Operators or Relational Operators.
For example, the below code causes Sphero to accelerate until its speed is greater than 80:
async function startProgram() {
setSpeed(20);
while (!(getSpeed() >= 80)) {
setSpeed(getSpeed() + 5);
await delay(0.2);
}
}
Comparators
=== Evaluates if the left value is equal to the right value, does not compensate for different data types (example: "3" === 3 is false)
== Evaluates if the left value is equal the right value, compensating for different data types (example: 3 == "3" is true)
!= Evaluates if the left value differs from the right value, compensating for different data types (example: "3.01" != 3.01 is false)
!=\= Evaluates if the left value differs from the right value, does not compensate for different data types (example: "3.01" !== 3.01 is true)
< Evaluates if the left value is less than the right value
<= Evaluates if the left value is less than or equal to the right value
> Evaluates if the left value is greater than the right value
>= Evaluates if the left value is greater than or equal to the right value
Logic
&& links multiple conditions, requiring that all conditions must be true for the set to evaluate as true
|| links multiple conditions, allowing the set to evaluate as true if any condition is true
Robot Type
getConnectedRobotType Evaluates if a given robot is connected to execute some logic, where the robot names are BOLT, RVR/RVR+, Sphero (includes Sphero SPRK+, SPRK, and 2.0), Mini, Ollie, BB8, BB9E, R2D2, and R2Q5. For example, to set the speed based on the connected robot, use:
var botSpeed = 0;
async function startProgram() {
if (getConnectedRobotType() === RobotType.Sphero) {
botSpeed = 100;
}
if (getConnectedRobotType() === RobotType.BB8) {
botSpeed = 200;
}
setSpeed(botSpeed);
}
Examples
Spinning Top
This program uses a > operator combined with an if then, else statement to modulate color values based on the Gyroscopic Rotation. Spin the robot like a top clockwise (negative yaw degrees) to see the red LED channel, or spin it counterclockwise (positive yaw degrees) to see the green LED channel:
async function startProgram() {
setStabilization(false);
while (true) {
if ((getGyroscope().yaw > 1.0)) {
setMainLed({ r: 0, g: getGyroscope().yaw / 7.84, b: 0 });
} else {
setMainLed({ r: Math.abs(getGyroscope().yaw / 7.84), g: 0, b: 0 });
}
await delay(0.25);
}
}
The Spinning Top shows that the combining several programming fundamentals like Control Flow, Operators, Comparators and Sensors unleashes the creative power of programming. You also used a new tool called "normalization" in this program. Normalizing modifies a value so it fits within a different range, just like how percentages normalize any 2 numbers from 0 - 100%. getGyroscope().yaw / 7.84 ensures that gyro values will generate valid setMainLed values. This is needed because the gyro range is -2,000° - 2,000°, whereas the LED range is 0 - 255. Hence, our normalization rate can be calculated as 2,000 / 255 = 7.84.