---
# System prepended metadata

title: Dokumentacja OSOYOO

---

# Dokumentacja OSOYOO

## Silniki
### Działanie silników
Silniki mają dwa wejścia, + i -.
Działają podobnie jak potencjometr, w sensie, jeśli podepniesz na odwrót do będą obracać się w drugą stronę
Prędkość jest zależna od napięcia prądu.
Osoyoo rozdziela to na dwa piny, na których będziemy przesyłać w sygnały + i -, a także na pin przez który regulujemy napięcie.

### 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++
void LPDoPrzodu(){
digitalWrite(26, HIGH);
digitalWrite(28, LOW);
analogWrite(10, 100);
}
```
Trzeba pamiętać by jeden kierunek był włączony w jednym momencie, inaczej silnik się nie poruszy.
Warto wywołać zmienną "speed", by łatwo zmieniać prędkość silnika, można wykorzystać do obrotu.


## Czujniki
### Serwo i Echolokacja
Można spojrzeć do poprzednich dokumentacji do obsługi.
Tutaj Echolokacja jest podłączona do serwosilnika, wykorzystywane jest to do wyczucia przeszkód przed robotem i na prawo i lewo. 
Piny:
Serwo <- 13
Echo <- 31
Trig <- 30
### Czujniki koloru
Sensor składa się z pięciu (5) czujników na które składją się (od lewej):
A4, A3, A2, A1, A0
Czujniki wyczuwają odbijanie się światła od podłoża.
Oddają sygnały bitowe, 1 kiedy się odbija (biały) , 0 kiedy się nie odbija (czarny).
Przykładowe odczytanie terenu:
```c++
  String senstr="";
  int s0 = digitalRead(A4);
  int s1 = digitalRead(A3);
  int s2 = digitalRead(A2);
  int s3 = digitalRead(A1);
  int s4 = digitalRead(A0);
  int sensorvalue=32;
  //32 jest po to by w przypadku gdzie nigdzie nie wyczuje odbicia nadal miec obraz 00000, zamiast 0
  sensorvalue +=s0*16+s1*8+s2*4+s3*2+s4;
  senstr= String(sensorvalue,BIN);
  senstr=senstr.substring(1,6);
  //odcina nam pierwszą cyfrę liczby binarnej, w kazdym przypadku byloby to 1
```
Dzięki niemu możemy odczytać obrazy typu "11100", lub "00011"
które pokazują po której stronie odbija swiatlo i które czujniki to wyczuły.
## Informacje dodatkowe
### Praca Robota
Trzeba pamiętać że robot działa prawidłowo dopiero w momencie odłączenia go od komputera i włączenia zasilenia bateriami. 
UWAGA! ROBOT MA DUŻO SIŁY, UWAŻAĆ ŻEBY NIE POLECIAŁ W ŚCIANE.
### Własne biblioteki
Dokumentacja:
https://docs.arduino.cc/learn/contributions/arduino-creating-library-guide
### Lekcje ze strony Osoyoo
Lekcja 1 (Działanie kół):
https://osoyoo.com/2021/09/17/mecanum-wheel-robotic-kit-v2-0-for-arduino-mega2560-lesson-1/
Lekcja 2 (Unikanie przeszkód za pomocą echolokacji):
https://osoyoo.com/2021/09/17/mecanum-wheel-robotic-kit-v2-0-for-arduino-mega2560-lesson-2/
Lekcja 3 (Podążanie za koloerm białym/czarnym):
https://osoyoo.com/2021/09/17/mecanum-wheel-robotic-kit-v2-0-for-arduino-mega2560-lesson-3/