Merhaba arkadaşlar. Bugün projelerimizde sık kullandığımız potansiyometre ve analog joystickten analog veri okumaktan bahsedeceğim, Ayıca analog çıkış almayı buzzer kullanma örneği üzerinden anlatacağım. Analog verinin ne olduğunu bilmeyen arkadaşlar Arduino Dersi 3: Nedir Bu Digital Analog Meselesi? isimli derimizi okuyabilirler. Proje anlatımlarına geçtiğimiz zaman üzerinde analog joystick bulunan playstation kollarını nasıl arduino ile kablosuz kullanabileceğimizi anlatan bir proje yayınlayacağım.
Arduinonun A0-7 ledleri 10 bit analog veri okumaktadır. Analog veri okutmak için kullandığımız kod analogRead(pin numarası); komutudur. Analog giriş pinlerine 5v gerilim uygulandığında bize 1023, 0v gerilim uygulandığında 0, 0-5v arasındaki gerilim değerleri için 0-1023 arasında değer vermektedir. Analog girişlere potansiyometre, ısı sensörü, sıcsklık sensörü vb. birçok analog eleman bağlayarak üzerinden analog veri okuyabiliriz.
Arduinoda yazdığımız programların nasıl çalıştığını görmek için simülasyon programı mevcut değil fakat bunun yerine kısmen bu ihtiyacı karşılayacak Serial Monitör özelliği mevcuttur. Serial monitörde görüntülemek istediğimiz verileri kodlarımız içinde yazıp bilgisayardan anlık görüntüleyebiliyoruz. Örneğin arduinoya bağladığımız potansiyometreden gelen değerleri anlık görüntüleyebiliriz. Bunun için void setup(){} kısmında süslü parantezler arasında bir yere Serial.begin(9600); kodu yazarak arduinoya 9600 baud hızında bilgisayarla haberleşmeyi başlatmasını söylüyoruz. Görüntüleyeceği değeri de void loop(){} kısmında süslü parantezler arasında bir yere Serial.println(Görüntülenecek değer); kodunu yazıyoruz.
Örnek olarak A0 pinine bağladığımız potansiyometreden gelen değerleri görüntüleyelim. Potansiyometrenin dış bacaklarını gnd ve vcc hattına, orta bacağını A0 pinine bağlayalım.
Arduinoya yükleyeceğimiz kod
void setup() {
pinMode(A0, INPUT); // A0 pinini giriş olarak tanımladık.
Serial.begin(9600); // Bilgisayarla 9600 baud hızında seri haberleşmeyi başlattık.
}
void loop() {
Serial.println(analogRead(A0)) ; // Serial Monütöre A0 pininden gelen analog veriyi yazdırdık.
} şeklinde olacaktır.
Playstation kolları üzerindeki analog joystickler de iki potansiyometrenin ve bir tane de push butonun birleştirilmiş halidir. Tek satılabildiği gibi modül halinde de satılabilmektedir. Ben pinlerinin hazır olması nedeniyle modül olanları kullanmanızı tavsiye ediyorum.Resimde de gördüğünüz gibi üzerinde 5 bacak vardır. İlk iki bacak gnd ve vcc pinlerine bağlanır. Diğer iki bacaktan biri X diğeri Y ekseninden analog veri alır. Bunları da farklı analog girişlere bağlayarak kullanabiliriz. 5. pin ise üzerindeki butonun pinidir. Pull Down direncinizi harici olarak bağlamanız gerekmektedir. Proje anlatımlarına geçtiğimiz zaman üzerinde analog joystick bulunan playstation kollarını nasıl arduino ile kullanabileceğimizi anlatan bir proje yayınlayacağım.
Biraz da size yeri gelmişken değişken tanımlamadan bahsetmek istiyorum. Eğer potansiyometre gibi sürekli değişen değerlere sahip bir değerimiz varsa her seferinde analogRead(pin numarası); kodu kullanmak yerine bu değişen değerleri bir kez tanımladığımız bir değişkene yazdırarak kolaylık sağlayabiliriz. Yukarıdaki örnek üzerinden daha anlaşılabilir anlatacağım. Değişken için öncelikle değişkenin türünü belirlememiz gerekiyor. Yani değişkenin tam sayı mı ondalık sayı mı olduğu, en düşük ve en yüksek değerleri kaç olabilir gibi. Bunun için programlama dilinde hazır kümeler vardır. En çok kullanılanı integer kümesidir. Değişkenimizi integer olarak tanımlarsak değişkenimiz sadece tam sayı değerleri alacaktır. Tanımlamak için void setup(){} ve void loop(){} komutlarının dışına en üste int değişken ismi; kodu yazıyoruz. Bu kodla değişken ismi adında bir tamsayılar kümesinde değişen tanımlamış olduk. Daha sonra bu değişkenimizin değerlerini nereden alacağını belirtmemiz gerekiyor. Bunun için void loop(){} komutunda süslü parantez arasına değişken ismi = değişken değeri; kodunu yazıyoruz. Örnek olarak A0 pinine bağlı potansiyometreden gelen değerleri X isimli değişkenimize yazdıralım ve bunu serial monitörden görüntüleyelim. Arduinoya yükleyeceğimiz kod
int X; // X değişkeni tanımladık
void setup() {
Serial.begin(9600); // Bilgisayarla 9600 baud hızında seri haberleşmeyi başlattık.
}
void loop() {
X=analogRead(A0); // X değerini A0 pininden okunan analog veriye eşitledik.
Serial.println(X) ; // Serial Monütöre X değişkenini yazdırdık.
}
Diğer değişken kümeleri için aşağıdaki tablomuzu kullanabilirsiniz.
int = -32768 ile 32767 arasında işaretli tamsayılar
unsigned int = 0 ile 65535 arasında pozitif tamsayılar
long = -2147483648 ile 2147483647 arasında küçük negatif ve büyük pozitif tamsayılar
unsigned long = 0 ile 4294967295 arasında büyük pozitif tamsayılar
char = -128 ile +127 arasında işaretli sayılar veya tek bir karakter
string = boyutu karakter sayısına göre değişkenlik gösterir karakterlerden oluşan dizi tırnak işareti(” “) içerisine yazılan karakter dizisidir. Örneğin;“Merhaba Dünya!”
byte = 0 ile 255 arasında 0 ile 255 arasında tam sayılar
float = -3.4028235E+38 ile 3.4028235E+38 arasında ondalık sayılar
double = -3.4028235E+38 ile 3.4028235E+38 arasında ondalık sayılar (arduinoda float ile double aynı aralığa sahiptir)
boolean = true(1) ya da false(0) mantık ifadelerinde kullanılırlar
Son olarak eklemeyi unuttuğum bir konu var. Projelerimiz karmaşıklaştığı, kullandığımız pin sayısının arttığı durumlarda satırlarca kod yazarken hangi pinin neye bağlı olduğunu hatırlamak zorlaşıyor. Bu durumlar için const int sabbiti kullanıyoruz. Const int ile belirlediğimiz değer hangi değere sabit olarak eşitse yanına yazıyoruz. Bunu pin numaralarını isimlendirme amacıyla kullanmaktayız. Örnek vermek gerekirde 2 numaralı pine bir led bağlı olsun. const int LED=2; şeklinde bir sabit oluşturduğumuzda LED sabitine 2 değeri atamış olduk. Kod içerisinde digitalWrite(LED, HIGH); şeklinde bu sabiti kullanıp kolaylık sağlayabiliriz.
Yazılarımı beğendiyseniz ve eleştirmek isterseniz yorumlarınızı bekliyorum. İlerleyen derslerde görüşmek üzere...
Arduinonun A0-7 ledleri 10 bit analog veri okumaktadır. Analog veri okutmak için kullandığımız kod analogRead(pin numarası); komutudur. Analog giriş pinlerine 5v gerilim uygulandığında bize 1023, 0v gerilim uygulandığında 0, 0-5v arasındaki gerilim değerleri için 0-1023 arasında değer vermektedir. Analog girişlere potansiyometre, ısı sensörü, sıcsklık sensörü vb. birçok analog eleman bağlayarak üzerinden analog veri okuyabiliriz.
Arduinoda yazdığımız programların nasıl çalıştığını görmek için simülasyon programı mevcut değil fakat bunun yerine kısmen bu ihtiyacı karşılayacak Serial Monitör özelliği mevcuttur. Serial monitörde görüntülemek istediğimiz verileri kodlarımız içinde yazıp bilgisayardan anlık görüntüleyebiliyoruz. Örneğin arduinoya bağladığımız potansiyometreden gelen değerleri anlık görüntüleyebiliriz. Bunun için void setup(){} kısmında süslü parantezler arasında bir yere Serial.begin(9600); kodu yazarak arduinoya 9600 baud hızında bilgisayarla haberleşmeyi başlatmasını söylüyoruz. Görüntüleyeceği değeri de void loop(){} kısmında süslü parantezler arasında bir yere Serial.println(Görüntülenecek değer); kodunu yazıyoruz.
Örnek olarak A0 pinine bağladığımız potansiyometreden gelen değerleri görüntüleyelim. Potansiyometrenin dış bacaklarını gnd ve vcc hattına, orta bacağını A0 pinine bağlayalım.
Arduinoya yükleyeceğimiz kod
void setup() {
pinMode(A0, INPUT); // A0 pinini giriş olarak tanımladık.
Serial.begin(9600); // Bilgisayarla 9600 baud hızında seri haberleşmeyi başlattık.
}
void loop() {
Serial.println(analogRead(A0)) ; // Serial Monütöre A0 pininden gelen analog veriyi yazdırdık.
} şeklinde olacaktır.
Playstation kolları üzerindeki analog joystickler de iki potansiyometrenin ve bir tane de push butonun birleştirilmiş halidir. Tek satılabildiği gibi modül halinde de satılabilmektedir. Ben pinlerinin hazır olması nedeniyle modül olanları kullanmanızı tavsiye ediyorum.Resimde de gördüğünüz gibi üzerinde 5 bacak vardır. İlk iki bacak gnd ve vcc pinlerine bağlanır. Diğer iki bacaktan biri X diğeri Y ekseninden analog veri alır. Bunları da farklı analog girişlere bağlayarak kullanabiliriz. 5. pin ise üzerindeki butonun pinidir. Pull Down direncinizi harici olarak bağlamanız gerekmektedir. Proje anlatımlarına geçtiğimiz zaman üzerinde analog joystick bulunan playstation kollarını nasıl arduino ile kullanabileceğimizi anlatan bir proje yayınlayacağım.
Biraz da size yeri gelmişken değişken tanımlamadan bahsetmek istiyorum. Eğer potansiyometre gibi sürekli değişen değerlere sahip bir değerimiz varsa her seferinde analogRead(pin numarası); kodu kullanmak yerine bu değişen değerleri bir kez tanımladığımız bir değişkene yazdırarak kolaylık sağlayabiliriz. Yukarıdaki örnek üzerinden daha anlaşılabilir anlatacağım. Değişken için öncelikle değişkenin türünü belirlememiz gerekiyor. Yani değişkenin tam sayı mı ondalık sayı mı olduğu, en düşük ve en yüksek değerleri kaç olabilir gibi. Bunun için programlama dilinde hazır kümeler vardır. En çok kullanılanı integer kümesidir. Değişkenimizi integer olarak tanımlarsak değişkenimiz sadece tam sayı değerleri alacaktır. Tanımlamak için void setup(){} ve void loop(){} komutlarının dışına en üste int değişken ismi; kodu yazıyoruz. Bu kodla değişken ismi adında bir tamsayılar kümesinde değişen tanımlamış olduk. Daha sonra bu değişkenimizin değerlerini nereden alacağını belirtmemiz gerekiyor. Bunun için void loop(){} komutunda süslü parantez arasına değişken ismi = değişken değeri; kodunu yazıyoruz. Örnek olarak A0 pinine bağlı potansiyometreden gelen değerleri X isimli değişkenimize yazdıralım ve bunu serial monitörden görüntüleyelim. Arduinoya yükleyeceğimiz kod
int X; // X değişkeni tanımladık
void setup() {
Serial.begin(9600); // Bilgisayarla 9600 baud hızında seri haberleşmeyi başlattık.
}
void loop() {
X=analogRead(A0); // X değerini A0 pininden okunan analog veriye eşitledik.
Serial.println(X) ; // Serial Monütöre X değişkenini yazdırdık.
}
Diğer değişken kümeleri için aşağıdaki tablomuzu kullanabilirsiniz.
int = -32768 ile 32767 arasında işaretli tamsayılar
unsigned int = 0 ile 65535 arasında pozitif tamsayılar
long = -2147483648 ile 2147483647 arasında küçük negatif ve büyük pozitif tamsayılar
unsigned long = 0 ile 4294967295 arasında büyük pozitif tamsayılar
char = -128 ile +127 arasında işaretli sayılar veya tek bir karakter
string = boyutu karakter sayısına göre değişkenlik gösterir karakterlerden oluşan dizi tırnak işareti(” “) içerisine yazılan karakter dizisidir. Örneğin;“Merhaba Dünya!”
byte = 0 ile 255 arasında 0 ile 255 arasında tam sayılar
float = -3.4028235E+38 ile 3.4028235E+38 arasında ondalık sayılar
double = -3.4028235E+38 ile 3.4028235E+38 arasında ondalık sayılar (arduinoda float ile double aynı aralığa sahiptir)
boolean = true(1) ya da false(0) mantık ifadelerinde kullanılırlar
Son olarak eklemeyi unuttuğum bir konu var. Projelerimiz karmaşıklaştığı, kullandığımız pin sayısının arttığı durumlarda satırlarca kod yazarken hangi pinin neye bağlı olduğunu hatırlamak zorlaşıyor. Bu durumlar için const int sabbiti kullanıyoruz. Const int ile belirlediğimiz değer hangi değere sabit olarak eşitse yanına yazıyoruz. Bunu pin numaralarını isimlendirme amacıyla kullanmaktayız. Örnek vermek gerekirde 2 numaralı pine bir led bağlı olsun. const int LED=2; şeklinde bir sabit oluşturduğumuzda LED sabitine 2 değeri atamış olduk. Kod içerisinde digitalWrite(LED, HIGH); şeklinde bu sabiti kullanıp kolaylık sağlayabiliriz.
Yazılarımı beğendiyseniz ve eleştirmek isterseniz yorumlarınızı bekliyorum. İlerleyen derslerde görüşmek üzere...
COMMENTS