Servo Motor
Tower Pro SG90 Mini Servo Motor
Servo Motor
Tower Pro SG90 Mini Servo Motor
SG90 Servo motor, en çok kullanılan servo motor çeşididir. Mikro Servo motor olarak da geçmektedir.
Servo motorlar düşük devirli(hızlı), yüksek torklu motorlardır. Bundan dolayı robotik uygulamalarda sıklıkla tercih edilmektedir. RC araba, RC uçak, Robot kol, RC gemi vb. birçok kullanım alanına sahiptir.
Servo motor için
Arduino PWM pinlerini kullanmak gerekir.
-TOPRAK (GND)
+5v
PWM pini
SERVO TEST 1 (Servo motorun hareketini gözlemleyelim)
SERVO motor SAĞA-SOLA hareket edecek.
Servo motor için Ardui̇no PWM pinlerini kullanmak gerekir.
#include <Servo.h> //Servo kütüphanemizi ekliyoruz.
int servoPin = 9; //Servoyu takacağımız pin
Servo motor; //Servo motor değişkeni/nesnesi tanımlandı.
void setup() {
motor.attach(servoPin); //Servomuzu 9.pin ile ilişkilendiriyoruz.
}
void loop() {
motor.write(150);
delay(2000);
motor.write(30);
delay(2000);
}
SERVO TEST 2 (Servo motorun yavaş hareket etmesi için)
SERVO motor SAĞA-SOLA hareket edecek.
Servo motorun yavaş hareket etmesi için alttaki kodu eklemeliyiz.
Bu kod satırları ile servo motorumuz
dönecektir.
**Siz de bu açı miktarını ve bekleme süresini değiştirebilirsiniz.
//Yavaş hareket olması için
for (int i = 0; i < 40; i++) {
motor.write(i); #Açı 1 er derece artıyor.
delay(10);
}
delay(1000);
for (int i = 40; i > 0; i--) {
motor.write(i); #Açı 1 er derece azalıyor.
delay(10);
}
delay(1000);
Hareket Eden Bayrağımız
Bayrak sağa-sola
servoya bağlı
Hareket Eden Bayrağımız
Bayrak sağa-sola
servoya bağlı
Hareket Eden Gözler
sabit, 1.katman
gözler sağa-sola, 2.katman
servoya bağlı
PIR ve Servo Motor ile proje
KOD
PIR sensörü çalışınca,
LED yanacak ve SERVO motor çalışacak.
Servo motor için Ardui̇no PWM pinlerini kullanmak gerekir.
#include <Servo.h> //Servo kütüphanemizi ekliyoruz.
int led = 8; //LED i takacağımız pin
int pirPin = 11; //Sensörü takacağımız pin
int servoPin = 9; //Servoyu takacağımız pin
int hareket; //Sensörden aldığımız veri
Servo motor; //Servo motor değişkeni
void setup() {
motor.attach(servoPin); //Servomuzu 9. pin ile ilişkilendiriyoruz.
pinMode(pirPin, INPUT); //Sensör pinimizi giriş olarak ayarlıyoruz.
pinMode(led, OUTPUT);
}
void loop() {
hareket = digitalRead(pirPin); //Sensörden okuma yapıyoruz.
if (hareket == HIGH) { //Hareketlilik var ise içerideki komutlar uygulanır.
motor.write(150);
delay(250);
motor.write(30);
delay(250);
motor.write(150);
delay(250);
motor.write(30);
delay(250);
motor.write(150);
delay(250);
motor.write(30);
delay(250);
motor.write(90);
digitalWrite(led, 1);
delay(500);
} else { //Hareketlilik yok ise içerideki komutlar uygulanır.
motor.write(90);
digitalWrite(led, 0);
}
}
KOD
Robot 120 cm den daha yakına gelene
bayrak sallayacak.
Turkuaz boyalı satırlar mesafe ölçümü yapmaktadır.
#include <Servo.h> //Servo kütüphanemizi ekliyoruz.
#define echoPin 6
#define trigPin 7
int servoPin = 10; //Servoyu takacağımız pin
Servo motor; //Servo motor değişkeni
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
motor.attach(servoPin); //Servomuzu 9.pin ile ilişkilendiriyoruz.
}
void loop() {
long bekle, sure, mesafe; //değişkenlerin türünü tanımladık
digitalWrite(trigPin, LOW); // Sensör başlatılıyor
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH); //geçen süre okunuyor
mesafe = sure / 58.2; //mesafe hesaplanıyor, cm olarak
Serial.println(mesafe); //mesafe seri ekrana yazdırılıyor.
delay(50);
//Servo çalıştırma komutları
if (mesafe < 120 ) {
for (int i = 0; i < 40; i++) {
motor.write(i);
delay(11);
}
delay(1000);
for (int i = 40; i > 0; i--) {
motor.write(i);
delay(11);
}
delay(1000);
}
}
2 Servo motor ile basit
robotik kol
2 Servo motor ile basit
robotik kol
3 saniye aralıkla
bardağı tutma ve bırakma hareketini yapacak.
#include <Servo.h> //Servo kütüphanesini ekledik
Servo yavuz; //1.servo (sağ) adı yavuz olsun.
Servo kuzey; //2.servo (sol) adı kuzey olsun.
int servopinSag = 3; //sağ servo pini 3
int servopinSol = 5; //sol servo pini 5
void setup() {
yavuz.attach(servopinSag); //Servo ile pini bağladık
kuzey.attach(servopinSol); //Servo ile pini bağladık
yavuz.write(90); // sağ servonun başlangıç açısı belirlendi
kuzey.write(0); // sol servonun başlangıç açısı belirlendi
}
void loop() {
delay(50);
yavuz.write(85);
kuzey.write(5);
delay(50);
yavuz.write(80);
kuzey.write(10);
delay(50);
yavuz.write(75);
kuzey.write(15);
delay(3000); // robot parmak açıldı. Bardağı bıraktı.
yavuz.write(90);
kuzey.write(0);
delay(3000); // robot parmak kapandı. Bardağı tuttu.
}
2 Servo motor ile basit
Silecek
1 saniye aralıkla sağa-sola
araç sileceği
potansiyometre ile çalışan
#include <Servo.h>
Servo motor1;
Servo motor2;
void setup() {
pinMode(A0, INPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(3, OUTPUT); //servo 1 sol
pinMode(5, OUTPUT); //servo 2 sağ
motor1.attach(3); //sol
motor2.attach(5); //sağ
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(A0));
if (analogRead(A0) < 500) {
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
motor1.write(0);
motor2.write(0);
delay(1000);
motor1.write(30);
motor2.write(35);
delay(1000);
}
if (analogRead(A0) > 500) {
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
}
//delay(1000);
}