Salam dostlar. Bu məşğələdə servo motorla tanış olacağıq və servonu Arduino Mega ilə idarə edəcəyik. Məşğələdə istifadə etdiyimiz servo sabit 5 voltla işləyir. Bu servonun bir neçə üstün cəhətləri var. Onu rəqəmsal siqnallarla idarə etmək mümkündür. Bu səbəbdən müxtəlif rəqəmsal proyektlərdə tətbiq etmək olar. Aşağıdakı şəkildədə gördüyünüz kimi servo motorun 3 bağlantı kabeli var; Ground (torpaq), 5 VDC və Signal. Ground və 5 VDC bağlantıları ilə servo enerji ilə təmin olunur. Signal bağlantısı ilə servoya müxtəlif idarəetmə siqnalları verilir. Servolar 180 dərəcə və ya 360 dərəcə dönən olmaqla iki cür olur.
Bundan başqa servo motorların yüksək torku olur. Buda robot proyektlərində çox istifadə olunmasına səbəbdir.
İndi isə servonu arduino ilə idarə edək. Əvvəlcə birinci üsul.
Bu üsulda sadəcə servoya müxtəlif dərəcələrdə pozisya seçirik və servo o pozisyaya hərəkət edir.
Dövrə aşağıdakı kimi qurulur. Qara kabel grounda, qırmızı kabel 5 volta, sarı kabel isə 22 ci pinə. Bundan sonra arduinonu USB ilə komputerə qoşub aşağıdakı kodları yükləyirik.
#include <Servo.h>; Servo myservo; int pos = 90; // ilk başda servonun pozisyasını 90 dərəcə olaraq göstəririk void setup() { myservo.attach(22); // 22 ci pin servo üçün siqnal verir } void loop() { myservo.write(pos=90); // bu komandalar isə pozisyaları dərəcə ilə göstərir. delay (1500); // milli saniyə ilə gözləmə müddəti myservo.write(pos=0); delay (1500); myservo.write(pos=180); delay (1500); }
Təcrübəni aşağıdakı videodan izləyə bilərsiniz.
İkinci üsulda dövrə olduğu kimi qalır. Bu dəfə kodlar dəyişəcək. Hərəkət isə belə olacaq, 0 dərcədən 180 dərəcəyə 1 dərcələrlə hərəkət edəcək, sonra 180 dərəcədən 0 cı dərəcəyə qədər qayıdacaq.
#include <Servo.h> Servo myservo; int pos = 0; // servonun ilk pozisyası sıfır void setup() { myservo.attach(22); // siqnal 22 ci pindən veriləcək } void loop() { for(pos = 0; pos < 180; pos += 1) // 180 dən kiçi oldugu müddətcə pos bir dərəcələrlə artacaq { myservo.write(pos); // pos a uyğun olaraq servo hərəkət edəcək delay(15); // 15 milli saniyə aralıqlarla artacaq dərəcələr } for(pos = 180; pos>=1; pos-=1) // burda isə tərsinə { myservo.write(pos); delay(15); } }
Növbəti, 3-cü üsul biraz fərqli və daha maraqlıdır. Burada potensiometrdən istifadə edəcəyik. Pot-la daxil etdiyimiz dəyərə görə sevro hərəkət edəcək.
Kodlar aşağıdakı kimidir.
#include <Servo.h> Servo myservo; int potpin = 0; // potensiometrin orta pini arduinonu 0 pininə qoşulur int val; void setup() { myservo.attach(22); } void loop() { val = analogRead(potpin); // potpin yəni 0 pinindən analog dəyər oxunur val = map(val, 0, 1023, 0, 179); // oxunan dəyər bu şəkildə dərəcəyə çevrilir myservo.write(val); // və servo val qədər hərəkət edir. delay(10); // gözləmə vaxtı, milli saniyə }
Məşğələlərin davamı olacaq. Suallarınızı şərh bölməsində yaxud forumda bildirməyi unutmayın.