Arduino İle Servo Motor Kontrolü
Güncelleme 06/11/2024
Arduino ile Potansiyometre ve LDR kullanarak Servo Motor Kontrolü
Potansiyometre kullanarak Servo Motor Kontrolü
Arduinonun A0 pinine bağlı potansiyometreyi çevirdiğimiz oranda 9.pine bağlı olan servo motorun dönmesini sağlayan Arduino programını
Kullandığımız Standart Servo motor; 0 ile 180 derece arasında milini döndürüyor. Potansiyometre ile yaptığımız uygulamada potansiyometreyi çevirdikçe 0 ile 1023 arasında değişen sayısal değerlerin raporlandığını gözlemlemiştik. Bu değerleri bu uygulamada da kullandık.
Devre Şeması:
Arduino Programı:
/* "Servo Motor kontrolü."
Arduino ile potansiyometreyi çevirdiğimiz oranda servo motorun
dönmesini sağlayan program. diyot.net */
#include <Servo.h> //Servo kütüphanesini ekle.
Servo motor; //motor adında servo kullanacağım.
const int POTpin=A0; //A0 pinini POTpin olarak isimlendir.
int konum; //konum ve yeni konum adında değişkenler tanımla.
int yenikonum;
void setup() {
motor.attach(9); //motor adındaki servoyu 9.pine bağladım.
Serial.begin(9600); //Seri haberleşmeyi başlat.
}
void loop() {
konum=analogRead(POTpin);
yenikonum=map(konum,0,1023,0,179);
motor.write(yenikonum);
Serial.print("konum degeri=");
Serial.println(konum);
//potu çevirdikçe 0-1023 arasında değerler görüntülenir.
Serial.print("yeni konum degeri=");
Serial.println(yenikonum);
//potu çevirdikçe 0-179 arasında değerler görüntülenir.
delay(30);
}
Servo motor kontrolünü kolay bir şekilde yapmamızı sağlayan Servo kütüphanesini Arduino programının başında ekledik. Kullanacağımız Servoyu “motor” olarak isimlendirdik. A0 pinine potansiyometre bağladığımız için o pini POTpin olarak isimlendirdik, değişmeyecek bir değer olduğundan const int veri tipinde tanımladık. Program içerisinde kullanılacak “konum” ve “yenikonum” isimlerindeki değişkenleri int veri tipinde programın başında tanımladık.
void setup() kısmında servo motoru Arduinonun 9.pinine bağladığımızı belirttik. Potansiyometre bağladığımız pin Arduinonun ANALOG IN girişlerinden biri olduğu için bu pini pinMode komutuyla giriş olarak ayarlamaya gerek yoktur. Ve Serial.begin(9600) komutunu yazarak seri haberleşmeyi başlatıyoruz.
void loop() kısmında potansiyometrenin ne kadar çevrildiğini analogRead komutuyla okuyup konum ismindeki değişkene kaydettik. Bu kaydedilen değerler 0 ile 1023 arasında değişmektedir. Standart servo motor ise 0 ile 180 dereceye kadar dönüş yapabilmektedir. O zaman yapılması gereken 0 ile 1023 arasında değişen değerleri, 0 ile 179 arasında değişen değerlere indirgemek-daraltmak olmalıdır. map komutunu kullanarak bunu yaptık ve daraltılan yeni sayısal değerleri yenikonum ismindeki değişkene kaydettik.
motor.write(yenikonum) yazarak potansiyometrenin çevirme hareketini servo motorun dönme hareketiyle ilişkilendirdik. Böylece potansiyometreyi çevirdiğimiz oranda servo motorun dönmesi sağlanmış oldu.
LDR kullanarak Servo Motor Kontrolü
Bu uygulamada programı hiç değiştirmeden potansiyometre yerine LDR bağlarsak; LDR üzerinde düşen ışık miktarına bağlı olarak servo motorun dönmesi sağlanır.
Devre Şeması: