Wtęp

Roboty Sphero to zabawne, trwałe i programowalne zabawki! Ta wiki jest przewodnikiem, aby dowiedzieć się, jak programować roboty Sphero za pomocą JavaScript, najpopularniejszego internetowego języka programowania na świecie. Będziesz potrzebował robota Sphero, aplikacji Sphero Edu na kompatybilnym urządzeniu i głodu do nauki. Jeśli uczysz się programować po raz pierwszy, najlepszym miejscem do rozpoczęcia są nasze zajęcia strukturalne .
Dlaczego JavaScript?
JavaScript jest jednym z najpopularniejszych języków programowania na świecie. Jest to bardzo przydatne do budowania nowoczesnych stron internetowych, a nawet możliwe jest tworzenie usług zaplecza witryny z rozszerzeniami języka. Został on stworzony w 1995 roku przez Brendana Eicha w Netscape, jednej z pierwszych firm internetowych, które zbudowały popularną przeglądarkę internetową w czasach telefonicznego połączenia z Internetem. Pierwotnie został nazwany „Mocha” przez założyciela Netscape, Marc Andreessen, jednego z najbardziej znanych przedsiębiorców Doliny Krzemowej.
Netscape rozpoczął współpracę z Sun Microsystems, który opracował Javę, popularny język, który napędzał aplikacje na wczesnych komputerach, urządzeniach przenośnych i telefonach komórkowych. Obie firmy były zmotywowane do zbudowania wtyczki, aby istniejące aplikacje Java mogły działać natywnie w coraz popularniejszej przeglądarce internetowej, aby nie trzeba było ich odbudowywać. Tak więc Netscape stworzył język skryptowy podobny do składni Java, aby te aplikacje mogły być nadal używane, a co równie ważne, wszyscy programiści Java mogli szybko się przystosować bez nauki nowego języka od zera. Język był również bardzo silny. Przed JavaScript większość stron była zbudowana wyłącznie z HTML i CSS; były bardzo statyczne. JavaScript pozwala stronom być bardziej dynamicznym, używać animacji, pobierać dane z formularzy i odtwarzać multimedia.

Po okresie konkurowania języków w Internecie JavaScript stał się językiem dominującym, a teraz możesz pisać JavaScript, który renderuje się we wszystkich nowoczesnych przeglądarkach internetowych, takich jak Chrome, Safari, Firefox i Internet Explorer na różnych urządzeniach podłączonych do Internetu. Jeśli zastanawiasz się nad karierą w dziedzinie tworzenia oprogramowania, technologii lub robotyki, warto poznać ten język, ponieważ na całym świecie dostępnych jest wiele ofert JavaScript. Nawet jeśli nie zajmujesz się karierą w tych dziedzinach, będziesz kreatywny i rozwiążesz niektóre intrygujące problemy poprzez programowanie.

Być może już zaprogramowałeś mały JavaScript; zasila płótna programistyczne Draw and Blocks w aplikacji Sphero Edu i możesz przeglądać kod JavaScript za tymi programami. Teraz przejdziesz od rysowania linii i przeciągania bloków do samodzielnego pisania kodu tekstowego.

Witaj świecie!
Korzystając z urządzenia z aplikacją Sphero Edu, utwórz nowy program tekstowy, kliknij? przycisk w prawym górnym rogu, aby uzyskać dostęp do tej wiki, i użyj przycisku Kopiuj, aby skopiować i wkleić te próbki kodu do obszaru tekstowego. Nie zapomnij wycelować robota, a następnie dotknij przycisku Start, aby zobaczyć, co się stanie!
async function startProgram() {
 await speak("Hello World", true);
 setMainLed({ r: 0, g: 0, b: 255});
 setSpeed(60);
 await delay (2);
 setSpeed(0); 
}

Teraz przekształć swój pierwszy program w kwadrat z większą logiką:

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
streamingImage
Twój kod przesyła się w czasie rzeczywistym z częstotliwością 20 herców (razy na sekundę) między urządzeniem a robotem, zamiast uruchamiać się lokalnie na robocie. Jest to całkiem fajne z kilku powodów. Pamięć w robotach Sphero jest bardzo mała, więc streaming pozwala na wykorzystanie pamięci urządzenia jako jedynego ograniczenia, które w dzisiejszych urządzeniach mobilnych i komputerach jest w zasadzie nieograniczone. Umożliwia także interakcję z programem w czasie rzeczywistym za pośrednictwem danych czujnika i innych danych wejściowych. Streamingowy charakter twojego programu wymaga async w niektórych przypadkach, takich jak przed function startProgram() , wskazując, że dane są przesyłane do / z robota, gdy jest to potrzebne. Jedną wadą przesyłania strumieniowego jest to, że niektóre polecenia są wolniejsze z powodu opóźnienia między urządzeniem a robotem. Na przykład uruchomienie polecenia surowego silnika async raw motor(255, 255, 0.05) jest najszybszym (najkrótszym) czasem, w którym można uruchomić silnik surowy (1 s / 20 Hz = 0,05 s). Jeśli użyjesz krótszego opóźnienia, takiego jak 0,04 s, nadal będzie działać przy 0,05s.

Składnia
Składnia to zestaw reguł dotyczących budowy programów.
Case Character
Większość identyfikatorów jest trudna do opisania jednym słowem, więc większość to ponad 2 słowa znane jako „identyfikatory złożone”. Języki programowania na ogół nie dopuszczają spacji w identyfikatorach, więc wielkość liter jest metodą, za pomocą której łączysz identyfikatory złożone w celu rozróżnienia słów. Na świecie istnieją setki języków programowania, ale prawie wszystkie używają jednej z czterech metod łączenia: thisIsCamelCase , ThisIsPascalCase , this-is-spinal-Case i this_is_snake_case . JavaScript rozróżnia małe i setSpeed litery i używa camelCase , takiego jak setSpeed do ustawiania prędkości.
Interpunkcja
Kod musi być tak skonstruowany, aby mógł być interpretowany przez robota, tak jak ludzie uzgodnili na piśmie standardy interpunkcji. Gdyby autorzy nie pisali według zasad interpunkcyjnych, czytelnicy mieliby trudności z nauką nowych zasad w każdej czytanej książce. Zwróć szczególną uwagę na użycie tych znaków, w przeciwnym razie twój robot nie będzie w stanie „odczytać” twojego programu:
async function startProgram() uruchamia program

{ i } zawierają cały kod programu, z wyjątkiem funkcji globalnych i zmiennych

// wskazuje komentarz i nie wpływa na logikę programu. Jeśli masz długi komentarz obejmujący> 1 linię kodu, musisz użyć tej notacji w każdej linii

; kończy oświadczenie

( ) zawiera wartość

, oddziela wartości

_____ tabulacji uruchamia pierwszą instrukcję w programie, a kolejne warunki muszą być wcięte dalej

Błędy
Błędy informują, kiedy robot nie może zinterpretować twojej składni. W poniższym przykładzie zwróć setSpeed niepoprawną pisownię setSpeed . W takim przypadku robot nie może odczytać polecenia, a czerwony komunikat błędu wyświetla się poniżej błędnej linii. Skopiuj ten program i napraw go, aby działał bezbłędnie:
async function startProgram(){
 setSpee(188.0)
!ReferenceError: Can't find variable: setSpee
 setMainLed({ r: 0, g: 255, b: 0 }); delay(2);
}

Typy danych
Istnieją różne rodzaje danych w programowaniu, które opisują, ile miejsca zajmuje liczba w pamięci i jak jest interpretowana.
Niektóre języki definiują więcej typów danych niż inne. JavaScript wykorzystuje następujące wbudowane typy:

Najczęściej używane typy
number : wartości takie jak -7 i 3.14159265359
string : kombinacje liter, cyfr i interpunkcji, takie jak „Nie bądź klasą L8.”
boolean : jedna z wartości logicznych true lub false

Specjalne typy o specjalnych zastosowaniach
null : wartość specjalna oznaczająca „zdefiniowany jako nic”. Powrócimy do tego pomysłu później.
undefined : inna specjalna wartość oznaczająca „ta zmienna nigdy nie została zdefiniowana” lub czasami „tej zmiennej przypisano nonsensowną wartość”
symbol : stosunkowo nowy typ dla zaawansowanych użytkowników

JavaScript dostarcza również Object którego będziemy używać do tworzenia niestandardowych typów z wbudowanych.

https://sphero.docsapp.io/docs/get-started