Lekcja 10: Ruchy bracie, ruchy! - serwomechnizmy.
Serwomechanizm to wyspecjalizowany silnik, który może wykobywać obroty o określony kąt. Umiejętność
programowania serwomechanizmu przyda się nam w przyszłości, gdy będziemy chcieli zbudować robota,
który będzie posiadał zdolność widzenia i orientacji w przestrzeni. Tak jak głowa ludzka, tak głowa robota musi
mieć możliwość obracania się wokół osi pionowej w celu przeszukiwania sztucznym okiem przedmiotów na drodze.
Do pracy wykorzystamy serwomechanizm Serwo Tower Pro SG-50 micro, którego opis poniżej:
Serwo Tower Pro SG-50 micro (Parametry dla napięcia 4,8 V)
|
Na początek budujemy schemat, w którym będziemy bezpośrednio z kodu wydawać polecenia obrotu o zadany kąt.
Kod:
#include < Servo.h> Servo serwo; void setup(){ serwo.attach(9); } void loop(){ serwo.write(0); delay(150); serwo.write(180); delay(150); }
W linii 1 dołączamy bibliotekę Servo.
W linii 2 tworzymy nowy obiekt z klasy Servo o nazwie serwo. Trzeba to zwrócić uwagę
na to, że obiekt nazwaliśmy z 'w' w nazwie, a sama klasa ma literę 'v'.
W linii 4 wskazujemy na pin obsługujący serwomechanizm - u nas 9.
W linii 7 wydajemy polecenie ustawienia kąta na 0 stopni.
Po przerwie w linii 8 wydajemy polecenie w linii 9 do obrotu o 180 sopni. Otrzymamy w ten sposób ciągłe
obroty z 0 do 180 co 150 milisekund.
Teraz zastosujemy dodatkowo potencjometr do sterowania kątem obrotu.
Ze schematu wynika, że na (+) serwomechnizmu dołączamy napięcie 5V, do złącza (Pulse) dołączamy pin sterujący - u nas pin 9, zaś do złącza (-) podłączamy GND. Dodatkowo potencjometrem 100kOhm podłączonym do analogowego wejścia - u nas A2 - będziemy sterować wartością kąta obrotu.
Piszemy kod jak poniżej:
#include < Servo.h> Servo serwo; int potencjometr = 2; int wartosc; void setup(){ serwo.attach(9); } void loop(){ wartosc = analogRead(potencjometr); wartosc = map(wartosc, 0, 1023, 0, 179); serwo.write(wartosc); delay(15); }
W kodzie mamy kilka zmian.
W linii 3 definiujemy pin potencjometru - u nas pin analogowy 2.
W linii 4 definiujemy zmienną wartość przechowującą kąt obrotu.
W linii 9 zczytujemy wartość z patencjometru do zeminnej wartosc.
W linii 10 ustalamy zakres przeliczając wartość w zakresie 0-1023 i kąta 0 - 180 stopni.
W linii 11 ustawiamy kąt na serwomechnizmie wysyłając zmienną wartosc.
W linii 12 robimy krótką przerwę.
Więcej poleceń i funkcji obsługujących serwomechnizmy można znaleźć na stronie Arduino.
Powrót do spisu materiałów