Comparators (Порівняльні оператори) використовуються для порівняння значень і створення умовної логіки, також відомі як Logical (логічні) або Relational Operators (реляційні оператори).
Наприклад, наступний код змушує робота Sphero розганятися, поки його швидкість не стане більшою за 80:
async function startProgram() {
setSpeed(20);
while (!(getSpeed() >= 80)) {
setSpeed(getSpeed() + 5);
await delay(0.2);
}
}

=== Оцінює, чи ліве значення дорівнює правому значенню, не компенсуючи різні типи даних (наприклад: "3" === 3 дає false). == Оцінює, чи ліве значення дорівнює правому значенню, компенсуючи різні типи даних (наприклад: 3
== "3" дає true).
!= Оцінює, чи ліве значення відрізняється від правого значення, компенсуючи різні типи даних (наприклад: "3.01" != 3.01 дає false).
!== Оцінює, чи ліве значення відрізняється від правого значення, не компенсуючи різні типи даних (наприклад: "3.01" !== 3.01 дає true).
< Оцінює, чи ліве значення менше за праве значення.
<= Оцінює, чи ліве значення менше або дорівнює правому значенню.
> Оцінює, чи ліве значення більше за праве значення.
>= Оцінює, чи ліве значення більше або дорівнює правому значенню.

&& — (та) Об'єднує кілька умов, вимагаючи, щоб усі умови були правдивими для того, щоб результат був правдивим.
|| — (або) Об'єднує кілька умов, дозволяючи результату бути правдивим, якщо будь-яка умова є правдивою.

getConnectedRobotType — Оцінює, чи підключений певний робот для виконання логіки, де імена роботів: BOLT+, BOLT, RVR/RVR+, Mini, Ollie, SPRK+/SPRK/2.0, BB8, BB9E, R2D2, R2Q5.
Наприклад, для встановлення швидкості залежно від підключеного робота, використовуйте:
var botSpeed = 0;
async function startProgram() {
if (getConnectedRobotType() === RobotType.BOLT) {
botSpeed = 100;
}
if (getConnectedRobotType() === RobotType.Mini) {
botSpeed = 200;
}
setSpeed(botSpeed);
}var botSpeed = 0; - Оголошуємо змінну botSpeed і встановлюємо її значення на 0. Ця змінна буде використовуватися для зберігання значення швидкості робота.
if (getConnectedRobotType() === RobotType.BOLT) - Перевіряємо, чи підключений робот типу BOLT. Якщо так, то виконується наступний блок коду.
botSpeed = 100; - Якщо підключено робот типу BOLT, встановлюємо швидкість робота на 100.
if (getConnectedRobotType() === RobotType.Mini) - Перевіряємо, чи підключений робот типу Mini. Якщо так, виконується наступний блок коду.
botSpeed = 200; - Якщо підключено робот типу Mini, встановлюємо швидкість робота на 200.
setSpeed(botSpeed); - Встановлюємо швидкість робота згідно з значенням змінної botSpeed, яка була визначена в попередніх умовах.
Цей код перевіряє тип підключеного робота і встановлює відповідну швидкість для робота в залежності від його типу. Якщо підключено робот BOLT, швидкість буде 100, якщо Mini - 200.
Ця програма використовує оператор "більше за" (>) в поєднанні з умовним оператором if...else для зміни значень кольору на основі гіроскопічного обертання.
Якщо ви обертаєте робота по колу за годинниковою стрілкою (від'ємні значення кута нахилу по осі yaw), то побачите червоний канал світлодіода, або якщо обертати проти годинникової стрілки (позитивні значення по осі yaw) – зелений канал світлодіода:
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);
}
}setStabilization(false); — Вимикає стабілізацію, яка зазвичай допомагає роботу залишатися в рівновазі. Вимкнувши її, робот може вільно обертатися, що є необхідним для демонстрації ефекту "вертушки".
getGyroscope().yaw — Отримує значення кута обертання робота по осі yaw (поворот робота по горизонтальній осі). Якщо значення більше 1.0, робот обертається за годинниковою стрілкою, а якщо менше — проти годинникової стрілки.
setMainLed() — Встановлює колір головного світлодіода робота. Використовується для зміни кольору в залежності від кута обертання: o Якщо значення yaw більше 1.0 (обертання за годинниковою стрілкою), світлодіод світить зеленим кольором, причому яскравість зеленого залежить від величини обертання (нормалізоване значення гіроскопа). o Якщо значення yaw менше 1.0 (обертання проти годинникової стрілки), світлодіод стає червоним.
Нормалізація значень — Оскільки діапазон гіроскопа від -2000° до 2000°, а світлодіодний канал має діапазон від 0 до 255, ми використовуємо коефіцієнт нормалізації (2000 / 255 = 7.84), щоб зберегти пропорції між значеннями.
await delay(0.25); — Додає затримку між оновленнями кольору, щоб обертання виглядало плавно, а не миттєво. Цей код демонструє основні концепції програмування: використання гіроскопа для обертання, робота з умовними операторами і зміна кольору світлодіодів в залежності від сенсорних даних.
Приклад Spinning Top показує, як поєднання кількох основ програмування, таких як керування потоком (Control Flow), оператори (Operators), порівняльні операції (Comparators) та сенсори (Sensors), вивільняє творчу силу програмування. Також в цій програмі ви використовували новий інструмент, який називається "normalization" (нормалізація). Нормалізація змінює значення так, щоб воно відповідало іншому діапазону, так само, як відсотки нормалізують будь-які два числа від 0 до 100%.
Використання getGyroscope().yaw / 7.84 забезпечує правильні значення для setMainLed. Це необхідно, тому що діапазон гіроскопа становить від -2,000° до 2,000°, а діапазон LED від 0 до 255. Отже, наш коефіцієнт нормалізації можна обчислити як 2,000 / 255 = 7.84.
