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.

24 Ocak 2015 Cumartesi

Arduino Projem - Birazcıkta Müzik Dinleyelim

Sürekli arduino dersler sınavlar filan olmaz birazcıkta müzik dinleyelim. Bu şarkı tüm sevenlere aralarında mesafeler olup yastığa kafayı koyunca dertli kederli ve en önemlisi sevdiceğini düşünen takipçilerime gelsin.


Zeki Müren - Gözlerin Doğuyor Gecelerime


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.

20 Ocak 2015 Salı

Arduino Projem - Döngü Sorgulama Karşılaştırma İşlemleri

Arduino Projem - Döngü Sorgulama Karşılaştırma İşlemleri

Arduino da basit işlemler yapmak için  bile döngü kullanmak zorundayız. Bu sadece arduino ya özgü değildir. Tüm programlama türlerinde durum böyledir. Mesala arduino ile bir led i belli bir dış etkiyle yakacağız. Bu dış etkinin varlığı bir döngü veya sorgulama ile anlaşılır.Yada bir eylemin yapılmasının belirli koşullara bağlanması işlemi bu işlemlere örnektir.
Şimdi ise bu işlemlerin bazılarını yani arduino programlamada sıklıkla kullanılan ifadeleri başlıklar altından incelemeye başlayalım.

if

Bu komut ile if bloğunun içine yazılan bir koşulun test edilmesi sağlanır. Eğer koşul sağlanıyor ise if bloğunun altındaki komuta geçer ve o komut çalıştırılır. Aksi durumlarda yani koşul sağlanmamış ise program if bloğuna girmemiş gibi davranmaya devam eder varsa alt satıra geçer. Kullanımı ise aşağıdaki gibidir;

if ( someVarible =< 150 )
{
digitalWrite(ledpin,HIGH);
}
Yukarıdaki örnekte olduğu gibi değerimizin 150 ve 150 den küçük ise ledpin i aktif hale getirmesi isteniyor arduino dan.

if ...else

Bir önceki anlattığımız komuttan farkı burada şart sorgulandıktan sonra yanlış ise yani istenen koşullar sağlanmıyorsa else komutunun içine yazacağımız komutlar arduino tarafından çalıştırılır.
Basit bir örnek verecek olursak;

if ( someVarible < 100)
{
digitalWrite(ledpin,LOW);
}
else
{
digitalWrite(ledpin,HIGH);
}

for

Biraz daha değişik çalışan bir döngüdür. Belirli bir değerden belirli bir değere istedimiz artış miktarı ile gider. Her bir adımında blok içine yerleştirdiğimiz kodlar 1 kere çalışırlar. Bu şekilde birazcık karışık oldu galiba örnekle daha iyi anlatabiliriz.

for(int i=0;i<20;i++)
{
digitalWrite(12,HIGH);
delay(500);
digitalWrite(12,LOW);
delay(500);
}

Yukarıdaki kod bloğunu açıklamaya başlayalım. Öncelikle for komutu 3 ögeden oluşur.
  1. Başlangıç değeri . Bu kod bloğunda int i=0 bizim başlangıç değerimiz.
  2. Bitiş değeri . Bu kod bloğunda i<20 bizim 20 ye kadar sayacağımızı gösterir.
  3. Artış miktarı . i++ burada i değerinin 1 er 1 er artacığını söylemekteyiz.

while  

Bu döngüye girdikten sonra çıkmak için döngüyü kırmamız gerekir . Ve içersinde sürekli bir değişkenin değerini değiştirmeliyiz.

while ( someVariable < 150 )
{
digitalWrite(ledpin,HIGH);
delay(100);
digitalWrite(ledpin,LOW);
delay(100);
someVariable++;
}

someVarible değeri 150 olmadıkça döngüden çıkılamaz.

16 Ocak 2015 Cuma

Arduino Projem - Karşılaştırma ve Mantıksal Operatörler

Arduino Projem - Karşılaştırma ve Mantıksal Operatörler

Karşılaştırma operatörleri genellikle döngülerin içinde kullanılır. Mesala şu değer bu değer eşitse şunu yap gibi. Bu operatörler aşağıdaki gibidir.

x == y; // x eşittir y
x != y;  // x eşit değildir y
x < y;   // x değeri y değerinden küçük
x > y;   // x değeri y değerinden büyük
x <= y; // x değeri y değerinden eşit veya küçük
x >= y; // x değeri y değerinden eşit veya büyük

Mantık Operatörleri:

Mantık Ve Operatörü :

if ( x > 0 &&  x < 5 )  
Yukarıdaki kodun gerçekleşebilmesi için 2 şart vardır . Bunların ikisininde sağlanması durumunda istenen komuta geçilir. Yani x sayısı 0 ile 5 arasında ise kod bir alt satıra geçebilir.

Mantık Veya Operatörü :

if ( x > 0 || y > 0 )
Mantık veya komutunda şartlardan biri sağlanması kodun devam etmesi sağlanır. Yani x değeri sıfırdan büyükse veya y değeri sıfırdan büyükse şart sağlanır.

Mantık Değil Operatörü :

if ( !x < 0 )
Burada diğerlerinden farklı bir durum vardır. İfade doğru ise sonuç yanlıştır. Yani x değeri sıfırdan büyükse doğrudur ve istenilen şart sağlanır.
Arduino Projem - Matematiksel İşlemler

Arduino Projem - Matematiksel İşlemler

Matematiksel oparatörler olarak toplama, çıkarma, çarpma ve bölme vardır. Aslında bunlar bildiğimiz 4 işlemdirler.

y = y + 3;
x = x - 7;
i = j * 6;
r = r / 5;
Matematiksel islemleri arduino için biraz daha açaçak konuyu derinleştirecek olursak.

x ++       //  x = x + 1  ile aynıdır.
x --        //   x = x - 1  ile aynıdır.
x += y   //   x = x + y  ile aynıdır.
x -= y    //   x = x - y  ile aynıdır.
x *= y  //    x = x * y  ile aynıdır.
x /= y  //     x = x / y   ile aynıdır.

Şimdi ise  üst alma, karekök, mutlak değer ve trigonometrik matematiksel işlemlere bakalım.

Pow(2,3);  // 2 üzeri 3 işlemidir sonucunu 8 olarak alırız..
Sqrt(9);     //  9 un karekökünü alır ve bize 3 değerini verir.
Abs(-2);    //  Mutlak değer alma işlemidir. Sonucu bize 2 olarak verir.
sin(x);
cos(x);
tan(x);     // bu son üçüde trigonemetrik işlem yapmamıza yarayan oparetörler.

Ve son bir kaç tane daha operatör ile konumuzu sonlandırıyoruz.

a=min(x,y);                       // a ya x ve y den en küçük hangisi ise onu yazar.
a=max(x,y);                      // a ya x ve y den en büyük hangisi ise onu yazar.
a=constrain(x,min,max);  // iki sayı arasına sınırlama
a=floor(x);                        // ondalık sayıyı en küçük tam sayıya yuvarlama
a=ceil(x);                          // ondalık sayıyı en büyük tam sayıya yuvarlama



Arduino Projem - Değişken Kapsamı ( Variable Scope )

Arduino Projem - Değişken Kapsamı ( Variable Scope )

Bugünkü konumaza değişken kapsamı ile başlıyoruz.

Değişken Kapsamı

Variable scope yani değişken kapsamı bir global değişkenin hangi sınırlar içinde kullanacaksanız o sınırlar içinden bir değişken türü tanımlamadır. Bu cümle biraz karışık oldu galiba o yüzden birazdan açmak gerekirse ;

Elimizde 3,14 gibi bir değer var biz bunu int x =3,14; dersek hata yapmış oluruz. Bunu float x=3,14; biçiminde yapmalıyız.

Ayrıca maksimum 8 bit değerinde bir değer kullanacaksak 16 bit lik değer tanımlamak programımızı zorlar .Yani kullanacağımız değere göre değişken kapsamı tanımlamak programın rahat ve düzgün çalışması için önemli bir püf noktasıdır.

byte

Byte ondalık virgülü olmadan 8 bit değerinde sayısal veri saklar. 0-255 kapsam aralığıdır.

byte someVariable = 180;
int

İnt de aynı byte gibi ondalık virgülü olmayan tam sayılar için kullanılır. Byte den farkı kapsama miktarıdır. Artık 8 bit değil 16 bitlik sayısal veri saklanır. 32.767 ile  -32.768 arasında sayı bunun içine atanabilir.

int someVariable = 1800;

long

İnt ve byte gibi tamsayılar içindir. 32 bitlik sayısal veri saklanır. 2.147.483.647 ile -2.147.483.647 aralığında kullanılır.

long someVariable = 90000;

float

32 bit ondalıklı sayılar için kullanılır. Bununda kapsamı long gibi fazladır.

float someVariable = 3.14;

Arduino Projem - Arduino Kodlarına Basit Bir Giriş Yapalım

Arduino Projem - Arduino Kodlarına Basit Bir Giriş Yapalım

Bugün sizlere basit ama arduino programlamada önemli olan kodları tanıtmaya çalışacağım. Lafı uzatmadan hemen konu anlamatıma başlayalım.

/*… */ Block Comments

İnternette hazır projelere göz attığınızda kod bölümünün altında veya üzerinde

/* Bu program http://arduinoprojem.blogspot.com.tr/ tarafından yapılmıştır*/

şekilde görebilirsiniz.Bu programın kime ait olduğunu kim tarafından yapıldığını gösterir. Hiç bir şekilde kodlara etkisi yoktur. /* ......*/ noktalı yerlere istediğiniz herşeyi yazabilirsiniz.

; Semicolon

Kodlar yazdıktan sonra ; ile kod satırmızı sonladırmamız gerekir.

int x = 13 ;

setup()

Program çalışmaya başladığında setup() içinde tanımladığımız yapılar programa çağrılır.Örnek verecek olursak. Pin yapısı yada serial monitör burada yapılandırılır.

void setup()
{

pinMode(pin, OUTPUT);
          }

loop()

Loop() döngü fonksiyonudur içine yazılan işlevler sırayla istenen zamanla içersinde sürekli yapılır.

void loop()
{
digitalWrite(pin, HIGH); // pini aç

delay(1000); // 1 sn bekle

digitalWrite(pin, LOW); // pini kapa

delay(1000); // 1 sn bekle
}

// line comments

; den sonra kod ile ilgili bir açıklama yapmak istersek // yaparak istediğimiz şeyleri kod satırına yazabiliriz.

int x = 13; // x e 13 e atıyoruz gibi bir yazı yazabiliriz.

Variables-Değikenler

Bir değişken adlandırma ve program tarafından daha sonra kullanılmak üzere bir sayısal değer saklama bir yoludur.

int inputVariable = 0;

inputVariable = analogRead(2); 

if (inputVariable < 100)
{
inputVariable = 100;
}
delay(inputVariable);

Variable Declaration- Değişken Tanımlama

int inputVariable = 0;

12 Ocak 2015 Pazartesi

Arduino Projem - Arduino ya Kod Nasıl Atılır ?

İlk önce arduino parçalarını tanıyalım . Arduino yu satın aldıktan sonra kutudan 2 adet aparat çıkar. Bunlardan biri Arduino boardu diğeride usb kablosu. Onları ve kod atma işlemini resimler üzerinden sizlere yavaş yavaş anlatmaya başlayalım.

Arduino Uno

Usb Kablomuz

Kodları bu ekrana şekilde gibi yazıyoruz.


























































Son resimde görüldüğü arduino ya özel bir arayüz programı var . Bu programı bilgisayarımıza indirmemiz gerekiyor. Arduino Ide programına buradan ulaşabilirsiniz. İlk aşama olan programı indirip kurduktan sonra arduino ile bilgisayarı usb kablosu ile iletişeme geçiriyoruz. Programı Arduino Ide ye yazdıktan sonra düzenleyip kodu yüklüyoruz. Bunları nerden yapacağız diye soracak olursanız ise de File yazısının altında ki buton ile düzenleme yapılıyor. Edit yazısının altında kalan butonla ise upload (yükleme ) yapıyoruz.Upload işlemi yaptıktan sonra işlememiz tamamlanmış oluyor.

Arduino Projem - Basit Bir Sayaç Yapalım

Bugün ki yazımızda basit bir sayaç yapacağız. Sayaç yapmanın 2 temel hususu vardır. Biri değer tanımlamaktır diğeri ise 1 kere değişmesi için geçmesi gereken gecikme yaratmak. Bugün kü uygulamamız basit bir uygulamadır. O yüzden direk kodları paylaşıyorum. Bugün ki projede bir devre seması yoktur. Direk arduino üzerinden yapılacaktır.

Kodlarımızı programa kopyalıyoruz.

Serial Monitor de sayacımızın çalısır hali.


KODLAR:

 int x=0;
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  x=x++;
  Serial.println(x);
  delay(1000);
}

11 Ocak 2015 Pazar

Arduino Projem - Serial Monitor Kullanımı

Karlı bir pazar sabahından bir kocaman merhaba sizlere.Daha önce ufak bir kaç ısınma amaçlı projeler uygulamar yaptık. Belki bizi takip edenlerin kafasında ufakta olsa kıpırdanmalar olmaya başlamıştır. Bu aslında bizim olmasını istediğimiz birşey sonuçta kopyala yapıştır bir yere kadar gelinebilir. Bugün ise size bahsetmek istediğimiz konu serial monitorun kullanılması hakkında ufak bir kaç püf noktası.

Serial Monitor Nedir ?

Arduino muza kodlar atabilmek için bilsayar üzerinden usb kablosu yardımıyla bağlıyoruz. Bu aslında bilgisayar ile arduino arasında bir iletişim protokülü oluşturmaktır. Arduino muzu bilgisayara bağladığımız an itabiriyle seri haberleşmeye yapmaya başlar. Bu seri haberleşmeye seri port adınıda verebiliriz. Bu seri porttan çift yönlü veri akışı olabilir. Hem arduino ya kodlar yollayabilir hemde arduino üzerinden bilgileri bilgisayarımızda görüntüleyebiliriz. Serial Monitor de tam da burda devreye girer. Arduinoda yaptığımız kodsal işlerin işlevsel sonuçlarını bir kaç basit kodla bilgisayarımızda görüntüleyebiliriz.

Serial Monitor Nasıl Çalışır ?

Bu sorunun cevabını 2 kısımda anlatalım:
  1. Kodsal Yapı 
  2. Tıkla Çalıştır Yapı
Kodsal Yapı:
  • void setup() un içine bir kod yazılarak serial haberleşmenin hangi hızla başlatalıcağını tanımlamımız gerekir. Aşağıdaki örnekte 9600 le seri haberleşmemizi başlatıyoruz. Bu veri gönderme hızı 9600 olabileceği gibi 4800,9600,14400,19200,28800 gibi değerlerde olabilir.
  void setup() 
{               
  Serial.begin(9600);
}

  •  void loop() un içine ise yazdırmak istediğimiz yazı veya değeri Serial.print() ve Serial.println() komutlarıyla yazdırabiliriz. Şimdi bu yazıyı yazarken bile kulağıma print ile println arasındaki fark ne soruları gelir gibi oldu. O yüzden onuda açıklamadan geçmeyelim. print ile kodumuzu yazarsak gönderdeğimiz yazı veya değerler yan yana aynı satırda yazılır fakat println de 2. veri gönderilmeden önce imleç otomatik olarak bir alt satıra geçer.
void loop() 
{
  Serial.println(“ARDUİNOPROJEM “);
           delay(1000);


void loop() 
{
  Serial.print(“ARDUİNOPROJEM “);
            delay(1000);
}
  •  Önemli bir hususta daha önceden tanımlanmış bir şeyin içindeki veriyi serial monitore yollama.Onuda aşağıdaki basitinden örnek kod bloğu ile anlatalım. Bunu için önce bir int deger tanımlayacağız önce sonrada onu serial monitore yollayacağız.


int deger = 12;

void setup()
 {
 Serial.begin(9600);
}

void loop()
{
Serial.println(deger);

delay(1000);
          Serial.println("https://arduinoprojem.blogspot.com");

delay(1000);
}

Bas Çalıştır Yapı:

Bunuda sizlere aşağıdaki resimlerle anlatacağım.

Az önce yazıda yazdığımız kodları buraya yapıştırıyoruz.
Kodumuzu upload ettikten sonra serial monitör ü çalıştırıyoruz.

Ve Serial monitörde göndermek istediğimiz şeyleri göndermiş oluyoruz.




10 Ocak 2015 Cumartesi

Arduino Projem - RGB Led Yakma

Rgb Led Ne Demek ?

Öncelikle Rgb kelimesinin nereden geldiğini söyleyelim. Bu kelime RedGreenBlue(RGB) kısatılmasından gelmektedir. Normal bir led bir (+) bir adet (-) bacak olmak üzere 2 adet bulundurur. Fakat bu RGB led 4 bacağa sahiptir. Bunlardan 3 tanesi kırmızı , yeşil , mavi ana renk bacaklarıdır. Diğer bacağı ise ortak toprak bacağıdır.  Burada amaç 3 temel renkten diğer renkleri elde edebilmektedir.
Yandaki RGB şemasında görüldüğü gibi 3 tane daire vardır. Bunların birbirinle olan birleşimi ile diğer renkler meydana geliyor.Örnek vereceksek olursak;
  • Kırmızı + Yeşil : Sarı
  • Yeşil + Mavi : Cyan
  • Mavi + Kırmızı : Magenta
gibi örnekler verebiliriz. Belli bir oranla karıştırarak renkler elde edeceğimiz renk oranları internetten bulabilceğiniz bir kaç tanesini bizde aşağıdaki resimle sizlere vereceğiz.

RGB Renk Kod Değerleri














































































Az çok kafanızda birşeyler belirmiştir. Şimdi bu konuyu zihinde daha iyi oturtabilmek için bir uygulama yapalım. Devre şeması ve kodlar asağıdaki gibidir.
Devre şemamızı bu şekilde kuralım.
Kodlarmızın ilk kısmı kırmızı , yeşil ve mavi pinlerini tanıtmadır.

İkinci kısımdan ise bu şekilde kodlar yazarak kırmızı,yeşil,mavi,sarı,mor,aqua gibi renkler oluşturmak.


Kodlar:



int redPin = 4;

int greenPin = 3;

int bluePin = 2;



void setup()

{

  pinMode(redPin, OUTPUT);

  pinMode(greenPin, OUTPUT);

  pinMode(bluePin, OUTPUT);

}



void loop()

{

  setColor(255, 0, 0);  // kırmızı

  delay(1000);

  setColor(0, 255, 0);  // yeşil

  delay(1000);

  setColor(0, 0, 255);  // mavi

  delay(1000);

  setColor(255, 255, 0);  // sarı

  delay(1000);

  setColor(80, 0, 80);  // mor

  delay(1000);

  setColor(0, 255, 255);  // aqua

  delay(1000);

}



void setColor(int red, int green, int blue)

{

  analogWrite(redPin, red);

  analogWrite(greenPin, green);

  analogWrite(bluePin, blue);

}

9 Ocak 2015 Cuma

Arduino Projem - Analog Okuma

Arduino Projem - Analog Okuma

Bu yazı proje olarak değil daha çok bir konu anlatımı gibi olmasına karar verdim. Analog okuma nedir ? Analog okuma nasıl yapılır ? Ne işe yarar ? Ne işe yaramaz ? bla bla bla böyle soruları türetmek mümkündür. lafı daha fazla uzatmadan asıl yazımı yazmaya başlıyorum

Neden Analog Okuma ?

Elimize bir tane arduino aldık ilk olarak ne yapıyoruz basitinden bir led yakıyoruz söndürüyoruz. Temelde zaten böyle kazanılıyor. Burada yakacağımız ledin şartını şurtunu biz kendimiz elimizle giriyoruz mesela delay(1000); komutu ile 1 sn bekleme yaptırıyoruz yada analogWrite(7,deger); yaparak deger e attığımız sayıyı led e yollayarak parlaklık ayarlıyoruz. Yani dediğimiz gibi şartları biz kendimiz belirliyoruz. Buradaki ledin parlaklığını bir pot veya bir sensör ile ayarlamak daha yaratıcı birsey olmaz mı ? Tabikide olur .

Analog Okuma Nedir ?

Elektronik ortamda iki tür değer vardır. Bunlardan biri analog diğeri ise dijitaldir. Örnekle bunları açıklamak gerekirse bir şey ya vardır yada yoktur gibi bir ifade varsa o dijital değerdir. Arduinoda dijital değeri high yaptığımızda değer voltaj olarak 5V dur fakat bunu low yaptığımızda 0V dur. Analog değere geldiğimizde ise dijital gibi net bir yargı yoktur. Bir değer az olabilir yada çok az olabilir.Sensörlerden gelen analog veri okduğumuzda 1V 2V 3V gibi değerler görebiliriz. Bunlar aslında robotikte önemli bir şeydir. Burada işin içine çözünürlük girer buda 1V u ne kadar fazla bölebilme yeteneğidir. Hassas islerde çözünürlük önemlidir.

Analog Okuma Nasıl Yapılır ?

Aslında çok kolaydır . Arduinoda A0 dan başlayan analog giriş pinleri vardır. Bunlardan gelen veriyi analog okumamız sadece 1 2 satır yazacağımız kod ile gerçekleşiyor.Bu kodlar ise bir önceki yazımız olan Potansiyometre ile Led Parlaklığı Ayarlama adlı yazımızda mevcuttur.Bu yazıyı okuduktan sonra az önce dediğimiz projeyi kendiniz yapmanız sizin için zihninizde yeni ufuklar açacaktır.

Şimdilik benden bu kadar bir sonraki yazımızda yine görüşürüz.Kendinize iyi bakın....


Arduino Projem - Ledin Parlaklığını Potonsimetre İle Ayarlamak

Potansiyometreyi döndürerek bir ledin parlaklığını pot dan analog değer okuyarak yapabiliriz.Devre şeması ve kodlar aşağıdaki gibidir.

Devre şemamız bu şekilde olacak.
Kodlarımız ise bu şekilde


Arduino Projem - Arduino Mini 05

Yeni özelleştirilmiş Atmega328 mikroçipine sahiptir.Uno veya Mega kadar detaylı bir arduino değildir. Fakat boyutu bakımından çok avantajlı olabilir.
Arduino Mini 05
Resimler Orjinal Siteden Alınmıştır. Satın Almak İçin Buraya Tıklayınız.


Teknik Özellikleri

Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7-9 V
Digital I/O Pins 14
PWM Digital I/O Pins 6
Analog Input Pins 8
DC Current per I/O Pin 40 mA
Flash Memory 32 KB
Flash Memory for Bootloader 2 KB
SRAM 2 KB
EEPROM 1 KB
Clock Speed 16 MHz
Lenght 30 mm
Width 18 mm


Arduino Projem - Arduino Mega 2560

Arduino Mega 2560 board u 54 dijital giriş ve çıkışa sahiptir. Bunlardan 14 ü PWM olarakta kullanılabilmektedir. Ayrıca 16 anolog girişi vardır. Unoda 1 tane olan seri haberleşme portu arduino mega 2560 da 4 adettir. Yine 16 Mhz kristale sahiptir.

Arduino Mega 2560 a üstten bir bakış.

Resimler orjinal sitesinden alınmıştır. Satın Almak İçin Buraya Tıklayınız


 

Teknik Özellikleri

Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 54
PWM Digital I/O Pins 14
Analog Input Pins 16
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB
Flash Memory for Bootloader 8 KB
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
Lenght 101.52 mm
Width 53.3 mm
Weight 37 g



Arduino Projem - Arduino Uno REV3 ü Tanıyalım

Arduino Uno R3 board u mikroişlemci olarak Atmega328 çipine sahiptir. Sahip olduğu 14 dijital giriş ve çıkış pinden 6 tanesinden PWM kullanılabilir. Ayrıca 6 adette anolog girişe sahiptir. Genel olarak 16 Mhz lik bir kristale sahiptir. Üzerinde usb bağlantı girişi, güç girişi ve ICSP header bulunur.

Arduino Uno ya  Üstten Bir Bakış




Resimler orjinal sitesinden alınmıştır. Satın Almak İçin Buraya Tıklayınız

Teknik Özellikleri

Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 14
PWM Digital I/O Pins 6
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB
Flash Memory for Bootloader 0.5 KB
SRAM 2 KB
EEPROM 1 KB
Clock Speed 16 MHz
Lenght 68.6 mm
Width 53.4 mm
Weight 25 g





7 Ocak 2015 Çarşamba

Arduino Projem - Led Parlaklığını Değiştirme

Daha önce ki projelerimizde ledimizi yaktık şimdi ise led parlaklığını ayarlamayı sizlere göstereceğiz.Kodlar ve şemayı şimdi sizlerle paylaşıyoruz.
Devre tasarımımızı bu şekilde yapıyoruz.

Kodlarda bu şekildedir.





int parla1 = 75;
int parla2 = 150;
int parla3 = 225;


void setup() {
  
  pinMode(7, OUTPUT); // 7 numaralı bacağı çıkış olarak tanımladık.
  
}

void loop() {


  analogWrite(7, parla1);   // 7 nolu bacağa bağlı LED i parla1 parlaklığı ile aç .
  delay(1500);
  analogWrite(7, parla2);   // 7 nolu bacağa bağlı LED i parla2 parlaklığı ile aç .
  delay(1500);
  analogWrite(7, parla3);   // 7 nolu bacağa bağlı LED i parla3 parlaklığı ile aç . 
  delay(1500);

}

Arduino Projem - Buton İle Bir Led Nasıl Yakıp Söndürülür ?

Bir önceki yazımızda bir led in nasıl nasıl yakacağımızı göstermiştik. Şimdi ise bu ledi bir buton yardımıyla nasıl yakıp söndüreceğimiz göstereceğiz.Ve bu şekilde 2. projemizle beraber dışardan bir etki yani başka bir değişle tetikleme ile ledimizi yakacağız. Devre şeması ve kodlar aşağıdaki gibidir.

Bu şekilde devremizi kuruyoruz.
Bunlar ise arduino uno ya atacağımız kodlar.

Arduino Projem - Basit Bir Led Nasıl Yakılır ?


Arduino dünyasına basit basit bir merhaba diyelim en kolayından başlayarak bir led i yakıp söndürelim . Aşağıda devre şemasını ve kodları sizlerle paylaşıyorum ve ilk projemizi hep beraber gerçeklestiriyoruz.

Kuracak olacağımız devre bu şekilde olacak.
Kodlarımız ise bu şekilde.