Jednak, gdy będziemy chcieli napisać program realizujący bardziej skomplikowaną trasę, będzie on zajmował wiele linijek kodu, w którym łatwo się pogubić. Dlatego utworzymy odpowiednie funkcje które będą realizować następujące zadania: jazda do przodu, jazda do tyłu, obrót w prawo, obrót w lewo oraz zatrzymanie (stop).
Aby obracać się w prawo, lewy silnik musi kręcić się do przodu, a prawy do tyłu. W analogiczny sposób realizowany jest obrót w lewo – wtedy silnik prawy musi obracać się do przodu, natomiast lewy do tyłu. Napisane funkcje prezentują się następująco:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
void Jedz_do_przodu(int i) { // Lewy silnik digitalWrite(6,LOW); analogWrite(10,i); // Prawy silnik digitalWrite(7,LOW); analogWrite(11,i); } void Jedz_do_tylu(int i) { // Lewy silnik digitalWrite(6,HIGH); analogWrite(10,i); // Prawy silnik digitalWrite(7,HIGH); analogWrite(11,i); } void Obrot_w_prawo(int i) { // Lewy silnik digitalWrite(6,LOW); analogWrite(10,i); // Prawy silnik digitalWrite(7,HIGH); analogWrite(11,i); } void Obrot_w_lewo(int i) { // Lewy silnik digitalWrite(6,HIGH); analogWrite(10,i); // Prawy silnik digitalWrite(7,LOW); analogWrite(11,i); } void Stop() { // Lewy silnik digitalWrite(6,LOW); analogWrite(10,0); // Prawy silnik digitalWrite(7,LOW); analogWrite(11,0); } |
Argumentem funkcji jest wartość PWM, która jest przekazywana do funkcji generującej sygnał PWM – analogWrite().
W programie głównym stworzyłem następujący program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
for(int j=0;j <4; j++) { Jedz_do_przodu(100); delay(1000); Stop(); delay(500); Obrot_w_prawo(50); delay(600); Stop(); delay(500); } |
Powyższy kod programu realizuje jazdę podwozia po obwodzie kwadratu. Najpierw robot jedzie przez 1 sekundę (1000 ms) do przodu, następnie zatrzymuje się na 0,5 sekundy (500 ms). Później obraca się w prawo przez 600 ms, taki cykl wykonuje się cztery razy. Czas obrotu należy dobrać doświadczalnie metodą prób i błędów. Pełen program znajduje się w sekcji Plik do pobrania.
Jeżdżenie po „kwadracie” zostało zaprezentowane na poniższym wideo: