adım adım arduino dersleri etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Merhabalar arkadaşlar,
Projemizde parallax ping sensörü üzerinden cisimlerin mesafe bilgilerini alacağız.Bunun için 7 numaralı pinimizi hem input hemde output olarak kullanacağız.Parallax ultrasonik sensör üzerinden veri okuyabilmemiz için, sensöre 5 mikrosaniye kadar dijital 1 yani HIGH değeri göndermemiz gerekiyor.Akabinde 7 numaralı pinimizi input pini olarak tanımlayacağız ve pulseIn() fonksiyonu dönen pulse süresi ile sensörün geribildirimi mesafe olarak alacağız.
Bu yazımızda ultrasonik sensörlerden ve bu sensörlerin arduino ile kullanılmasından bahsedeceğiz.
Ultrasonik sensörleri alarm sistemi olarak,engelden kaçan robot yapımında,mesafe uzaklığı ölçmede kullanabilirsiniz.
Nedir bu ultrasonik sensör ve nasıl çalışır ?
Ultrasonik sensörler, ultrasonik ses dalgaları göndererek bu dalgaların geri döünşleri yani eko yapmalarını beklerler.Bekleme süreleri sırasında eğer ki bir cisimden ses dalgası geri dönüyorsa bize geri bildirimde bulunurlar.Ultrasonic sensör içerisinde bulunan işlemci ile sesin ne kadar sürede geri döndüğü bilgisi tutulur ve bu bilgi bize pwm yani pulse olarak geri döndürülür.
const int sinyal=7; // sinyalimizin bize geleceği pini seçtik
void setup()
{
}
unsigned long ping()// sensörden dönen bilgiyi bize mesafe olarak döndürecek olan fonksiyonumuzu tanımladık
{
pinMode(sinyal,OUTPUT);//sinyal pinimizi çıkış olarak atadık
digitalWrite(sinyal,LOW);// 7 numaralı pinimize dijital 0 gönderdik
delayMicroseconds(2);// 2 mikro saniye gecikme
digitalWrite(sinyal,HIGH);// 7 numaralı pinimize dijital 1 gönderdik
delayMicroseconds(5);
digitalWrite(sinyal,LOW);//5 mikrosaniye boyunca sensöre dijital 1 verdik ve ölçüm yapmasını istedik.
pinMode(sinyal,INPUT);//7 numaralı pinimizi giriş olarak değiştirdik
digitalWrite(sinyal,LOW);// pinimizi dijital 0 yaptık ve pulse bekliyoruz
return pulseIn(sinyal,HIGH);//7 numaralı pinin lowdan high olana kadar olan zaman yani sensör değeri
}
void loop()
{
int range =ping() / 29;// sensörden dönen pulse süresini aldık
delay(50);//50 ms gecikme
}
Yukarıdaki koddar 29 ile neden böldüğümüz aklınıza gelebilir.Parallax sensörün bizen döndürdüğü her pulse 29 microsaniyesi 1 cm ye denk gelmektedir.Bizde gelen süreyi cm ye çevirmek için gelen değeri 29 ile bölmekteyiz.
Bu yazımızda servo motoru arduino üzerinden sürme projesinden bahsedeceğiz.
Servo motorlarının üzerinde 1 adet power,1 adet ground ve 1 adette kontrol ya da sinyal ucu olmak üzere toplamda 3 adet pin bulunmaktadır.
Yandaki resimde tipik bir servo motor görülmektedir.Peki servo motor nasıl çalışır ?
Servo motorlar sinyal uçlarına gönderilen pulse ile çalışırlar ve bu pulse ile servo motorun 0 ile 180 derece arasında açıda dönmesini sağlar.Arduino tarafından gönderilecek olan pulse her 20 mili saniyede bir tekrarlanmalıdır aksi halde step motorumuz başlangıç değerine geri dönecektir.
Servo motoru 1ms ile 2ms pulse değerlerimizle 0-180 derece aralığında kontrol etmeye çalışacağız ve bunun içinde arduino servo motor kontrol kütüphanesini kullanacağız.
Arduino Servo motor kütüphanesi nasıl çalışır ? (<Servo.h>)
Servo kütüphanesini bir derleyici ile açtığınızda karşınıza kütüphane içerisinde tanımlı fonksiyonlar çıkacaktır ki bu fonksiyonları arduino ide içerisinde kullanacağız.İsterseni gelin bu fonksiyonlara bir göz atalım :
Servo : arduino ide içerisinde servo ile değişken tanımlayarak bir servo motor objesi oluşturmaya yarar.
attach(): bu fonksiyon servo motorumuzun bağlı olduğu pine servo motor kontrolünü bağlamamızı sağlayacak.
write(): tanımladığımız servo motora istediğimiz açı değerini göndermemizi sağlayacak olan fonksiyonumuz.
writeMicroseconds(): Servo motorumuza göndereceğimiz pulse değerimizin sıklığını ayarlayacak olan fonksiyonumuz.
read(): En son gönderilen açı değerini bize döndürecek olan fonksiyonumuz.
readMicroseconds():Servo motora gönderilen pulse değerinin sıklığını bize geri döndüren fonksiyonumuz.
attached(): Yukarıda belirtmiş olduğumuz attach fonksiyonun işlevini yerine getirmesi sonucu true ya da servo motorun yazılımsal olarak bağlı olmadığı durumda ise false döndüren fonksiyonumuz.
detach(): Yazılımsal olarak servo motoru programımızdan çıkaran yani attach foknsiyonu ile servo motoru bağladığımız pini yazılımsal olarak boşa çıkaran fonksiyonumuz.
Gelelim kodlarımıza :
#include<Servo.h>// servo kütüphanemizi ekledik
Servo motor;// motor adında bir servo objesi oluşturduk
int poz=0;//motorumuzun pozisyonunu içerisinde tutacağımız değişkenimiz.
void setup()
{
motor.attach(9);// servo motorumuzu 9 numaralı pwm pini üzerinden kontrol edeceğimizi belirttik
}
void loop()
{
for(poz=0;poz<180;poz++)//motorumuzun açısını sıfırdan başlatarak for içerisinde 180e kadar arttıracağız
{
motor.write(poz);//servo motora açısını gönderiyoruz.
delay(15);//15ms gecikme gönderiyoruz
}
for(poz=180;poz>0;poz--)//motorumuzun açısından 180 dereceden 0 dereceye indiriyoruz
{
motor.write(poz);// motorumuza açısını gönderiyoruz
delay(15);//15 ms bir gecikme gönderiyoruz
}
}
Programı çalıştırdığınızda servo motorun önce 0 dan 180 dereceye, sonrasında ise 180 dereceden 0 dereceye doğru hareket ettiğini göreceksiniz.
Servo motorlarının üzerinde 1 adet power,1 adet ground ve 1 adette kontrol ya da sinyal ucu olmak üzere toplamda 3 adet pin bulunmaktadır.
Yandaki resimde tipik bir servo motor görülmektedir.Peki servo motor nasıl çalışır ?
Servo motorlar sinyal uçlarına gönderilen pulse ile çalışırlar ve bu pulse ile servo motorun 0 ile 180 derece arasında açıda dönmesini sağlar.Arduino tarafından gönderilecek olan pulse her 20 mili saniyede bir tekrarlanmalıdır aksi halde step motorumuz başlangıç değerine geri dönecektir.
Servo motoru 1ms ile 2ms pulse değerlerimizle 0-180 derece aralığında kontrol etmeye çalışacağız ve bunun içinde arduino servo motor kontrol kütüphanesini kullanacağız.
Servo kütüphanesini bir derleyici ile açtığınızda karşınıza kütüphane içerisinde tanımlı fonksiyonlar çıkacaktır ki bu fonksiyonları arduino ide içerisinde kullanacağız.İsterseni gelin bu fonksiyonlara bir göz atalım :
Servo : arduino ide içerisinde servo ile değişken tanımlayarak bir servo motor objesi oluşturmaya yarar.
attach(): bu fonksiyon servo motorumuzun bağlı olduğu pine servo motor kontrolünü bağlamamızı sağlayacak.
write(): tanımladığımız servo motora istediğimiz açı değerini göndermemizi sağlayacak olan fonksiyonumuz.
writeMicroseconds(): Servo motorumuza göndereceğimiz pulse değerimizin sıklığını ayarlayacak olan fonksiyonumuz.
read(): En son gönderilen açı değerini bize döndürecek olan fonksiyonumuz.
readMicroseconds():Servo motora gönderilen pulse değerinin sıklığını bize geri döndüren fonksiyonumuz.
attached(): Yukarıda belirtmiş olduğumuz attach fonksiyonun işlevini yerine getirmesi sonucu true ya da servo motorun yazılımsal olarak bağlı olmadığı durumda ise false döndüren fonksiyonumuz.
detach(): Yazılımsal olarak servo motoru programımızdan çıkaran yani attach foknsiyonu ile servo motoru bağladığımız pini yazılımsal olarak boşa çıkaran fonksiyonumuz.
Gelelim kodlarımıza :
#include<Servo.h>// servo kütüphanemizi ekledik
Servo motor;// motor adında bir servo objesi oluşturduk
int poz=0;//motorumuzun pozisyonunu içerisinde tutacağımız değişkenimiz.
void setup()
{
motor.attach(9);// servo motorumuzu 9 numaralı pwm pini üzerinden kontrol edeceğimizi belirttik
}
void loop()
{
for(poz=0;poz<180;poz++)//motorumuzun açısını sıfırdan başlatarak for içerisinde 180e kadar arttıracağız
{
motor.write(poz);//servo motora açısını gönderiyoruz.
delay(15);//15ms gecikme gönderiyoruz
}
for(poz=180;poz>0;poz--)//motorumuzun açısından 180 dereceden 0 dereceye indiriyoruz
{
motor.write(poz);// motorumuza açısını gönderiyoruz
delay(15);//15 ms bir gecikme gönderiyoruz
}
}
Programı çalıştırdığınızda servo motorun önce 0 dan 180 dereceye, sonrasında ise 180 dereceden 0 dereceye doğru hareket ettiğini göreceksiniz.
Merhabalar arkadaşlar,
Bu yazımızda arduino ile basit bir dc motor kontrolü nasıl sağlanır ondan bahsedeceğiz.
Projemizde 1 adet npn transistör ile rölemizi sürerek motorumuzun hareket etmesini sağlayacağız.
Şemada da görüldüğü üzere 13 nolu dijital pin üzerinden npn transistörümüzün base ucuna bağlandık.13 numaralı pinimizi dijital 0 yaptığımız anda npn transistörü iletime geçecek ve rölemizin bobin ucuna 5V luk bir gerilim uygulanarak kontağının çekmesi sağlanacak burada D1 diyotu ters akımı engellemek amacı ile kullanılmaktadır.Sonrasında rölemizin kontağı üzerinden de VCC gerilimimiz motora uygulanmış olacaktır.
Burada dikkat edilmesi gereken bu devre standart arduino röle kartı ile de gerçekleştirilebilirdi zaten yapmış olduğumuz devre standart röle kartının iç mimarisinden bir parça konumunda ve motor sürmek için uygun bir elektronik devre.
Gelelim arduino kodları tarafına :
int transistor_pini 13; // 13 numaralı pine transistor_pini adını verdik
void setup()
{
pinMode(transistor_pini,OUTPUT);// 13 numaralı transistor pinini output yani çıkış olarak ayarladık
}
void loop()
{
digitalWrite(transistor_pini,LOW); // pinimize dijital 0 gönderdik
delay(5000);//5 sn lik bir gecikme verdik
digitalWrite(transistor_pini,HIGH);//pinimize dijital 1 gönderdik
delay(5000);//5sn lik bir gecikme verdik
}
Programımızı çalıştırdığımızda motorumuzun 5 sn çalışır durumda ve 5 sn ise durur konumda kalacağını göreceğiz.
Bu yazımızda arduino ile basit bir dc motor kontrolü nasıl sağlanır ondan bahsedeceğiz.
Projemizde 1 adet npn transistör ile rölemizi sürerek motorumuzun hareket etmesini sağlayacağız.
Burada dikkat edilmesi gereken bu devre standart arduino röle kartı ile de gerçekleştirilebilirdi zaten yapmış olduğumuz devre standart röle kartının iç mimarisinden bir parça konumunda ve motor sürmek için uygun bir elektronik devre.
Gelelim arduino kodları tarafına :
int transistor_pini 13; // 13 numaralı pine transistor_pini adını verdik
void setup()
{
pinMode(transistor_pini,OUTPUT);// 13 numaralı transistor pinini output yani çıkış olarak ayarladık
}
void loop()
{
digitalWrite(transistor_pini,LOW); // pinimize dijital 0 gönderdik
delay(5000);//5 sn lik bir gecikme verdik
digitalWrite(transistor_pini,HIGH);//pinimize dijital 1 gönderdik
delay(5000);//5sn lik bir gecikme verdik
}
Programımızı çalıştırdığımızda motorumuzun 5 sn çalışır durumda ve 5 sn ise durur konumda kalacağını göreceğiz.