Arduino için indirilen kütüphaneler Arduino IDE' nin kurulduğu dosya içerisinde "library" klasörüne eklenerek kullanılır. İndirilen kütüphane bu dosyaya yüklendikten sonra Arduino IDE yeniden başlatılmalıdır. Fakat bazen kütüphanenin ilgili dosyaya yüklenmesi durumunda dahi hata alınıyorsa sebebi "Sketchbook location" adresinin Arduino IDE programının kurulduğu adresi göstermemesi olabilir. Bu sık karşılaşılan hatalardandır. Bunu ortadan kaldırmak için Arduino IDE programından "File/Preferences/Sketchbook location Browse" linkleri ile kurulum adresi doğrulanır (Şekil 1). IDE programı yeniden çalıştırıldığında hata vermeyecektir.
Şekil 1
Bu uygulamamızda analog sensörden, sensör çıktısının nasıl okunduğunu, bir servo motorun nasıl kontrol edildiğini ve lcd kullanımını göreceğiz.
Arduino üzerinde, çeşitlerine bağlı olarak farklı sayılarda analog ve dijital giriş/çıkış pinleri mevcuttur. Bu giriş/çıkış pinleri sayesinde kart farklı sistemler ile haberleşebilir, farklı sistemlerden veri okuyabilir ve onları kontrol edebilir. Örneğin Arduino UNO' da 6 analog pin (A0-.....-A6) , MEGA' da 16 (A0-......A15) analog pin mevcuttur. Bu pinlerden okunan değerler 6 kanallı A/D (Analog/Dijital) dönüştürücüye gönderilerek okunan 0-1023 arası analog değer 0-5V arasında bir değere dönüştürülür (maplenir). Buradaki 5V default değerdir. İstenildiği taktirde analogReferance() komutu ile bu değer değiştirilebilir. Kullanımı http://arduino.cc/en/Reference/AnalogReference sayfasından incelenebilir.
Arduino ile analog bir sensör verisi analogRead() komutu ile okunur. Parantez içerisine sensörün çıkış pininin bağlandığı arduino analog pini yazılır. Analog bir aygıtın (örneğin analog servo) arduino ile kontrol edilmesi için analogWrite(pin_Sayisi,analog_Deger) komutu kullanılır. Parantez içerisindeki pin_Sayisi analog aygıtın bağlandığı arduino analog pin numarasını, analog_Deger girilecek analog değeri ifade etmektedir.
Arduino ile servo motor kontrolü için genellikle Servo.h kütüphanesi kullanılır. Bu kütüphane indirilen IDE içerisinde mevcuttur. Kütüphanenin kullanılabilmesi için arduino koduna eklenmesi gerekmektedir. Bu #include<Servo.h> komutu ile yapılmaktadır. Bu kütüphanenin kod içerisinde nasıl kullanıldığı ve servo motor kontrolünü nasıl yaptığı aşağıdaki kod üzerinde açıklanmıştır.
2x16 LCD' nin Arduino ile kulanılması için LiquidCrystal.h kütüphanesinin yüklenmesi gerekmektedir. İndirilen IDE içerisinde yüklü olanların direk olarak kod içerisinde bu kütüphaneyi çağırmaları yeterli olacaktır. Bu uygulamada kullanılan LCD üzerinde bir de sıcaklık sensörü bulunmaktadır. Bu sensörün de nasıl kullanıldığı aşağıdaki kodda açıkça anlatılmıştır. İlgili çalışma videosu http://www.youtube.com/watch?v=OhQKJ9Zm6UU&feature=youtu.be adresinden youtube kanalımdan izlenebilir.
#include<LiquidCrystal.h> //lcd kullanımı için kütüphane çağrılmıştır.
#include<Servo.h> //servo kullanimi icin kütüphane çağrılmıştır
#define arkaisik A3 //lcd arka isik A3 pininden ayarlanir
//#define Servo1 2 //servo 2 numarali pine takilir //servo pini tanimlamanin 1. yontemi
#define sicakliksensor A0 //sicaklık sensor cikisi A0 portundan okunur
float sicaklik;
LiquidCrystal lcd(9, 8, 7, 6, 5, 4); //lcd icin kullanilan portlar tanimlandi
Servo Servo1;//servo kontrolü icin Servo1 adlı bir nesne tanimlanir
int potpin= A1;//POTANSİYOMETRE A1 portuna baglanir
int potdeg; //pot cikisi okunur
int potdeger=0;
void setup(){
Servo1.attach(2);//servo 2 numarali pine takilir //servo pini tanimlamanin 2. yontemi
Serial.begin(9600);//Serial Monutorden verileri gorebilmek icin yapılmıstır
//9600 baud rate denilen saniyede gönderilebilecek veri sayisidir.
pinMode(arkaisik,OUTPUT); //LCD ARKA AYDİNLATMASİ CİKİS OLARAK TANİMLANİR
digitalWrite(arkaisik,HIGH);// ve arka adinlatma acilir
lcd.begin(16,2);//16 satır 2 sutun lcd kullanildigini tanimlar
}
void loop()
{
potdeg = analogRead(potpin);//potansiyometre degeri okunur
sicaklik=analogRead(sicakliksensor); //sicaklik sensör çıkışı okunur
sicaklik=(5.0*sicaklik*100.0)/1024.0;//okunan analog sensor degerini sicakliga cevirir
Serial.print("Potansiyometre degeri = ");//Serial Monitore deger yazilir
Serial.println(potdeg);
Serial.print("Sicaklik = ");
Serial.println(sicaklik);
potdeger=potdeg;
potdeg= map(potdeg,0,1023,0,179);//okunan potansiyometre degerine gore koordineli sekilde servonun hareketini sağlayan fonksiyon
//map fonksiyonu okunan sensor degerini (0,1023) servonun donus acisi (0,179) koordine eder
Servo1.write(potdeg);//yani potdeg'i servoyu sürmek icin servoya uyguladik.
Serial.print("Servo donus acisi = ");
Serial.println(potdeg);
lcd.clear();//lcd ekranını temizler
lcd.print("Pot,Servo degeri ");//sevo acisi lcd ekrana yazilir
lcd.setCursor(0,1);
lcd.print(potdeger);//servo aci degeri lcd ekrana yazilir
lcd.setCursor(6,1);
lcd.print(potdeg);
lcd.setCursor(10,1);//lcd ekraninda imleci 2 satirin 10. sutununa alir
lcd.print(sicaklik);//sicaklik degeri lcd ye yazdirilir
delay(100);//10 ms gecikme verilir.
}
Hiç yorum yok:
Yorum Gönder