Konu Anlatımı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Konu Anlatımı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

31 Ocak 2015 Cumartesi

Arduino Projem - Fonksiyon Tanımlama

Arduino Projem - Fonksiyon Tanımlama

Bu konunun sözel kısmını yazmak için çok düşündüm ve aslında pek bir şey de buldum denemez ama yine 2 3 kelime birşey diyelim. Arduinoda kodlar yazarız hatta void loop() içersine birşeyler yazar sürekli bunlar o kod içersinde dönerler. Fonksiyon işlemide aslında bu işleme benzer bizim tanımladığımız yerde kod arka planında döngü olarak çalışır. Bu konuyu örneklerle anlatmak faydalı olacağını düşündüğümden lafı fazla uzatmadan örneklere geçiyoruz.

Örnek 1: Ekrana Yazı Yazdırma Fonksiyonu

void EkranaYaz()
{
Serial.println("Arduino Projem");
}

Yukarıdaki kodları yazdıktan sonra EkranaYaz(); komutunu yazdıktan sonra Arduino Projem yazısı serial monitorde yazılır.

Örnek 2: Belli Bir Sayının Karesini Alma Fonksiyonu

int KareHesapla7()
{
return 7*7;
}
Yukarıdaki kodları yazdıktan sonra sonuc= KareHesapla7(); yazılırsa sonuc değişkenine 49 sayısı atılır.

Örnek 3: Faktoriyel Alma Fonksiyonu

void FaktoriyelHesapla(int sayi)
{
int sonuc=1;
for(int i = sayi; i>0; i--)
{
sonuc = sonuc*i;
}
Serial.println(sonuc);
}
Yukarıda kodlar yazıldıktan sonra FaktoriyelHesapla(3); yazılırsa serial monitörde 6 sonucu çıkar çünkü 3*2*1=6 dır .

30 Ocak 2015 Cuma

Arduino Projem - I2C Haberleşmesi Nedir ?

Bugünkü yazımızda ı2c haberleşmesi yapısının temelini ve mantığını anlatmaya çalışacağız.

I2C Nedir ?

Inter Integrated Circuit kelimelerinin baş harflerinden gelmeketedir. I2C isim hakkı ise Philips ( NXP ) firmasına aittir. Bu yüzden two wire adıylada kullanılmaktadır.

Seri Haberleşme mi Yoksa Paralel Haberleşme mi ?

I2C mikrodenetleyiceler ve çeşitli cevresel birimler arasında iletişimi için kullanılan seri bir haberleşme yöntemidir. 2 hat üzerinden birden fazla birim birbirleriyle iletişim kurabilir.










Not: SCL ve SDA bacaklarına pull-up direnci bağlanmalıdır.

I2C Mantığı

Bu protokol temel olarak 2 hat vardır. Bunlardan biri SCL diğeri SDA hattıdır. SCl ( SerialClock ) veri senkronu için gerekli saat darbe hattıdır. SDA ise data hattıdır. Ayrıca kendine özgü yazma koruması ( WP ) ve çıkış işin (OE) gibi uçları yani pinleri vardır. SCL lojik 1 iken SDA da lojik 1 dan 0 e kadar olan geçiş start ( başlama ) işlemi yaparken yine SCL 1 lojik durumda SDA lojik 0 dan 1 e  olan geçiş stop ( durdurma ) anlamına gelir.

I2C yi Aktif Hale Getirmek

Arduinomuzda ı2c iletişim protokolünü aktif hale getirmek için "two wire" , "I2c" kütüphanesini kod bloğumuza eklemeleyiz.

#include "wire.h" // ile kütüphane ekler.

setup() fonksiyonu içine yazacağımız;

Wire.begin();  // ile ı2c haberleşmesini baslatmalıyız.

28 Ocak 2015 Çarşamba

Arduino Projem - Pull-Up ve Pull-Down Direnç Kavramı

Buton uygulamaları yapacağımız zaman karşılacağımız en büyük sorun butonun basılı kalma durumudur. Bunu da pull-up ve pull-down direnç yöntemleri ile çözmekteyiz.

Pull-Down Direnç

















Butona basıldığında 5V arduinonun input bacağına ulaşır. Fakat elimizi çektiğimizde 5V luk gerilim kalmaktadır. Bunu çözmek için şekilde gibi 10 K ohm luk direnç şekildeki gibi bağlanır.

Pull-Up Direnci

















Buradaki durum bir üstteki sistemin tam tersi olarak çalışmaktadır.

21 Ocak 2015 Çarşamba

Arduino Projem - Giriş Çıkış Devre Şemaları

Digital Output - Dijital Çıkış











int ledPin = 13;

void setup()
{
pinMode(ledPin,OUTPUT);
}

void loop()
{
digitalWrite(ledPin,HIGH);
delay(1000);
digitalWrite(ledPin,LOW);
delay(1000);
}

 Digital Input - Dijital Giriş











int ledPin = 13;
int inPin = 2;

void setup()
{
pinMode(ledPin,OUTPUT);
pinMode(inPin,INPUT);
}

void loop()
{
if ( digitalWrite(inPin) == HIGH )
  {
digitalWrite(ledPin,HIGH);
delay(1000);
digitalWrite(ledPin,LOW);
delay(1000);
  }
}

PWM Output - PWM Çıkışı











int ledPin = 9;

void setup()
{}

void loop()
{
for( int i = 0; i <= 255; i++ )
    {
analogWrite(ledPin,i);
delay(100);
    }
for( int i =255; i >=0; i--)
   {
analogWrite(ledPin,i)
delay(100);
   }
}

Arduino Projem - Giriş Çıkış İşlemleri

Arduino Projem - Giriş Çıkış İşlemleri

digitalRead(pin)

Daha önceki konularımızda da dediğimiz gibi dijital veri 0 ve 1 lerden oluşur. Burada da dijitalRead() işlemi ile incelenen pinden 0 veya 1 bilgisi okunur. Kodun kullanımı aşağıdaki gibidir;

deger = digitalRead( pin numarası );
deger ile tanımladığımız değişekene okunan pindeki 0 veya 1 bilgisi aktarılır.

digitalWrite(pin)

Bir önceki verdiğimiz kodda pindeki değeri değişkenimize yolluyorduk . Şimdi ise elimizdeki veriyi pinimize yolluyoruz. Daha iyi anlamanız için aşağıdaki örneği verelim.

int led = 13;
int pin = 7;
int value = 0;

void setup()
{
pinMode(led,OUTPUT);
pinMode(pin,INPUT);
}

void loop()
{
          value = digitalRead(pin);
          digitalWrite(led,value);
       
          }

Bu örnekte hem digitalRead() hemde digitalWrite() işlemi kullanılmıştır.Programda önce pinlere isim veriilmiş ve daha sonra onların giriş çıkış ayarlaması yapılmıştır. Void loop() döngüsünün içersinede okuma ve yazma işlemleri uygulanmıştır. 7 numarılı pinde dijital 1 değeri varsa bu okunur ve value değişkenine atılır. Bu value değeri ise digitalWrite(led,value) koduyla 13 nolu pinde tanımladığımız led pinine dijital 1 gönderilir ve ledin yanması sağlanır.

analogRead(pin)

Daha hassa uygulamalarda analog değerler işlenir. Bu işleme analog verilirin okunması ile mümkündür.

deger = analogRead( pin numarası );

analogWrite(pin)

0-255 arası analog bir değer pinlerimize gönderebiliriz. 0-1023 arasında okuduğumuz analog değerleri 0-255 e çevirmek için değer 4 böleriz.

int led = 10;
int pin = 0;
int value = 0;

void setup()
{
pinMode(pin,INPUT);
pinMode(led,OUTPUT);
}

void loop()
{
value = analogRead(pin);
value /= 4;
analogWrite(led,value);
}


Arduino Projem - Pin Modunu Ayarlama

Arduino Projem - Pin Modunu Ayarlama

Bu seferki konumuz biraz kısa olacak ama arduino programlamada önemli olan bir noktadır. Arduino modeline göre sayıları değişen pinlerimizi giriş mi yoksa çıkış işlemimi yapacacağını programın başında belirlelemeyiz. Program çalıştığında giriş mi çıkış olduğu konusundaki belirsizlik arduino kodlarımızın doğru çalışmalarını engelleyebilir. Bu pin modonu ayarlamayı aşağıdaki gibi basit bir kaç kod ile yapmaktayız.



int led = 13;
int pin = 7;
int value = 0;

void setup()
{
pinMode(led,OUTPUT);
pinMode(pin,INPUT);
}

void loop()
{

*********************  // Bu kodları siz kendi istediğiniz gibi ayarlayınız.
          }

pinMode , bu komut ile giriş veya çıkış hangisini kullanmak istiyorsak içersine yazarak seçebiliyoruz. Yanibu komudun için OUTPUT yazmak çıkış INPUT yazmak giriş manasına gelmektedir.

Not: Yukarıda ******* yerler sizin istediğiniz kodları yazabilirsiniz manasına gelmektedir.