Skip to main content
Початок роботи

Роботи Sphero — це веселі, міцні та програмовані роботи! Sphero Edu JavaScript Wiki — це посібник, який допоможе вам навчитися програмувати роботи Sphero за допомогою JavaScript, найпоширенішої мови програмування для вебу у світі. Вам знадобиться робот Sphero, додаток Sphero Edu на сумісному пристрої та бажання вчитися.

 

Чому JavaScript?

JavaScript — одна з найпопулярніших мов програмування у світі. Вона дуже корисна для створення сучасних вебсайтів, і навіть можна будувати серверні частини вебсайтів за допомогою розширень цієї мови. Спочатку JavaScript був створений у 1995 році Брінданом Айком в компанії Netscape, одній з перших інтернет-компаній, що розробила популярний веб-браузер в епоху модемного підключення до інтернету. Спочатку мова називалась "Mocha" і була названа засновником Netscape, Марком Андріссеном, одним з найбільш відомих підприємців Кремнієвої долини.

Netscape почала працювати з компанією Sun Microsystems, яка розробила Java — популярну мову, що підтримувала додатки на ранніх комп'ютерах, мобільних пристроях і мобільних телефонах. Обидві компанії мали на меті створити плагін, щоб існуючі Java-додатки могли працювати нативно в популярному веб-браузері, без потреби в їх переписуванні. Тому Netscape створила мову сценаріїв, подібну до синтаксису Java, щоб ці додатки могли використовуватися, а також, що важливо, усі програмісти Java могли швидко адаптуватися без необхідності вивчати нову мову з нуля. Мова також виявилась дуже потужною. До того як з'явився JavaScript, більшість веб-сторінок будувались виключно з HTML та CSS; вони були дуже статичними. JavaScript дозволив зробити сторінки більш динамічними, використовувати анімації, отримувати введення з форм та відтворювати медіафайли.

Після періоду конкуренції між мовами програмування для вебу, JavaScript переміг як домінуюча мова, і тепер ви можете писати JavaScript, який працює в усіх сучасних веб-браузерах, таких як Chrome, Safari, Firefox та Internet Explorer на різноманітних пристроях, підключених до інтернету. Якщо ви плануєте кар'єру в галузі розробки програмного забезпечення, технологій або робототехніки, це корисна мова для вивчення, оскільки є велика кількість вакансій для JavaScript-розробників по всьому світу. Навіть якщо ви не плануєте кар'єру в цих галузях, ви все одно зможете бути креативними та розв'язувати цікаві задачі через програмування.

Можливо, ви вже навіть програмували на JavaScript; ця мова використовується для створення полотен Draw Canvas (Полотно малювання) та Block Canvas (Полотно блоків) у додатку Sphero Edu, і ви можете побачити JavaScript код, який стоїть за цими програмами. Тепер ви перейдете від малювання ліній і перетягування блоків до написання текстового коду самостійно.

 

Hello World!

Використовуючи ваш пристрій з додатком Sphero Edu, створіть нову текстову програму, перейдіть до цього wiki через кнопку 'Text Canvas Help' (Допомога по полотну коду) та скопіюйте ці приклади коду в полотно коду. Не забудьте націлити вашого робота, а потім натиснути кнопку Start (Старт), щоб побачити, що станеться!

async function startProgram() { 
	await speak("Hello World", true); 
	setMainLed({ r: 0, g: 0, b: 255}); 
	setSpeed(60); 
	await delay (2); 
	setSpeed(0); 
}

Hello Square!

Тепер перетворіть вашу першу програму на квадрат з більш складною логікою:

async function startProgram() {
	setMainLed({ r: 0, g: 0, b: 255 });
	await speak("Hello Square", true);
	await delay(1);
	for (var _i1 = 0; _i1 < 4; _i1++) {
		setMainLed(getRandomColor());
		await Sound.Game.Coin.play(true);
		await roll((getHeading() + 90), 60, 1);
		await delay(1);
	}
}

Streaming (Стрімінг)

Streaming Sphero

Ваш код передається в реальному часі на 20 герц (разів на секунду) між вашим пристроєм і роботом, замість того, щоб виконуватись локально на роботу. Це досить круто з кількох причин. Пам'ять робота Sphero дуже обмежена, тому стрімінг дозволяє використовувати пам'ять вашого пристрою як єдине обмеження, що на сьогоднішніх мобільних пристроях і комп'ютерах є майже безмежним. Крім того, це дає змогу взаємодіяти з програмою в реальному часі через дані сенсорів та інші введення. Стрімінговий характер вашої програми вимагає використання async (асинхронний) в певних випадках, таких як перед функцією startProgram() (почати програму), що вказує на те, що дані передаються до/від робота, коли це необхідно. Одним з недоліків стрімінгу є те, що деякі команди виконуються повільніше через латентність між пристроєм і роботом. Наприклад, виконання команди raw motor (тільки мотор): async raw motor(255, 255, 0.05) є найшвидшим (найкоротшим) часом, коли можна запустити raw motor (тільки мотор) (1с / 20hz = 0,05с). Якщо ви використаєте коротший час затримки, наприклад 0,04с, він все одно виконується за 0,05с.

 

Синтаксис

Синтаксис — це набір правил, за якими будується програма.

Character Case (Регістр символів)

Більшість ідентифікаторів складно описати одним словом, тому часто використовуються два і більше слів, що називаються "складені ідентифікатори". Мови програмування зазвичай не дозволяють використовувати пробіли в ідентифікаторах, тому регістр символів — це метод, за допомогою якого з'єднуються складені ідентифікатори для розмежування слів. Є сотні мов програмування в світі, але майже всі з них використовують один з цих чотирьох методів з'єднання: 

  • thisIsCamelCase (верблюжий стиль) — початкові літери слів у межах ідентифікатора пишуться з великої, перше слово — з маленької. 
  • ThisIsPascalCase (стиль Паскаля) — перша буква кожного слова пишеться з великої літери. 
  • this-is-spinal-case (спинальний стиль) — слова розділяються дефісами, усі літери маленькі. 
  • this_is_snake_case ( зміїний стиль) — слова розділяються підкресленнями, всі літери маленькі. 

JavaScript чутливий до регістру і використовує camelCase (верблюжий стиль), наприклад setSpeed (встановити швидкість) для встановлення швидкості.

 

Punctuation (Пунктуація)

Код має бути структурований таким чином, щоб його міг "прочитати" робот, подібно до того, як люди погодились на правила пунктуації в написанні. Якщо автори не писали б з урахуванням правил пунктуації, читачам було б важко навчитися новим правилам в кожній новій книзі. Звертайте дуже пильну увагу на використання цих символів, інакше ваш робот не зможе "прочитати" вашу програму:

  • async function startProgram() (асинхронна функція почати програму) — починає програму 
  • { and } (та) — містять весь код програми, за винятком глобальних функцій і змінних 
  • // (коментар) — вказує на коментар, який не впливає на логіку програми. Якщо коментар займає більше ніж один рядок, цей запис потрібно використовувати на кожному рядку 
  • ; (крапка з комою) — завершує вираз • ( ) (круглі дужки) — містить значення 
  • , (кома) — розділяє значення 
  • _____ (пробіл) — пробіл, який починає перший вираз у програмі, наступні умови повинні бути зсунуті далі 

 

Errors (Помилки) 

Помилки вказують, коли робот не може інтерпретувати ваш синтаксис. У наведеному прикладі зауважте, що setSpeed (встановити швидкість) написано неправильно. У цьому випадку робот не може прочитати команду, і з'являється червоне повідомлення про помилку під помилковим рядком. Скопіюйте цей код і виправте його, щоб він працював без помилок:

async function startProgram(){
	setSpee(188.0)
//!ReferenceError: Can't find variable: setSpee!
	setMainLed({ r: 0, g: 255, b: 0 });
	delay(2);
}

Data Types (Типи даних) 

Існують різні типи даних у програмуванні, які описують, скільки місця займає число в пам'яті та як воно інтерпретується. Деякі мови програмування визначають більше типів даних, ніж інші. JavaScript використовує наступні вбудовані типи: 

Найпоширеніші типи (Most commonly used types) 

  • number (число): значення, як-от -7 та 3.14159265359 
  • string (рядок): комбінації літер, чисел та пунктуації, наприклад, "Don't be L8 to class."(не запізнюйся на урок!) 
  • boolean (булеве значення): одне з логічних значень true або false 

Спеціальні типи для особливих випадків (Special types with special uses) 

  • null (нуль): спеціальне значення, що означає "визначено як нічого". 

Ми повернемося до цієї ідеї пізніше. 

  • undefined (невизначено): інше спеціальне значення, що означає "ця змінна ще не була визначена" або, інколи, "ця змінна отримала недійсне значення". 
  • symbol (символ): відносно новий тип для досвідчених користувачів 

JavaScript також надає тип Object (Об'єкт), який ми будемо використовувати для створення власних типів на основі вбудованих.