# Zajęcia OSOYOO ## Dzień 1 **Przygotowanie:** Instalacja biblioteki Robot.h ### Zadanie 1 Napisanie jazdy do przodu bez biblioteki #### Piny silników Każdy z silników ma 3 piny Dwa cyfrowe, odpowiedzialne za kierunek obrotu Jedno analogowe, odpowiedzialne za nadanie prędkości Piny: 1 -> Przód 2 -> Tył P -> Predkość | Piny | Przednie Lewe | Przednie Prawe | Tylnie Lewe | Tylnie Prawe | |:----:|:-------------:|:--------------:|:-----------:|:------------:| | 1 | 26 | 22 | 7 | 5 | | 2 | 28 | 24 | 8 | 6 | | P | 10 | 9 | 12 | 11 | #### Obsługa silników Każdemu silnikowi trzeba nadać: 1. Kierunek obrotu 2. Prędkość obrotu Przykładowe wywołanie obrotu (Koło Lewe Przednie, by się obróciło do przodu) ```c++ int speed = 100; void LPDoPrzodu(){ digitalWrite(26, HIGH); digitalWrite(28, LOW); analogWrite(10, speed); } ``` Trzeba pamiętać by dokładnie jeden pin kierunkowy był włączony w jednym momencie, inaczej silnik się nie poruszy. Warto utworzyć zmienną "speed", by łatwo zmieniać prędkość silnika, można wykorzystać do obrotu. ### Zadane 2 Pokazujemy jak dołączyć bibliotekę do skryptu. [Biblioteka do kierowania robotem](/JAT2s2T5Tz-QzEtXqR9djQ) ``` Narzędzia -> Dołącz Biblotekę ZIP ``` Rozmawiamy o tym w jaki sposób nasz robot może się poruszać (przód, tył, sręcanie, stryfe) Zgrywanie skryptów do robota ### Zadanie 3 Wgranie do robota skryptu *Lesson6 APMode* Zabawa z robotem, sterowanie aplikacją. [Lekcja](https://osoyoo.com/2020/05/12/osoyoo-v2-1-robot-car-lesson-6-use-wifi-to-control-an-iot-robot-car/) [Kod](https://osoyoo.com/picture/V2.1_Arduino_Robot_Car/code/v2smartcar-lesson6B.zip) --- ### Zadanie 4 Tor przeszkód, każdy ma jedną próbę, potem rotacja. Pierwszą rundę robimy sterowaniem aplikacją. Drugą rundę uczestnicy próbują przejść tor przeszkód pisząc sekwencję ruchów w programie. ``` cpp //rusz do przodu delay(4000); //rusz w prawo delay(500); //... ``` Najłatwiejszym sposobem na pisanie kierunków jazdy jest stowrzenie kilku funkcji (doPrzodu(), doTylu(), skrecWPrawo()...) które będą wywoływać odpowiednie funkcje uruchamiania kół z naszej biblioteki, ### Zadanie 5 Konkurs na skrypt na przejechanie to toru na macie (pętli) w jak najktótszym czasie. --- ## Dzień 2 ### Zadanie 1 - Line Follower na macie Głównym pomysł na działanie LineFollowera jest stosunkowo prosty. Jeżeli linia znajduje się po lewej stronie robota należy skręcić w lewo, jeżeli po prawej - w prawo. Jeżeli linia jest na środku robot może spokojnie jechać do przodu. Dodatkowo, dzięki temu że mamy aż 5 czujników można zaprogramować robota aby jechał delikatnie w prawo lub delikatnie w lewo jeżeli linia jest między środkiem a krawędzią pola czujników. ```cpp //main.cpp #include "Robot.h" bool czujniki[5]; //tablica na dane z czujnika koloru void czujnik_koloru(){ //funkcja czytająca dane z czujników czujniki[0] = !digitalRead(A4); czujniki[1] = !digitalRead(A3); czujniki[2] = !digitalRead(A2); czujniki[3] = !digitalRead(A1); czujniki[4] = !digitalRead(A0); //negacja (operator !) sprawia że wartości 1 będą na czujnikach pod którymi jest czarna linia, a 0 na czujnikach pod którymi jest białe pole } void nawiguj(){ //funkcja wyznaczająca kierunek ruchu czujnik_koloru(); if(czujniki[0]){ //jedz ostro prawo } else if(czujniki[4]){ //jedz ostro lewo } // tu można dodać delikatne skręcanie else{ //jedz do przodu } } Robot mojrobot; void setup(){ } void loop(){ nawiguj(); } ``` ### Zadanie 2 Kończenie LineFollowera, własne projekty uczestników.