Отримання даних з датчиків дозволяє роботам реагувати на зміни в реальному часі. Наприклад: "Якщо прискорення по осі Z більше 3g, тоді увімкнути зелені світлодіоди".

Прискорювач вимірює, як швидко робот прискорюється вздовж певної осі, в одиницях "g", де g = 9.80665 м/с² (це швидкість прискорення через земну гравітацію).
- getAcceleration().x — прискорення зліва направо (від -8 до 8g).
- getAcceleration().y — прискорення вперед і назад (від -8 до 8g).
- getAcceleration().z — прискорення вгору і вниз (від -8 до 8g).
- Math.sqrt((getAcceleration().x²) + (getAcceleration().y²) + (getAcceleration().z²)) — це загальне прискорення робота по всіх осях (від 0 до 14g).
- getVerticalAcceleration() — прискорення вгору або вниз незалежно від орієнтації робота (від -8 до 8g).
Уявіть, що робот рухається вперед — прискорювач вимірює, наскільки швидко він набирає швидкість або сповільнюється. Це схоже на автомобільний спідометр, але в трьох вимірах!

Датчик орієнтації визначає, як нахилений робот по відношенню до землі, у градусах.
- getOrientation().pitch — нахил вперед чи назад (від -180° до 180°).
- getOrientation().roll — нахил ліворуч чи праворуч (від -90° до 90°).
- getOrientation().yaw — обертання навколо осі (від -180° до 180°).
Уявіть, що ви тримаєте робота в руках і нахиляєте його вперед, назад або обертаєте його на столі. Ці дані показують, наскільки сильно робот нахилений або повернутий.

Гіроскоп вимірює швидкість обертання робота навколо певної осі.
- getGyroscope().pitch — швидкість обертання вперед або назад (від -2,000° до 2,000°/с).
- getGyroscope().roll — швидкість обертання ліворуч або праворуч (від -2,000° до 2,000°/с).
- getGyroscope().yaw — швидкість обертання з боку в бік (від -2,000° до 2,000°/с).
Гіроскоп може виміряти, як швидко робот обертається, наприклад, коли ви його штовхаєте чи кидаєте.

Швидкість показує, наскільки швидко робот рухається по певній осі, у сантиметрах за секунду.
- getVelocity().x — швидкість праворуч (+) чи ліворуч (-), в см/с.
- getVelocity().y — швидкість вперед (+) чи назад (-), в см/с.
- Math.sqrt((getVelocity().x²) + (getVelocity().y²)) — загальна швидкість робота по всіх осях (завжди додатнє значення, в см/с).
Ви можете дізнатися, наскільки швидко робот рухається вперед, назад чи вбік.

Локація показує, де знаходиться робот у просторі відносно точки старту програми, у сантиметрах.
- getLocation().x — відстань праворуч (+) чи ліворуч (-) від точки старту, в см.
- getLocation().y — відстань вперед (+) чи назад (-) від точки старту, в см.
- Math.sqrt((getLocation().x²) + (getLocation().y²)) — загальна відстань від точки старту (завжди додатнє значення, в см).
Робот запам’ятовує, де він стартував, і розповідає, наскільки далеко він відійшов.

getDistance() — це функція, яка показує загальну відстань, яку робот подолав під час виконання програми. Вимірюється у сантиметрах.

getSpeed() — це функція, яка показує поточну швидкість руху робота. Значення може бути від -255 до 255:
- Позитивне значення означає рух уперед.
- Негативне значення — рух назад.
- 0 означає, що робот стоїть на місці.

getHeading() — це функція, яка визначає напрямок руху робота в градусах:
- 0° — вперед (робот дивиться у напрямку вашого тіла).
- 90° — вправо.
- 180° — назад.
- 270° — вліво.


getMainLed() — ця функція дозволяє дізнатися колір основного світлодіода робота у форматі RGB:
- getMainLed().r — рівень червоного (0-255).
- getMainLed().g — рівень зеленого (0-255).
- getMainLed().b — рівень синього (0-255).

getFrontLed() — показує колір переднього світлодіода у форматі RGB (0-255 для кожного кольору).
Доступно для Sphero BOLT, BOLT+ і RVR/RVR+.

getLeftHeadlightLed() — колір лівої фари (RGB 0-255).
Доступно для RVR/RVR+.

getRightHeadlightLed() — колір правої фари (RGB 0-255).
Доступно для RVR/RVR+.

getLeftLed() — колір лівого світлодіода (RGB 0-255).
Доступно для Sphero BOLT+ і RVR/RVR+.

getRightLed() — колір правого світлодіода (RGB 0-255).
Доступно для Sphero BOLT+ і RVR/RVR+.

getBackLed() — показує колір заднього світлодіода у форматі RGB (0-255).
Доступно для Sphero BOLT, BOLT+ і RVR/RVR+.

getBackLed().b — рівень яскравості синього каналу заднього світлодіода (0-255).
Для Sphero BOLT використовуйте getBackLed(), щоб отримати значення RGB.

getElapsedTime() — функція, яка показує, скільки часу (в секундах) виконується програма.
Це може бути корисно для створення логіки, яка змінює поведінку робота залежно від часу.
Наприклад, можна використовувати getElapsedTime(), щоб змінювати напрямок руху кожні 4 секунди.
var lastTime = 0;
var loopCount = 0;
async function startProgram() {
setBackLed(255); // Увімкнення заднього світлодіода для індикації роботи програми.
for (var _i1 = 0; _i1 < 4; _i1++) {
await Sound.Water.Waves.play(false); // Відтворення звуку хвиль.
// Якщо loopCount парний, змінюємо напрямок руху вперед.
if ((loopCount % 2) === 1) {
while (!(((getElapsedTime() - lastTime) >= 4))) { // Перевіряємо, чи пройшло 4 секунди.
setMainLed({ r: 11, g: 255, b: 0 }); // Встановлення зеленого кольору світлодіода.
await rawMotor(1000, 1000, 0.4); // Рух уперед.
setMainLed({ r: 0, g: 0, b: 0 }); // Вимикання основного світлодіода.
await delay(0.5); // Затримка.
}
lastTime = getElapsedTime(); // Оновлення часу.
} else {
// Зміна напрямку руху назад.
while (!(((getElapsedTime() - lastTime) >= 4))) { // Перевірка на 4 секунди.
setMainLed({ r: 255, g: 41, b: 16 }); // Встановлення червоного кольору світлодіода.
await rawMotor(-1000, -1000, 0.4); // Рух назад.
setMainLed({ r: 0, g: 0, b: 0 }); // Вимикання основного світлодіода.
await delay(0.5); // Затримка.
}
lastTime = getElapsedTime(); // Оновлення часу.
}
loopCount = (loopCount + 1); // Збільшення лічильника циклу.
await delay(0.025); // Невелика пауза для оптимізації роботи програми.
}
}Пояснення коду:
1. lastTime: змінна, яка зберігає час останньої події.
2. loopCount: лічильник, який визначає, в якому циклі зараз знаходиться програма.
3. setBackLed(255): увімкнення заднього світлодіода.
4. Sound.Water.Waves.play(false): відтворення звуку хвиль.
5. Логіка if...else: змінює напрямок руху робота залежно від значення лічильника loopCount.
6. getElapsedTime(): використовується для перевірки, чи минуло заданий час (4 секунди).
7. Світлодіоди змінюють кольори залежно від напрямку руху.
Ця функція ідеально підходить для створення циклічних анімацій, змін поведінки робота в певні часові інтервали або інтервального керування рухом.

getAmbientLight() — це функція, яка вимірює інтенсивність світла в одиницях люксів (lux).
Значення варіюються від 0 люксів (повна темрява) до 30,000–100,000 люксів (пряме сонячне світло).
У різних середовищах інтенсивність світла може значно відрізнятися, тому можливо доведеться коригувати умови програми залежно від освітленості.
Приклади значень освітленості в різних середовищах:
- Пряме сонячне світло: 30,000–100,000 люксів
- Денне світло: 10,000–25,000 люксів
- Ліхтарик телефона: 5,000–20,000 люксів
- Похмурий день: 1,000–5,000 люксів
- Середнє освітлення офісу або школи: 300–500 люксів
- Середнє освітлення вдома: 50–300 люксів
- Місячне світло: <0.5 люксів
Ця функція підтримується роботами Sphero BOLT, BOLT+ та RVR/RVR+.
Функція getAmbientLight() може бути корисною для створення програм, які реагують на зміни рівня освітленості.
Наприклад, можна запрограмувати робота змінювати колір світлодіодів або виконувати певну дію в темряві або при яскравому світлі.

getLastIRMessage() — показує, на якому каналі робот отримав останнє інфрачервоне повідомлення.
Потрібно заздалегідь оголосити подію onIRMessage(), щоб отримувати ці дані.

getCompassDirection() — це функція, яка визначає реальне відхилення між напрямком прицілювання (aim heading) і останнім значенням компаса на північ.
- 0° відповідає півночі.
- 90° — схід.
- 180° — південь.
- 270° — захід.
Для отримання точного значення потрібно спочатку виконати команду Calibrate Compass (Калібрування компаса).
Важлива примітка:
- Металеві або магнітні предмети можуть впливати на точність показників компаса.
- Ця функція дозволяє програмам враховувати реальну орієнтацію робота в просторі, що може бути корисним для створення географічно орієнтованих завдань.


getColor() — отримує значення RGB-кольору (від 0 до 255 для кожного кольорового каналу), яке визначає датчик кольору на RVR/RVR+.
- getColor("red") — повертає значення червоного каналу (від 0 до 255).
- getColor("green") — повертає значення зеленого каналу (від 0 до 255).
- getColor("blue") — повертає значення синього каналу (від 0 до 255).
Можливості датчика кольору
Датчик кольору можна використовувати для різних цікавих завдань.
Наприклад, можна змінювати основне підсвічування світлодіодів (main LEDs), щоб воно відображало колір, який зчитує датчик кольору RVR/RVR+.
Приклад програми:
Коли програма запускається, основні світлодіоди на RVR/RVR+ змінюються, відображаючи колір поверхні, на якій знаходиться робот.
Код JavaScript для цього прикладу:
async function startProgram() {
setMainLed(getColor());
}Удосконалення концепції:
У цьому прикладі робот буде рухатися, а основні світлодіоди будуть постійно оновлюватися, щоб відображати колір поверхні під датчиком.
Це створює "хамелеонний" режим, де RVR/RVR+ адаптує свої світлодіоди до кольору підлоги.
Код JavaScript для "хамелеонного" режиму:
async function startProgram() {
setSpeed(100);
while (true) {
setMainLed(getColor());
await delay(0.025);
}
}Цей датчик дозволяє створювати інтерактивні програми, де робот реагує на оточення за допомогою кольорових змін.

- getColorChannel("red") — отримує числове значення червоного каналу, від 0 до 255, яке повертає датчик кольору RVR/RVR+.
- getColorChannel("green") — отримує числове значення зеленого каналу, від 0 до 255, яке повертає датчик кольору RVR/RVR+.
- getColorChannel("blue") — отримує числове значення синього каналу, від 0 до 255, яке повертає датчик кольору RVR/RVR+.

getDomeLeds() — повертає яскравість світлодіодів купола, значення від 0 до 15.

getHoloProjectorLed() — повертає яскравість світлодіода голографічного проектора, значення від 0 до 255.

getLogicDisplayLeds() — повертає яскравість білих світлодіодів логічного дисплея, значення від 0 до 255.
