Roboedukacja sposobem na rozwój przedsiębiorczości wśród młodzieży Skrypt do programowania robota i opis oprogramowania ROBOTC

Podobne dokumenty
Stacja pogodowa, internetowa Archos Europa, dla urządzeń Apple iphone/ipad/ipod i Android

INSTRUKCJA KALIBRACJI TRUETRUE

FINCH PONG. Realizator: Partner: Patronat:

Instrukcja obsługi lampka LivingColors Iris

JĘZYK SCRATCH Manual użytkownika

INSTRU KCJA UŻYTKOWNIKA

PIERWSZE KROKI I USTAWIENIA

Instrukcja do oprogramowania ENAP DEC-1

INSTRUKCJA OBSŁUGI DIODOWEGO WYŚWIETLACZA TEKSTÓW PIEŚNI STEROWANEGO Z TABLETU 10,1 '

NAZWA PRODUKTU: Interaktywny ROBOT OLBRZYM K1 Walczy Strzela Y73 Cechy produktu

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Kl 7-8 Szkoła Podstawowa

SP-1101W/SP-2101W Instrukcja Szybkiej Instalacji

Lekcja 5 - PROGRAMOWANIE NOWICJUSZ

Aplikacja Fidbox. wersja 3.1. dla systemów ios i Android. Wymagania dla systemu Android: Bluetooth 4 i system Android w wersji 4.

Programowanie xcomfort Cz. I Eaton Corporation. All rights reserved.

INSTRUKCJA MONTAŻU I OBSŁUGI PRZENOŚNEGO PANELU KONTROLUJĄCEGO

Kl-1-3 Szkoła Podstawowa

F-Secure. Podręcznik użytkownika. f-secure.com/sense/guide

ARRIS VIP Copyright 2015 Grupa MULTIPLAY.

System Obsługi Zleceń

Programowanie w Scratch robot mbot

Zajęcia z aplikacją ScratchJr mogą zostać przeprowadzone na dwa sposoby:

Skrócona instrukcja obsługi kamery Arlo Baby

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows XP

Spis treści. Opis urządzenia. Pierwsze użycie

PROCEDURA USTAWIANIA CZUJNIKÓW

Sprawdzenie funkcji WiFi modułu econet300

Grant Edukacyjny Engram English

Instrukcja obsługi xapp.pl

WARIATOR USTAWIENIA Białystok, Plażowa 49/1, Poland,

Instrukcja obsługi programowalnego zegara cyfrowego

INSTRUKCJA INSTALACJI SPN-IR INSTRUKCJA INSTALACJI I OBSŁUGI. Sterownik Pracy Naprzemiennej SPN-IR

WEJŚCIE W TRYB PROGRAMOWANIA

Czym jest MIT App Inventor. App Inventor jest to zbiór bloków jako język programowania używany do tworzenia mobilnych aplikacji na androida.

Skrócona instrukcja obsługi

Przymiar ArborSonic 3D z komunikacją Bluetooth. modele 1600 mm i 2000 mm. Instrukcja użytkownika. wer. 1.0

Instrukcja aktualizacji oprogramowania (firmware) serwera DESKTOP 1.0 systemu F&Home RADIO.

Instrukcja obsługi ekranu dotykowego - ruchome dno (tryb UŻYTKOWNIK)

INSTRUKCJA UŻYTKOWNIKA PORTALU SIDGG

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

tel fax

INSTRUKCJA OBSŁUGI TMT-502 PILOT ZDALNEGO STEROWANIA

Rejestrator temperatury LOG100 CRYO Dostmann Electronic

Dystrybutor: BH-Wandex Warszawa Ciołka 8 / 210. tel wersja 4-8. Str 1

Skrócona instrukcja obsługi

NAZWA PRODUKTU: ZDALNIE STEROWANY HELIKOPTER LS220 RC ŻYROSKOP Z57

A. Korzystanie z panelu sterowania

Obsługa pilota uniwersalnego RCU650

INSTRUKCJA OBSŁUGI PROGRAMU IRF DLA BIURA RACHUNKOWEGO Program Rachmistrz/Rewizor. Strona0

CAN LOGGER OPIS. Ponownie uruchamiany program CAN Logger

WARIATOR WYPRZEDZENIA ZAPŁONU WARIATOR USTAWIENIA

Kamera. Nr produktu

kodowanienaekranie.pl

Instrukcja konfiguracji. Instrukcja konfiguracji ustawień routera TP-Link dla użytkownika sieci POGODNA.NET

Tablet bezprzewodowy QIT30. Oprogramowanie Macro Key Manager

Skrócona instrukcja obsługi kamery Arlo Baby

Easi-View Udostępniaj rezultaty swojej pracy całej grupie, przeglądaj obiekty trójwymiarowe, fotografuj i nagrywaj wideo

ROZDZIAŁ 1. PRZEGLĄD BRAMOFONU SAFE...

Informatyka II. Laboratorium Aplikacja okienkowa

Kolory elementów. Kolory elementów

Instrukcja wgrywania aktualizacji oprogramowania dla routera Edimax LT-6408n

TTS Jesteśmy dumni z bycia częścią

Rozdział 1. Przegląd bramofonu SAFE

Spis treści. Opis urządzenia. Zawartość pudełka. Pierwsze użycie

1. Budowa. Helikopter sterowany podczerwienią. YD617/YD 618 ( z żyroskopem)

Fajerwerki. Wstęp. Krok 1: Stwórz rakietę, która leci w kierunku kursora myszki

AKTUALIZACJA RĘCZNA TRYB OFFLINE (Przykład: WINDOWS 7-32 bits):

Skaner Mustek Scan Express

Opis implementacji: Poznanie zasad tworzenia programów komputerowych za pomocą instrukcji języka programowania.

Gromadzenie danych. Przybliżony czas ćwiczenia. Wstęp. Przegląd ćwiczenia. Poniższe ćwiczenie ukończysz w czasie 15 minut.

1. INSTRUKCJA OBSŁUGI WYŚWIETLACZA LCD C600E USB

Zegarek posiada funkcje czasu aktualnego, drugiego czasu, alarmu dziennego, stopera, krokomierza oraz inne.

Budzik radiowy Eurochron

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

Ustawienia ogólne. Ustawienia okólne są dostępne w panelu głównym programu System Sensor, po kliknięciu ikony

INSTRUKCJA OBSŁUGI PROGRAMU INSTAR 1.0

CENTRALA STERUJĄCA SMART CONTROL

Monitor aktywności fizycznej Nr produktu

Contents 1. Czujniki, wskaźniki, wyposażenie Dymo Co zawiera opakowanie Elementy czujnika Dymo Specyfikacja

Higrometr Testo 623, %RH, -10 do +60 C

INSTRUKCJA OBSŁUGI ZEGARKA ANALOGOWEGO

ve Wyświetlacz LCD

Wzmacniacz sygnału, repeater Wi-Fi Huawei WS320, 150 Mbit/s, 2,4 GHz

Stoper solarny C5085 INSTRUKCJA OBSŁUGI. Nr produktu Strona 1 z 7

lider projektu: finansowanie:

Gra Labirynt - Zajęcia 4

1722/85 I 1722/86 INSTRUKCJA UŻYTKOWNIKA. Panel MIKRA i monitory głośnomówiące CXMODO. Nr ref. 1722/85 Nr ref. 1722/86 INSTRUKCJA UŻYTKOWNIKA

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Szanowni Państwo. Należy przy tym pamiętać, że zmiana stawek VAT obejmie dwie czynności:

DOKUMENTACJA TECHNICZNO-RUCHOWA. Sterownik klimatu FT-27

Instrukcja obsługi do kamery interwencyjnej TV-8400

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Instrukcja obsługi ekranu dotykowego ruchome dno (tryb MANAGER)

Wyświetlacz funkcyjny C600E

Delvotest Inkubator. Instrukcja obsługi. Wersja 1.0

Tablica SMART Board i Microsoft Office krótki poradnik

Eura-Tech. Instrukcja Obsługi Aplikacji Mobilnej

Transkrypt:

Roboedukacja sposobem na rozwój przedsiębiorczości wśród młodzieży Skrypt do programowania robota i opis oprogramowania ROBOTC

Lider projektu Stowarzyszenie Integracja i Rozwój (Polska) Partnerzy projektu BEST Institut für berufsbezogene Weiterbildung und Personaltraining GmbH (Austria) Blue Ocean Robotics (Dania) Akademia Finansów i Biznesu VISTULA (Polska) World Network of Young Leaders and Entrepreneurs (Finlandia) M2C - Institut für angewandte Medienforschung (Niemcy) Tytuł projektu Nr umowy Roboedukacja sposobem na rozwój przedsiębiorczości wśród młodzieży 2014-2-PL01-KA205-013651

Podstawowe informacje o projekcie Program Erasmus + Akcja 2 Partnerstwo strategiczne na rzecz innowacji i dobrych praktyk Action Partnerstwo strategiczne Field Partnerstwo strategiczne, sektor Młodzież Rok aplikacji 2014 o grant Runda 2 Tytuł projektu Roboedukacja sposobem na rozwój przedsiębiorczości wśród młodzieży Data 15.09.2015 rozpoczęcia projektu Data zamknięcia 14.03.2017 projektu Czas trwania 18 miesięcy projektu Lider projektu Stowarzyszenie Integracja i Rozwój, Polska Partner 1 Partner 2 BEST Institut GmbH, Austria Partner 3 Blue Ocean Robotics, Dania Partner 4 Akademia Finansów i Biznesu Vistula Uczelnia niepaństwowa, Polska Partner 5 World Network of Young Leaders and Entrepreneurs, Finlandia Partner 6 M2C Institut fur angewandte Medienforschung GmbH, Niemcy

Programowanie robota chwytającego i wprowadzenie do oprogramowania Robot zostanie zaprogramowany w programie ROBOTC, który można pobrać ze strony: http://www.vexrobotics.com/vexiq/software. Musimy zalogować się na swoje konto. Będziemy korzystać z interfejsu schematów blokowych, który jest programowaniem graficznym. Zanim rozpoczniemy programowanie, dowiemy się, jak zaktualizować firmware robota. Następnie musimy zaprogramować ROBOTC, tak żeby wiedział, do których portów podłączyłeś dane urządzenia. W kolejnych krokach omówimy funkcje, z których będziemy korzystać, żeby sprawić, że robot będzie się poruszał i czuł. Najlepszym sposobem na to, żeby zrozumieć, jak coś działa, jest zobaczenie tego w praktyce, dlatego właśnie nie tylko wyjaśniamy, jak działa dana funkcja, ale również pokazujemy, jak reaguje na nią robot. W ten sposób wszystkiego możesz doświadczyć sam. Aktualizacja firmware'u W celu zaktualizowania firmware'u, musisz zainstalować program " VEXos Utility. Możesz go pobrać ze strony: http://link.vex.com/vexiq/downloads/vexos-utility-setup. Służy on do aktualizowania firmware'u wszystkich urządzeń robota, czyli czujników, siłowników i mózgu robota. 1. Podłącz komputer do mózgu robota przy użyciu kabla USB. 2. Podłącz czujniki i siłowniki do mózgu robota. 3. Włącz program. 4. Włącz mózg robota (naciśnij guzik ze znacznikiem).

5. Naciśnij przycisk instalacji" w programie i poczekaj. Jeśli wykonałeś wszystkie kroki, Twój robot powinien być już gotowy do zaprogramowania. Konfiguracja czujników i siłowników robota Żeby ROBOTC mógł zaprogramować robota, musi wiedzieć, które urządzenia są podłączone do danego portu w mózgu robota. Musisz to określić, wykonując następujące kroki: 1. Otwórz ROBOTC (graficzny) a. Wybierz "Nowy plik" 3. Wybierz "Ustawienia silnika i czujników" 4. Jeśli postępowałeś zgodnie z instrukcją montażu i podłączyłeś urządzenia do tych samych portów w mózgu robota, naciśnij teraz: a. modele standardowe

b. wybierz " Clawbot IQ With Senosors (Clawbot IQ z czujnikami)

5. Jeśli nie podłączyłeś urządzeń do tych samych portów zgodnie ze wskazówkami, musisz zrobić to ręcznie a. naciśnij "Motors" (silniki) i. To pozwoli Ci nazwać silniki (nazwy są używane w trakcie programowania) i wybrać porty, do których silniki są podłączone.

b. naciśnij devices" (urządzenia) i. To ponownie pozwala nadać nazwy i wybrać porty. 6. Następnie naciśnij Apply" (zastosuj) w dolnym prawym rogu.

Ładowanie programu do robota Zanim omówimy funkcje, musisz sprawić, żeby robot umiał z nich korzystać. Zrobisz to, zapisując program w robocie. Na początek stwórzmy przykładowy program: 1. Wybierz New File" (nowy plik) 2. Zjedź na dół po lewej stronie i umieść blok na napisie "movemotor" (przesuń silnik). 3. Kliknij na blok, przytrzymaj i przeciągnij go w lewo.

4. Teraz kliknij "motor10" i wybierz "clawmotor" 5. Zmień wartość 1 na 50 i zmień obrót na stopnie. 6. Naciśnij "Compile Program". Jeśli program poprosi Cię o zapisanie, zrób to. 7. Podłącz komputer do mózgu robota przy użyciu kabla USB. 8. Kliknij przycisk Download to Robot" (pobierz do robota) 9. Upewnij się, że chwytak jest otwarty

10. Naciśnij przycisk 11. Chwytak powinien się zamknąć Gratulacje! Udało Ci się stworzyć i załadować swój pierwszy program. Kolejność wykonania kodów W programowaniu ważna jest kolejność wykonywania linijek kodu. Na szczęście kolejność jest dosyć intuicyjna, jako że linijki wykonywane są z góry na dół. Jest kilka wyjątków, które omówimy w odpowiednim momencie. Funkcje predefiniowane W programowaniu VEX funkcje są wykorzystywane albo do kontroli siłownika, albo do pozyskania informacji z czujnika. Tutaj wyjaśnione zostaną tylko te funkcje, które będą używane w tym projekcie. Informacje dotyczące pozostałych funkcji można znaleźć, klikając F1" w programie ROBOTC. Wcześniej jednak warto zapoznać się ze wskazówkami: Najlepszym sposobem na to, żeby nauczyć się korzystania z tym funkcji, jest zmiana treści pól. W ten sposób zobaczysz, jak to działa. Wyświetlanie funkcji

Wyświetlacz robota pokazuje informacje o jego czujnikach i zmiennych (zmienne zostaną omówione w kolejnej sekcji). Korzystanie z funkcji wyświetlania może być pomocne, jeśli robot zachowuje się w nieoczekiwany sposób. Przykłady będą omówione przy odpowiednich funkcjach. displaytext (Wyświetl tekst) Dzięki tej funkcji na wyświetlaczu robota pojawi się dowolnie wybrany przez programistę tekst. Przedstawiono to poniżej: Na wyświetlaczu widocznych jest pięć linijek tekstu. Linia jest wybierana w pierwszym polu, a tekst do wyświetlenia trzeba wpisać w drugim polu. Jest to przydatne, kiedy chcemy ustalić, który kod wykonuje w danym momencie robot. Żeby to sprawdzić, musimy wyświetlić tekst na robocie w chwili, gdy dzieje się coś ważnego. To stanie się łatwiejsze do zrozumienia, gdy lepiej poznasz zasady programowania. displaymotorvalues (Wyświetl wartości silnika) Ta funkcja pokazuje stopnie ruchu wybranego silnika wykonane od uruchomienia programu. Pierwsze pole określa linie do wyświetlenia na wyświetlaczu, a drugie pole określa, wartości którego silnika mają być wyświetlane.

Stopnie nie będą wyświetlane ciągle, ale tylko raz w trakcie uruchomienia funkcji. Jeśli chcesz, żeby stopnie były wyświetlane cały czas, musisz ustawić je w pętli. (Pętle zostaną omówione w kolejnej sekcji). Napisz program i załaduj go do robota. Następnie uruchom program. Teraz przesuń kółka po lewej stronie i spójrz, jak na wyświetlaczu zmieniają się stopnie. Jest to przydatne do określania, o ile stopni silniki powinny się obrócić, żeby przesunąć robota np. o 20 cm. displaysensorvalues (Wyświetl wartości czujników) Ta funkcja działa tak samo, jak funkcja wyświetlania wartości silnika z tą różnicą, że wyświetla wartości innych czujników, np. czujnika kolorów. Drugie pole określa czujnik, z którego wartości będą wyświetlane. displayvariablevalues (Wyświetl wartości zmiennych) Ta funkcja działa podobnie, ale wyświetla wartości zmiennych. Zmienne zostaną omówione w kolejnej sekcji. Funkcje silnika movemotor (Porusz silnik)

Dzięki tej funkcji odpowiedni silnik będzie się poruszał. Ruch można zaprogramować za pomocą jednego z pięciu parametrów: Obroty: o możesz określić, ile obrotów ma wykonać silnik. Stopnie: o możesz określić, o ile stopni ma się obrócić silnik. Milisekundy, sekundy i minuty: o ta wartość określa czas, przez jaki ma się poruszać robot. Ustawienia tych funkcji zmienia się w następujący sposób: W pierwszym polu (z napisem clawmotor" [silnik chwytaka]) wybierasz, który silnik chcesz kontrolować. W trzecim polu wybierasz, czy chcesz, żeby silnik poruszał się na podstawie obrotów, stopni czy czasu. Drugie pole określa liczbę obrotów, stopni lub czasu. Czwarte pole definiuje szybkość ruchu. setmotor (Ustawienia silnika) Dzięki tej funkcji odpowiedni silnik będzie poruszał się z określoną prędkością do chwili, aż prędkość nie zostanie w programie ustawiona na 0 lub program zakończy działanie. Co oznacza, że program kończy działanie? Program przestaje działać, gdy wszystkie kody zostaną wykonane. Powinno stać się to bardziej zrozumiałe, jeśli wykonasz poniższe kroki: 1. Napisz program, który opiera się tylko na funkcji setmotor, a prędkość nie ma wartości 0. 2. Załaduj program do robota i wybierz polecenie jego wykonania. Co się stało? Robot się nie poruszył. Stało się tak, bo program prawie natychmiast zakończył działanie, jako że jedynym kodem do wykonania była funkcja setmotor. A więc jak zrobić, żeby program nie kończył działania natychmiast? Spróbuj użyć komendy wait (poczekaj).

1. Napisz program, który będzie zawierał te dwa elementy. Żadna z wartości nie może być równa 0. 2. Załaduj program do robota i wybierz polecenie jego wykonania. Teraz robot powinien się poruszać z daną prędkością przez określony czas. W niektórych przypadkach lepiej jest korzystać z funkcji setmotor zamiast movemotor. Dzieje się tak, ponieważ jeśli korzystamy z funkcji movemotor, w niektórych przypadkach robot będzie wykonywał szarpane ruchy. Jest tak na przykład, kiedy chcesz, żeby robot poruszał się aż do czasu jakiegoś zdarzenia, np. aż do momentu, kiedy wyczuje, że się z czymś zderzył. Jeśli w takim przypadku skorzystasz z funkcji movemotor, musisz wywoływać tę funkcję cały czas aż do momentu kolizji, a przy każdym wywołaniu funkcji silnik będzie uruchamiał się ponownie. To właśnie są szarpnięcia. Jeśli to samo zrobisz przy pomocy funkcji setmotor, musisz wywołać funkcję tylko na początku, żeby wywołać ruch, a po wystąpieniu kolizji wywołujesz funkcję ponownie, żeby zakończyć ruch. Ustawienia wielu silników Ta funkcja działa tak samo jak funkcja setmotor, ale pozwala na ustawienie kilku silników jednocześnie. Zauważ, że silniki zostaną zaprogramowane na tę samą prędkość. Jest to przydatne, jeśli robot ma poruszać się naprzód. W tym przypadku być może będziesz musiał ustawić jeden z silników na ruch wsteczny w "ustawieniach silnika i czujnika".

Stanie się tak, jeśli silniki zostaną zainstalowane tak, jak poniżej: Dzieje się tak, ponieważ silniki są zainstalowane naprzeciwko siebie, co oznacza, że dodatnia prędkość na jednym z nich będzie obracać kołami w przeciwnym kierunku, niż będzie to robił drugi silnik, kiedy jego prędkość będzie dodatnia. Ustawienie jednego silnika w odwrotny sposób rozwiązuje problem. stopmotor (zatrzyj silnik) Ta funkcja działa tak, jak funkcja setmotor, kiedy prędkość jest równa 0. Silnik wybrany w polu zostanie zatrzymany.

stopallmotors (zatrzymaj wszystkie silniki) Ta funkcja zatrzyma wszystkie silniki podpięte do robota. Funkcja jest przydatna, jeśli użyłeś wielu funkcji setmotor i chcesz, żeby wszystkie jednocześnie zakończyły działanie. Taki przypadek opisany jest w sekcji gyrosensor (czujnik żyroskopu). Do włączenia robota wykorzystywane są dwie funkcje setmotor, natomiast później uruchamiana jest funkcja stopallmotors, kiedy robot obróci się o 90 stopni w lewo. Forward (naprzód) Jeśli wszystkie ustawienia w funkcji "ustawienia silnika i czujnika" są poprawne, dzięki tej funkcji robot zacznie się poruszać naprzód. Ruch do przodu oparty jest na tych samych parametrach, co w przypadku movemotor: obrotach, stopniach i czasie. W ostatnim polu ustawiana jest prędkość. Żeby funkcja działała poprawnie, silniki, które są odpowiedzialne za ruch robota, muszą być zaprogramowane w "ustawieniach silnika i czujnika". Silnik po lewej stronie robota musi być ustawiony jako lewy w sekcji Drive Motor Side, natomiast silnik po prawej stronie robota - jako prawy.

wstecz Ta funkcja działa podobnie, jak funkcja "naprzód", z tą różnicą, że robot przesuwa się do tyłu, a nie do przodu. Funkcje Touch LED settouchledcolor - Actuator (TouchLedColor siłownik) Dzięki tej funkcji można ustawić kolor diody LED. W pierwszym polu określasz urządzenie, którego chcesz użyć. Musi to być czujnik Touch LED. Jest to przydatne, ponieważ Twój robot możesz mieć więcej niż jedną Touch LED. Drugie pole to menu rozwijane, w którym możesz wybrać jeden z trzynastu kolorów (lub brak koloru). SetTouchLEDRGB - Actuator (SetTouchLEDRGB siłownik) Dzięki tej funkcji ustawisz kolor Touch LED, jednak pozwala ona na ustawienie każdego z kanałów osobno (Red, Green, Blue - czerwony, zielony i niebieski). Tutaj do dyspozycji mamy dużo więcej kolorów, niż w przypadku funkcji settouchledcolor. Pierwsze pole określa urządzenie, pola od drugiego do czwartego definiują, ile światła ma emitować każdy kanał. W pola można wpisać wartości od 0 do 255. 0 oznacza brak emisji światła, natomiast 255 - emisję maksymalną. Drugie pole to kanał czerwony, trzecie to kanał zielony, natomiast czwarte - kanał niebieski. Możesz skorzystać z tego narzędzia: http://www.colorpicker.com/, żeby odnaleźć kolory w formacie RGB. Małe ćwiczenie Wszystkie funkcje, które polegają na otrzymaniu danych z czujnika, to funkcje z wartościami "odwrotnymi". Oznacza to, że wywołanie funkcji może być postrzegane jako wartość -

wartość danych czujnika. Żeby skorzystać z funkcji powiązanych z czujnikami, będziesz musiał do czegoś wykorzystać dane sensorowe. To znaczy z kolei, że funkcję można wywołać tylko w trzech przypadkach: W pętli while" (dopóki) W pętli "repeatuntil" (powtarzaj do) W instrukcjach warunkowych "if" W instrukcjach "if/ else" W instrukcjach "waituntil" (poczekaj do) W celu przypisania wartości czujnika do zmiennej Dlatego właśnie byłoby dobrze, jeśli napisałbyś następujący program jako wzór, z którego będziesz mógł korzystać do testowania funkcji czujnika. Przydatna będzie wiedza na temt pętli, bo poniższy wzór będzie je zawierał. Niestety nie można jednak zrobić wszystkiego jednocześnie. Ponieważ nie uczyłeś się jeszcze o pętlach, po krótce omówimy je tutaj. Pętla "while" będzie wykonywać cały kod w pętli, dopóki instrukcja po prawej stronie "while ("and left of") {. Kod w pętli to wszystkie linijki kodu, które są otoczone pomarańczowym kolorem. W podanym przykładzie polecenie "while" można odczytać w następujący sposób: dopóki gettouchled nie jest "touch" ("touch" jest fałszywy). Jeśli polecenie jest prawdziwe, kolor diody LED jest czerwony. Co się stanie, jeżeli dotknięty zostanie touchledsensor? Program wyjdzie z pętli (wykona kody poniżej pomarańczowego pola), a w powyższym przykładzie dioda LED podświetli się na jasnozielono. Zauważ, że kiedy czujnik zostanie dotknięty, program zakończy działanie. GetTouchLEDValue Sensor (GetTouchLEDValue czujnik)

Teraz, kiedy masz gotową formatkę, łatwiej będzie Ci zauważyć, co się dzieje. Ta funkcja ma na celu określenie, czy przycisk został dotknięty. Funkcja będzie fałszywa, jeśli czujnik nie zostanie dotknięty, natomiast prawdziwa, jeśli wyczuje dotyk. Funkcje odległości czujnika getdistancevalue (określ wartość odległości) Celem tej funkcji jest zwrócenie wartości odległości w milimetrach do obiektu znajdującego się bezpośrednio przed czujnikiem odległości. Teraz postaraj się zmienić formatkę, którą stworzyłeś w sekcji "małe ćwiczenie", tak żeby kolor diody LED zmieniał się, gdy jakiś obiekt znajdzie się w odległości mniejszej niż 100 milimetrów. Powinno to wyglądać tak: Sprawdzisz, czy funkcja działa, umieszczając rękę przed czujnikiem odległości i obserwując, czy zmienia się kolor diody LED. Funkcje czujnika koloru W przypadku użycia tego czujnika bardzo ważne jest, żeby otoczenie było wystarczająco oświetlone. W przeciwnym wypadku czujnik będzie zwracał bardzo niskie wartości, co jest niepożądane. getcolorredchannel (wyświetl kanał koloru czerwonego)

Funkcja ta zwraca wartość czerwonego koloru, który czujnik wykrywa bezpośrednio przed sobą. Funkcja zwraca wartości od 0 do 255, gdzie 0 odpowiada brakowi czerwieni, natomiast 255 to maksymalna czerwień. Teraz postaraj się zmienić formatkę, którą stworzyłeś w sekcji "małe ćwiczenie", tak żeby kolor diody LED zmieniał się, gdy czujnik zwróci więcej niż jakąś wartość czerwieni. (pamiętaj o odpowiednim oświetleniu otoczenia). Powinno to wyglądać tak: Jeśli dioda LED nie zmieni koloru, spróbuj oświetlić czerwoną powierzchnię albo obniż wartość powyżej. getcolorgreenchannel (wyświetl kanał koloru zielonego) Funkcja ta zwraca wartość zielonego koloru, który czujnik wykrywa bezpośrednio przed sobą. Funkcja działa dokładnie tak samo, jak getcolorredchannel. getcolorbluechannel (wyświetl kanał koloru niebieskiego) Funkcja ta zwraca wartość niebieskiego koloru, który czujnik wykrywa bezpośrednio przed sobą. Funkcja działa dokładnie tak samo, jak getcolorredchannel. Funkcje czujnika żyroskopu resetgyro (resetuj żyroskop) Żyroskop kontroluje, o ile stopni obrócił się od początku działania programu lub od ostatniego razu, gdy została wywołana funkcja resetgyro. Funkcja ta ma za zadanie zresetowanie żyroskopu, czyli ustawienie jego wartości stopni z powrotem na 0. Jest to przydatne, jeśli nie zwracasz uwagi na to, o ile obrócił się robo od uruchomienia programu,

ale teraz chcesz go obrócić np. o 90 stopni. Przykład pokażemy przy omawianiu funkcji getgyrodegrees. getgyrodegrees (wyświetl stopnie żyroskopu) Celem tej funkcji jest przywrócenie wartości stopni, o które obrócił się robot od początku działania programu lub od ostatniego razu, gdy została wywołana funkcja resetowania żyroskopu. Teraz spróbuj obrócić robota o 90 stopni przy użyciu wzoru, który stworzyłeś w sekcji "małe ćwiczenie". Powinno to wyglądać tak: Zauważ, że jeśli chcesz obrócić robota o 90 stopni w prawo, musisz ustawić stopnie na -90 i zmienić znak "mniejsze niż" na "większe niż". Zmień również znaki funkcji setmotor, tak żeby koła obracały się w drugą stronę. Funkcje zmiany zderzaka getbumpervalue (wyświetl wartość zderzaka) Funkcja ta określa, czy zderzak jest włączony. Zwraca "fałsz", jeśli zderzak nie jest wciśnięty, i "prawda", kiedy jest.

Teraz postaraj się zmienić formatkę, którą stworzyłeś w sekcji "małe ćwiczenie", tak żeby kolor diody LED zmieniał się, gdy zderzak będzie wciśnięty. Powinno to wyglądać tak: Zmienne Zmienne są używane do przechowywania informacji, dlatego można je uznać za magazyn danych. W przypadku robota Vex przechowywane informacje to najczęściej dane dotyczące czujnika lub zmienne, które pokazują, ile razy coś się wydarzyło. Ze zmiennymi powiązane są trzy predefiniowane funkcje: Zostaną one wkrótce przeanalizowane, ale na początku musimy nauczyć się, jak tworzyć zmienne Tworzenie zmiennej Na początku wybierz jedną z trzech predefiniowanych funkcji i przesuńmy ją w lewo. Teraz naciśnij "Select Variable (Wybierz zmienną), a potem wybierz Add Variable (Dodaj zmienną): Teraz powinno pokazać się kolejne pole:

W polu tekstowym wpisz nazwę, jaką chcesz nadać zmiennej. Może to być dowolna nazwa, jednak nie wszystkie znaki są dozwolone, np. spacja. Pomimo tego, że nazwa może być dowolna, lepiej, żeby była w jakiś powiązana z danymi przechowywanymi przez tę zmienną. Na przykład jeśli będziesz wykorzystywał zmienną do liczenia, możesz nazwać ją "licznik". Jeśli natomiast używasz jej, żeby przechowywać wartość czujnika odległości, możesz nazwać ją "odległość" lub podobnie. Kiedy już nadasz zmiennej nazwę, naciśnij przycisk "OK". Teraz Twoja zmienna jest gotowa do użycia. Kiedy używasz zmiennych, rekomendowane jest, żeby były one inicjowane w Twoim programie w pierwszej kolejności. Dzięki temu będziesz miał pewność, jaka jest ich początkowa wartość. Stanie się to jasne w przykładach przedstawionych dalej. Ważne jest, żeby pamiętać, że wszystkie pola funkcji, które mają wpisane cyfry, mogą wykorzystywać również wartości zmiennych. Poniżej przedstawiamy przykład: Wszystkie pola, które zawierają liczby w przykładzie, mogłyby mieć nazwy zmiennych, a program sam wpisze we właściwe miejsce wartość zmiennej. Struktury kontroli Funkcje Poczekaj Wait (poczekaj) Celem tego polecenia jest zatrzymanie programu na określony czas. Może to być wartość

podana w milisekundach, sekundach lub minutach. Drugie pole określa jednostkę czasu, a pierwsze pole definiuje liczbę wskazanych jednostek. Żeby zobaczyć działanie tej funkcji, uruchom program na robocie: waituntil (poczekaj aż) Celem komendy waituntil jest poczekanie, aż wydarzy się dana akcja. Jest to przydatne, jeśli chcemy zdecydować, kiedy wartość czujnika zostanie zapisana. Spróbuj zrobić następującą rzecz: Program poczeka, aż dotkniesz czujnika dotyku, a następnie zostanie to wyświetlone na LED. Polecenie wait until" jest bardzo przydatne, gdy korzystasz z czujnika dotyku. Załóżmy, że chcesz policzyć, ile razy czujnik dotyku został dotknięty. Nie czekasz, aż czujnik przestanie być dotykany. Czas będzie mierzony przez cały okres dotykania czujnika. Pomimo tego, że prawdopodobnie nie czytałeś jeszcze sekcji "repeat" i "if", spójrz na te dwa przykłady, które pokazują, dlaczego funkcja jest przydatna: Jeśli będziesz obserwować wyświetlacz, zauważysz, że liczba naciśnięć jest o wiele za duża.

Można to naprawić poprzez wstawienie waituntil", co zatrzyma program do momentu, aż przestaniesz dotykać czujnika. Pętle Repeat (powtórz) Celem powtarzania jest wykonanie kodu X razy. Pole określa, ile razy ma zostać wykonany kod przypisany do polecenia Repeat". Żeby zobaczyć, jak to działa, spróbuj zrobić to: To powinno zmienić kolor LED 4 razy, a pomiędzy zmianami powinna być pięciosekundowa przerwa.

Spróbuj tego, żeby zobaczyć, jak zmienna działa działa jako licznik: To powinno sprawić, że kolor diody LED przy każdym przejściu przez pętle będzie coraz bardziej czerwony. Repeat (forever) (Powtórz [bez przerwy]) Struktura ta powtarza kod bez przerwy. Jest to przydatne, jeśli chcemy, żeby robot wykonywał jakąś czynność za każdym razem, gdy coś zostanie wykryte na jednym lub kilku czujnikach. Spróbuj zrobić następujące czynności: Dzięki temu ciągle powinien być wyświetlany kolor wykryty przez czujnik kolorów na diodzie LED. Zauważ, że kolor wyświetlony na diodzie nie jest dokładny. Pamiętaj również, żeby otoczenie było dobrze oświetlone.

While (dopóki) Celem tej struktury jest powtarzanie zawartego w niej kodu dopóki instrukcja jest prawdziwa. W przedstawionym przykładzie kod będzie powtarzany dopóki czujnik dotyku nie zostanie dotknięty. Następujący przykład jest podobny do przykładu przedstawionego w repeatforever", jednak repeatforever" zostało zastąpione przez while". Spójrz na przykład: Dioda LED powinna mieć kolor wykryty przez czujnik koloru, dopóki czujnik koloru nie będzie dotknięty. Kiedy czujnik dotyku zostaje dotknięty, program wyjdzie z pętli while", a następnie wykona kod. W przykładzie dioda LED powinna zmienić kolor na niebieskozielony, kiedy czujnik zostanie dotknięty. Struktura while" może być też używana z licznikiem, co oznacza, że program powinien wyjść z pętli kiedy coś wydarzy się X razy. Przeanalizuj przykład:

Program pokaże obecny kolor wykryty przez czujnik koloru na diodzie LED, kiedy czujnik dotyku zostanie dotknięty. Pamiętaj, że program poczeka, aż przestaniesz dotykać czujnika. Program używa zmiennej licznika do policzenia, ile razy czujnik został dotknięty. Jeśli spojrzysz na while", zobaczysz, że program pokazuje obecny kolor do momentu, gdy liczba naciśnięć jest mniejsza niż 5. Oznacza to, że program wyjdzie z pętli, gdy czujnik dotyku zostanie dotknięty pięć razy, a dioda LED zmieni kolor na niebiesko-zielony. If (jeżeli) Celem instrukcji if" jest wykonanie kodu, jeżeli instrukcja jest prawdziwa. W powyższym przykładzie kod zostanie wykonany, jeśli czujnik dotyku zostanie dotknięty. Przykład: Program sprawi, że dioda LED zaświeci na czerwono, kiedy czujnik zostanie dotknięty.

Instrukcja if" jest również bardzo pomocna, kiedy jest używana w przypadku licznika. Spróbuj sam: W tym przykładzie światełko diody LED zmienia się za każdym dotknięciem czujnika dotyku, a kiedy licznik wskaże 3, znów zaczyna od 0. Poniżej przedstawiamy ostatni przykład. Licznik resetuje się, kiedy obiekt jest blisko do czujnika odległości.

Poprzedni przykład mógł być zaprogramowany przy użyciu struktury waituntil", ponieważ była zakodowana tylko jedna treść. W tym przykładzie trzeba jednak sprawdzić wartość czujnika dotyku i odległości, dlatego program nie może się zatrzymać na jednym czujniku. If/ else Ta struktura jest podobna do if", jednak określa również, co się dzieje, jeśli instrukcja if" jest fałszywa. Jest to przydatne, jeśli chcemy, żeby program zrobić jedną z dwóch rzeczy. Pomyśl o takiej sytuacji:

Jeśli czujnik dotyku nie jest dotykany, diod LED zaświeci się na czerwono, a w przeciwnym razie - na zielono. Dwa sposoby programowania Vex IQ Ten dokument przedstawił tylko jeden sposób programowania Vex IQ - sposób graficzny. Można jednak również programować przy użyciu tekstu. To jednak nie zostanie omówione w tym dokumencie. Istnieje możliwość zamiany graficznego kodu w kod tekstowy. W programie RobotC wybierz view (widok), a następnie "Convert Graphical File to Text" (zamień plik graficzny na tekst).

Opis komponentów Siłowniki Siłownik jest jednostką kontrolną, która przekłada sygnał lub energię elektryczną na akcje mechaniczne. Silniki smart Silniki działają na zasadzie przełożenia energii elektrycznej z baterii na energię obrotową. Silniki w Vex to silniki typu smart (Smart Motors), ponieważ zawierają więcej niż jeden silnik. Składają się z czujników i jednostki kontrolnej. Czujnik zostanie opisany w dalszej części. Jednostka kontrolna może kontrolować przepływ energii elektrycznej do silników, dzięki czemu może kontrolować szybkość i kierunek obrotu. Ponadto jednostka kontrolna rozumie wiadomości z mózgu robota. Mózg robota może zostać zaprogramowany przez użytkownika, co oznacza, że możesz kontrolować silniki. Silniki mogą być używane do wielu celów. Mogą na przykład obracać kołami, dzięki czemu robot będzie się poruszał. Co więcej, mogą służyć do otwierania i zamykania chwytaków lub poruszania ręką, co możesz zobaczyć poniżej:

Działanie silnika jest całkowicie uzależnione od tego, w jaki sposób go używasz. Touch LED

Moduł ten to zarówno czujnik, jak i siłownik. Część dotycząca czujnika zostanie opisana później. Część dotycząca siłownika to dioda LED RGB. Ten rodzaj diody LED może wyświetlać różne kolory światła przy użyciu trzech diod LED, Red (czerwonej), Green (zielonej) oraz Blue (niebieskiej). Dioda LED jest kontrolowana poprzez wysyłanie wartości pomiędzy 0 a 255 do każdej z diod. Wartość 0 odpowiada brakowi światła, natomiast 255 to maksymalne oświetlenie. Jeśli na przykład czerwona dioda LED jest ustawiona na 255, natomiast dwie pozostałe na 0, wyświetlony kolor będzie całkowicie czerwony. Jeśli natomiast czerwona dioda LED zostanie ustawiona na 125, wyświetlone światło będzie bardziej przygaszone, czyli jego odcień będzie ciemniejszy. Skorzystaj z tej strony: http://www.colorspire.com/rgb-color-wheel żeby znaleźć kolory w formacie RGB. W teorii dioda LED może wyświetlić ponad 16 milionów kolorów. Światło można również kontrolować, używając wartości barwy, która to wartość waha się normalnie od 0 do 360, jednak w przypadku Vex maksymalna wartość to 255. Sprawdź stronę: http://help.robotc.net/webhelpvex/index.htm#resources/topics/vex_iq/graphical/touc h_led/settouchledhue.htm żeby zobaczyć, jaka wartość odpowiada jakiemu kolorowi. Kolor można zmienić w jeszcze jeden sposób - wybierając jeden z trzynastu predefiniowanych kolorów: brak koloru, czerwono-fioletowy, czerwony, ciemnopomarańczowy, pomarańczowy, ciemnożółty, żółty, limonkowy, zielony, niebieskozielony, niebieski, granatowy i fioletowy. Urządzenie to może być wykorzystane do wyświetlenia tego, co robi aktualnie robot, co oznacza, że konkretne kolory będą odpowiadać konkretnym akcjom. W ten sposób możesz się upewnić, że robot robi to, co powinien. Przykład zostanie przedstawiony w sekcji dotyczącej programowania. Funkcja ta może być również wykorzystana do zastosowania przyjaznego wyglądu. Jeśli lubisz zielony, zastosuj zielone podświetlenie.

Czujniki Czujniki wykrywają, co znajduje się w ich otoczeniu i na podstawie tego wysyłają sygnał. I tak na przykład czujnik ruchu wysyła sygnał, jeśli wykryje ruch, natomiast nie robi tego, jeśli ruchu nie wykryje. Niektóre czujniki sygnalizują również natężenie czucia. Czujnik ruchu może wysłać sygnał nie tylko oparty o "on" ("włączony") i "off" ("wyłączony"), ale również sygnał, który różni się w zależności od ilości wyczuwanego ruchu. Od tej pory wychodzące sygnały czujników będą określane jako dane czujnika. Dane czujników są często wykorzystywane do tego, żeby robot zachowywał się w sposób zależy od otoczenia, w którym się znajduje. Sposób działania robota jest zależny od jego programisty. Czujnik silnika typu "smart" Silnik smart ma czujnik zwany koderem, który wysyła sygnał, gdy silnik obróci się o X stopni. Koder w silniku typu smart wysyła sygnał co każde 0.375. To pozwala określić, jak daleko pojedzie robot z kołami. Jeśli Twój robot to robot suwnicowy, z kodera korzystamy, żeby przesunąć ramię do danego kąta. Gyro Sensor (czujnik żyroskopowy)

Ten czujnik daje robotowi możliwość wykrywania obrotu. Wykorzystuje żyroskopy do badania prędkości i kierunku obrotu. Informacje te są wykorzystywane do określenia kierunku poruszania się robota w danej chwili. Czujnik pozwala wykryć prędkość ruchu do 500 na sekundę, a pomiar dokonywany jest 3000 razy na sekundę. Dzięki czujnikowi robot może na przykład obrócić się o konkretną liczbę stopni. Trzeba pamiętać, że stopnie mierzone koderem w silniku typu smart" są niekoniecznie mierzone w taki sam sposób, jak w czujniku żyroskopowym. Bumper Switch Bumper switch to najprostszy czujnik, który nadaje robotowi zmysł dotyku. Jest to przycisk, który może znajdować się w dwóch pozycjach: naciśnięty i nienaciśnięty. Może to służyć sprawdzeniu, czy robot ma z czymś kontakt. Może być również używany jako tradycyjny przycisk, którego człowiek używa do interakcji z robotem.

Distance Sensor (Czujnik odległości) Ten czujnik pozwala robotowi wykryć odległość od obiektu w kierunku, w którym zwrócony jest robot. W celu pomiaru odległości, czujnik przekazuje fale dźwiękowe i ponownie je odbiera, jeśli te zostaną odbite przez obiekt. Czas, którego potrzebuje fala dźwiękowa, żeby powrócić do odbiornika, jest przeliczany na odległość od obiektu. Czujnik może mierzyć odległość od 1 cala do 10 stóp lub od 2,54 cm do 3 m. Korzystamy z niego jeśli chcemy, żeby jeżdżący robot ominął przeszkody. Może również służyć do określenia, czy obiekt, który robot ma pochwycić, znajduje się w zasięgu chwytaka. Pamiętaj, że czujnik mierzy jedynie odległość do obiektów, które znajdują się w kierunku, w którym jest on skierowany.

Color Sensor (Czujnik kolorów) Ten czujnik jest prawdopodobnie najbardziej skomplikowany pod względem użycia, ponieważ wykrywa i wysyła wiele danych. Moduł czujnika składa się z trzech części, białej diody LED, diody podczerwieni IR (Infared) i czujnika kolorów. Czujnik można ustawić w trzech różnych trybach: trybie skali szarości, trybie nazwy koloru i trybie barwy. We wszystkich przypadkach poza jednym istnieją tylko dwa tryby: kolor i skala szarości (jeden przypadek zostanie omówiony w sekcji dotyczącej programowania). Tryb nazwy koloru i barwy wchodzą w skład kategorii koloru. Czujnik ten może wykryć kolory i wysłać informację o nich na trzy różne sposoby: na podstawiewartości barwy, nazwy koloru i w trzech różnych kanałach (czerwony, zielony, niebieski). Wartość barwy zwraca wartość pomiędzy 0 a 255 (patrz sekcja Siłownik - Touch LED). Nazwa koloru zwraca nazwę jednego z trzynastu kolorów (patrz sekcja Siłownik - Touch LED). Kolor może być również zwrócony w trzech różnych kanałach, przy czym każdy kanał zwróci wartość pomiędzy 0 a 255, co będzie najodpowiedniejszym sposobem. Pamiętaj, że czujnik kolorów musi być ustawiony na tryb nazwy koloru albo tryb barwy. Wyczuwanie kolorów może być wykorzystywane do rozróżniania obiektów; robot może dzięki temu sortować obiekty poprzez przesuwanie wszystkich niebieskich obiektów do jednej pozycji, a żółtych do innej.

Czujnik może działać w skali szarości. Kiedy jest on ustawiony na tryb skali szarości, zaświeci się biała dioda LED, a czujnik koloru będzie teraz działał jako czujnik światła. Czujnik zwraca wartości pomiędzy 0 a 400. Ten tryb jest zazwyczaj używany przy robotach typu line follower. Czujnik ten może być również wykorzystywany jako czujnik zbliżeniowy. Tutaj wykorzystywane są dioda podczerwieni i czujnik kolorów w celu wykrycia intensywności światła podczerwonego. Światło podczerwone jest bardziej intensywne, gdy czujnik jest blisko obiektu z uwagi na odbijanie światła. Wyczuwanie bliskości może być wykorzystane w celu określenia, kiedy chwytak powinien podnieść obiekt. Z modułu można również korzystać w celu pomiaru nasycenia koloru, ale to zagadanienie nie zostanie tutaj opisane. Touch LED Część czujnika jednostki jest wrażliwa jedynie na dotyk przypominający dotyk ludzki. Czujnik może być w dwóch stanach: dotykany lub niedotykany. Dzięki temu ludzie mogą wchodzić w interakcję z robotem, do którego podłączony jest czujnik. W ten sposób można na przykład zmienić prędkość robota jeżdżącego, a potem zasygnalizować, przy jakiej prędkości będzie świecić dioda LED.

Robot Brain (mózg robota) Mózg robota to miejsce, gdzie łączą się wszystkie czujniki i siłowniki robota. Ma 12 takich samych łączników, dzięki którym możliwe jest podłączenie go do innych modułów wyposażonych w takie same łączniki. Mózg robota i moduły są połączone kablami. Mózg robota to jednostka kontrolna, co oznacza, że mogą na niej działać programy, które kontrolują działanie robota. Programy są ładowane do mózgu robota z komputera za pomocą kabla USB. Kiedy program zostaje załadowany do mózgu robota, zostaje on zapisany, więc można z niego korzystać nawet bez połączenia do komputera. Oprócz czterech łączników mózg robota ma cztery przyciski i podświetlany wyświetlacz LCD. Przyciski służą do nawigowania po interfejsie użytkownika wyświetlonym na ekranie. Interfejs użytkownika pozwala na dostosowanie ustawień i dostęp do informacji na temat systemu i urządzenia. Co więcej dzięki niemu użytkownik widzi i może uruchomić zapisane programy.