Merhaba , bu yazımda hareket sensörü (PIR) ile servo motor kontrolü yapacağım. Servo motorun dönme açısını belirleyerek örneğin 180 derece yaptığımızda kapı açıp kapama gibi örneklerle gerçek hayatımızda pratikleştirebiliriz. Hareket sensörümüz sayesinde kapıya yaklaşan kişi algılanır ve servo motor sayesinde de kapı açılıp kapanabilir.Haydi hemen projemize başlayalım.
Malzemeler
1 adet Arduino Uno
1 adet Breadboard
1 adet servo motor
Hareket Sensörü (PIR)
5 adet erkek-erkek jumper kablo
3 adet erkek-dişi jumper kablo
Çalışma Prensibi
Maddeler sahip oldukları ısıdan dolayı etrafa kızılötesi dalga saçar ve hareket sensörü kızılötesi dalgaları algılayarak çalışır. Kızılötesi dalgalardaki değişimi algılar ve sinyal çıktısı verir. Projemizde hareket sensöründen veri okunarak bir hareket olduğunda servo motorumuz da hareket edecek. Motorumuz kodumuzla birlikte 180 derece açıya gidip sonra sıfırlanacak. Yazdığımız kodla birlikte servo motora istediğimiz açıyı yaptırabiliriz.
Devre
- Adım: hareket sensörümüzü yerleştiriyoruz. Hareket sensörün GND yani eksi pinini beardboard üzerinde eksi ile Hareket sensörün VCC yani artı pinini ise breadboard üzerinde artı ile
Hreket senörün DATA pinini ise arduino üzerinde bulunan 8. pinle birleştirdik.
2. Adım servo motorumuzu yerleştiriyoruz. Servo motorun GND pinin breadboard üzerinde eksi
Servo motorun VCC pinini breadboard üzerinde artı
Servo motorun sinyal pinini ise arduino üzerinde bulunan 2. pinle birleştirdik.
kod
(dikkat!! servo motor kullandığımız için servo motor kütüphanesi eklemeyi unutmayın.)
#include <Servo.h>// servo motor kütüphanesi
int pirPin = 8; //Sensörü taktığımız pin
int servoPin = 2; //Servoyu taktığımız pin
int hareket; //Sensörden alınan veriyi hafızada tutmak için değişken tanıımlıyoruz
Servo motor;//Servo motoru kontrol etmemizi sağlayan motor adında servo motor tanımladık
void setup() {
motor.attach(servoPin); //Servomuzu 9. pin ile ilişkilendirdik.
pinMode(pirPin, INPUT); //Sensör pinimizi giriş olarak ayarladık
}
void loop() {
hareket = digitalRead(pirPin); //Sensörden hareket verisini okuyoruz
if (hareket == HIGH) {// if-else ile hareket pinimizin değerine göre servo motorumuza gerekli açı komutunu gönderiyoruz.
motor.write(180);//istediğimiz açı değeri
delay(250);//bekleme
motor.write(0);
}
else { //Hareketlilik yok ise içerideki komutlar uygulanır.
motor.write(90);
}
}