Arduino başlangıç

Arduino devreleri ve uygulamaları

Arduino nedir ?

Arduino kendi projelerinizi oluşturmak için çok yaygın ve kullanımı kolay açık kaynaklı C++ dilini kullanan programlanabilir bir kontrolcüdür ve küçük bir bilgisayar programıyla kolaylıkla programlanabilir.

Arduino ne işe yarar ?

Arduino ile akım-gerilim-ısı-ışık-ses-nem-gaz-seviye-basınç-ivme-akış-eğim-yön-cisim-pozisyon-mesafe-titreşim-hareket-yükseklik-EM dalga-manyetik alan-görüntü-zaman gibi fiziksel bilgileri direk sensörün kendisinden yada Arduino ile haberleşen  sensör modülleri aracılığıyla sens edebilir

Arduino MEGA 2560

ve bu bilgileri bir algoritmadan geçirerek dc,step,servo motorsürücüleri-görsel,işitsel  arayüzler ve çeşitli mekanizmalara hareket veren araçlar yada internet ortamına bir çıktı olarak yansıyabilirsiniz yani yapabilecekleriniz hayal gücünüz ile sınırlı

Arduino DUE

Arduinolar, tek bir devre kartı üzerinde bir dizi farklı parça ve arayüzler içerir.Temel bir Arduino kartında modeline göre, besleme gerilimi bir adaptör girişinden ,USB kablosu veya haricen başka bir kaynak akü,pil,batarya v.b sağlanabilir,ayrıca Arduino pinleri arasında Arduino harici bileşenler için 5.0V ve 3.3V  besleme pinleri mevcuttur bu sayede örneğin bir DC motora nisbeten daha az akıma ihtiyaç duyan ledler,çeşitli sensörler ve sensör modülleri,bluetooth,wi-fi modülleri,accelometer gibi bir çok bileşenin beslemesi bu Arduino pinlerinden kolayca sağlanabilir.

Arduino LEONARDO

Arduino lar türüne göre değişik sayılarda digital ve analog giriş çıkışlara sahiptir ,digital giriş ve çıkışlar 2 değişik durumda “1” +5V  yada “0” 0V olabilir.

Analog girişler “0V” ile “5V” arasındaki gerilim değerini 1024 birim çözünürlükte yani her 49mV başına 1 birim çözünürlükle algılar. Analog çıkışlar ise Arduino türüne göre PWM yada gerçek analog şeklindedir.

Arduino UNO

bir mikrodenetleyici, Arduino’yu komutları yürütmek ve çeşitli girdilere dayalı kararlar verebilmek için programlamanızı sağlar. Elinizdeki Arduino türüne göre genellikle bir ATmega8 – ATmega168 – ATmega328 – ATmega1280 veya ATmega2560 olan Atmel denetleyicileridir. Bu çipler arasında çok belirgin farklar yoktur, ancak yeni başlayanların fark edeceği en büyük fark, yerleşik belleklerin kapasitelerinin farklı oluşudur.

Yeni Arduino kartlarında standart bir USB portu üzerinden sağlanan bir seri bağlantı, bilgisayar üzerinden Arduino ile iletişim kurmanıza ve yeni programlarıArduino ya yüklemenize olanak tanır.Aynı zamanda Arduino nun yaptığı işlemler bu seriport üzerinden gerçek zamanlı olarak bilgisayar ekranından takip edilebilir.

Arduino nasıl programlanır ?

Programın arayüzünün basit oluşu Arduino meraklıları ve özellikle yeni başlayanlar için çok kolay bir ortamda kod yazabilmelerini sağlar ve sonunda basitçe bir tuşa basarak kod saniyeler içersinde cihaza yüklenebilir.

Burada ki anlatım Arduino Uno-Arduino Mega- Arduino Nano- Arduino Mikro v.b kullandığınızı varsayarak yapılacak bir anlatım olacaktır.

Yüklemek ve kullanmaya başlamak için öncelikle Arduino programını resmi web sitesinden  BURADAN indiriniz ve bilgisayarınıza kurunuz.
Yada siteye üye olarak tarayıcınız ile web editörü üzerinden de programlamaya başlayabilirsiniz.

Elinizde ki Arduino kartının tipine göre bilgisayar bağlantısı üç değişik tipte olabilir, “Arduino uno ve Arduino mega” bilgisayar yazıcılarında kullanılan büyük B tipi usb bağlantısını kullanır.Arduino nano ise usb ile çalışan ev aletlerinde kullanılan mini-b tipi usb bağlantısını,Arduino micro ise android cep telefonlarında kullanılan mikro-b tipi usb bağlantısını kullanır.

Arduinoyu usb ile bilgisayarınıza bağlayın,Arduino kartı için ayrı bir beslemeye ihtiyaç yoktur yukarıda bahsettiğimiz gibi usb bağlantısı aynı zamanda kartın ihtiyacı olan beslemeyi de sağlayacaktır ve kart üzerinde ki yeşil power led sürekli yanacaktır.

bilgisayar ekranında bilgisayar üzerine sağ tıklayıp “özellikler”e tıklayın—ardından “aygıt yöneticisi”ne tıklayarak açılan  listede “Arduino” yu bulun—“Arduino” üzerine sağ tıklayıp “sürücü yazılımını güncelleştir” e tıklayın—sürücü yazılımını bilgisayarınızdan bulmayı tercih edin ve listede çıkan sürücüye tıklayarak “usb driver” ı gösterin ve ileri yi tıklayarak kurulumu gerçekleştirin.kurulumdan sonra aygıt yöneticisi listesinde Arduino simgesinin yanındaki ! veya ? simgesi kalkmış olacaktır.bu sürücünün yüklendiği anlamına gelir.

Şimdi programımızı yazmak ve Arduino ya yüklemek için herşey hazır.ilk olarak en basit ve temel program olan “Blink yani bir led i birer saniye aralıklarla yakıp söndürmekten başlayacağız

küçük ve güzel bir ayrıntı olarak Arduino nun çalışmasını pratik şekilde test edebilmek için 13 nolu digital pine kart üzerinde gömülü yeşil bir led vardır,ilk programımız olan “Blink led yakıp söndürmeyi yaparken bu ledi yani 13 nolu digital pini kullanacağız.dileyen programı yazarken 13 gördüğü yere başka bir digital pin numarası yazarak harici bir led de kullanabilir.

Aşağıda en temel kod örneği olarak “Blink” yanıp sönen led uygulamasına ait kodlar gösterilmiştir, komutların yanına // işaretinden sonra not açıklamalar yazılmıştır, kod yazarken // işaretinden sonra yazılan notları işlemci komut olarak algılamaz

Aşağıdaki kodu kopyalayıp editör programına direk yapıştırabilirsiniz.

Kod yazma ekranının örnek bir görüntüsü

int led = 13; //led ismini 13 nolu digital pin olarak tanımla

void setup()        
{            
pinMode(led, OUTPUT);// led olarak tanımlanan 13 nolu pini çıkış olarak ayarla

void loop()       
{       
digitalWrite(led, HIGH); //led olarak tanımlanan 13 nolu pini “1” HIGH yap 

delay(1000); //1 saniye bekle            

digitalWrite(led, LOW); //led olarak tanımlanan 13 nolu pini “0” LOW yap

delay(1000); //1 saniye bekle                                                                                               
}                       

kod bileşenleri

int

Bu komut int den sonra yazılan kelimeyi veya ismi (led) bir giriş yada çıkış pini ile (13) ilişkilendir,yani int fonksyonu bir yere 13 nolu pin tanımlanacaksa bunun yerine örnek deki gibi led yazılabilmesini sağlar     int led = 13;

Örnek: 3 nolu digital pine bir dc motor bağlanacaksa     int motor = 3;     olarak tanımlanabilir. yani artık kodu yazarken 3 nolu pinin yerine motor yazacağız, int tanımlaması hangi pinin hangi sensör yada sürücüye bağlı olduğunu hatırlamamıza gerek bırakmadan kod yazımında önemli ölçüde pratiklik sağlar

Örnek: 5 nolu digital pine bir buton bağlanacaksa bu   int buton=5;    olarak tanımlanır ve 5 nolu pinin tanımlanacağı yerlere buton yazılır.

pinMode

pinMode değişkeni Arduino üzerinde bulunan pinleri çıkış veya giriş olarak tanımlayabilmemizi sağlar. Giriş olarak tanımlanan pinler buton,düğme,sensör,switch veya analog veri sağlayan potansiyometre,pozisyoner,seviye dedektörü v.b elemanlar için kullanılırken, çıkış olarak tanımlanmış pinler ise led,role,dc motor v.b elemanlar için kullanılır. pin tanımlamaları void setup() dan sonra ki {…..} parantez içine yazılır.

Örnek;

—4 nolu digital pin giriş ve 5 nolu digital pin çıkış olarak kullanılacaksa 
pinMode(4, INPUT);  
pinMode(5, OUTPUT);

void setup()

Arduino’ya her enerji verilip ilk çalıştığında veya  reset yapıldığında setup() dan sonra {……..} parantez içine yazılacak fonksiyonlar,değişkenler, pin modları,kütüphaneler,seri iletişim gibi tanımlama bilgileri bu bölüme girilir.                  Örneğin “Blink” yanıp sönen led uygulamasında 13 nolu digital pinin digital çıkış olarak kullanılacağı, void setup() sabitinden sonra {……} bu iki parantez arasına yazılan  pinMode(13, OUTPUT); komutuyla işlemciye çıkış olarak tanımlanmış olur.

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

Eğer bir uygulamada bir kaç giriş ve çıkış kullanılacaksa bunu işlemciye tanımlarken
komutlar aşağıdaki şekildeki gibi parantez içine sırayla alt alta yazılır ve tüm komutlar ; noktalı virgül işareti ile sonlandırılır.

void setup() 
{
pinMode(2, INPUT);// 2 nolu digital pini giriş olarak ayarla                                          
pinMode(3, INPUT);// 3 nolu digital pini giriş olarak ayarla                                           
pinMode(4, INPUT);// 4 nolu digital pini giriş olarak ayarla

pinMode(5, OUTPUT);// 5 nolu digital pini çıkış olarak ayarla                                       
pinMode(6, OUTPUT);// 6 nolu digital pini çıkış olarak ayarla                                       
pinMode(7, OUTPUT);// 7 nolu digital pini çıkış olarak ayarla               
}                             

void loop ()

void setup() fonksiyonun bir sefer çalışıp, tanımlamaları yapmasının ardından asıl işleyecek kodların devamlı çalıştığı kısımdır. Bu kısımda ana programın devamlı olarak çalışacağı,digital ve analog I/O pinlerinden gelen ve giden veri alışverişlerini kod da yazılan algoritmaya göre tain edeceği ve buna göre çıkış pinlerine bilgi olarak yansıtacağı kodun yazıldığı kısımdır.

void loop()        
{        
digitalWrite(led, HIGH); //led olarak tanımlanan 13 nolu pini “1” HIGH yap 

delay(1000); //1 saniye bekle            

digitalWrite(led, LOW); //led olarak tanımlanan 13 nolu pini “0” LOW yap

delay(1000); //1 saniye bekle                                                                                 
}

delay

delay komutu işlemcinin hiç bir işlem yapmadan bekleyeceği süreyi ifade eder ve kod yazılırken bekleme süresi ms “milisaniye” olarak girilir.

Örnek: 1 saniye bekleme süresi 1000 milisaniye ye tekabül edeceğinden
delay(1000); şeklinde yazılır.

Arduino veri alma ve gönderme

Digital veri okuma (digitalRead) 

kod yazarken digital giriş olarak tanımladığımız pinlere “1” +5V  yada “0” 0V olarak gelen bilgiyi okumamıza yarar ama sadece okumamız yetmez okuduğumuz değeri bir değişkene de tanımlamamız gerekir.
Örnek: 3 nolu digital pine int fonksiyonuyla buton ismini tanımlamış olalım ve okuduğumuz bilgiyi  butondurumu isimli değişkene tanımlayalım.
butondurumu=digitalRead(buton);
bu komuttan sonra buton olarak tanımlanan 3 nolu pin den okunan “1” yada “0” bilgisi “butondurumu” ismine tanımlanmış olur. yazılan kodun ilerleyen safhalarında 3 nolu digital pine gelen bilgiyi ifade ederken  “butondurumu” ismi kullanılır.

Önemli bir ayrıntı olarak Arduino I/O pinlerine digital veri sağlayan bir buton,switch,sensör,düğme v.b  aygıtlardan gelen digital verileri okumak için girişin bilgi yokken sabit “1” yada “0” olması ve sadece bilgi geldiğinde durum değiştirmesi gerekir,bunun için şekildeki gibi yardımcı direnç kullanılır.Bu direnç kullanılmadığında sensör,buton,switch,düğme v.b aygıtlar boşta iken Arduino girişleri, kablolar ve sensörlerde oluşan manyetik harmonikleri digital veya analog bilgi gibi algılayabilir ve bu durum kodun kararsız çalışmasına neden olur.Bu nedenle aşağıdaki şekildeki gibi direnç kullanılarak butona basılmadığı durumlarda giriş seviyesinin sabit “1” olması ve sadece butona basıldığı durumlarda “0” olması sağlanmıştır bu durum ters şekilde de uygulanabilir.Bu dirence pull-down direnci denir.                                               

Digital veri gönderme  ( digitalWrite )   

Arduino lar türüne göre çeşitli sayılarda digital çıkışlara sahiptir ve bu çıkışlar  “1” +5V  yada “0” 0V  gerilim verirler,önceden led ismine çıkış olarak tanımlanış bir digital pine  “1” +5V vermek için  
digitalWrite(led, HIGH); komutu kullanılır.  
Aynı şekilde led ismine çıkış olarak tanımlanış bir digital pine  “0” 0V vermek için 
digitalWrite(led, LOW); komutu kullanılır.

Aşağıda verilen örnek kod butona basıldığında led in yanmasını,brakıldığında sönmesini sağlayan en temel digital veri okuma ve gönderme kodudur.

int buton=4;//buton ismini 4 nolu digital pin olarak tanımla
int led=2;//led ismini 2 nolu digital pin olarak tanımla
int butondurum = 0;//Butona basıldığı bilgisini tutacak değişken
void setup()
{
pinMode(buton,INPUT);//buton olarak tanımlanan 4 nolu pini giriş yap
pinMode(led,OUTPUT);//led olarak tanımlanan 2 nolu pini çıkış yap
}
void loop()
{
butondurum=digitalRead(buton);//buton pininde ki değeri butondurum a yaz
if(butondurum==LOW)//eğer buton durumu “0” LOW ise aşağıdaki işlemi yap
{
digitalWrite(led,HIGH);//led ismine tanımlanan 2 nolu pini “1” yap
}
else //eğer if durumunda ki koşul sağlanmıyorsa aşağıdaki işlemi yap
digitalWrite(led,LOW);//led ismine tanımlanan 2 nolu pini “0” yap
}

Analog veri okuma  ( digitalRead )

Analog veri okuma işlemi,analog bir sinyalin belli bir frekansta sentezlenmesi yâda anlık 

Şekil ve şemaların çiziminde www.easyeda.com ve www.tinkercad.com sitelerinde ki online editör ve simülasyon programlarından yararlanılmıştır.

5 cevap

  1. Birol dedi ki:

    Sayfanızı tesadüf eseri buldum. Arduino’ya yeni başlıyorum sayılır daha doğrusu bu aralar merak sarmaya başladı heeuz herhangi bir aletin yada Arduino ile alakalı bir parçam yok ama öğrenmeye anlamaya çalışıyorum. Sizin sayfanızda ki başlangıç bölümünü yeni başlayanlar için çok faydalı buldum. Ve bütün başlangıç sayfasını okudum ama analog veri okuma bölümü yarım kalmış galiba devamını göremedim ya da bulamadım. Başarılar dilerim kolay gelsin.

  2. I got what you intend,bookmarked, very decent website.

  3. Bilal dedi ki:

    İyi günler. Arduino mega ile bir makine tasarladık. Ama makineye ekran olarak 10.1 inç gibi büyük bir ekran takıp proğramlayabilir miyiz?Teşekkürler..

  4. admin dedi ki:

    Elbette programlayabilirsin kullanacağın ekran hafızalı nextion HMI tipi ekransa arduino mega için fazla hafızaya ihtiyaç olmaz ama hafızasız ekransa kullanacağın görsellerin kaplayacağı alana göre değişir

  5. Twicsy dedi ki:

    I read this piece of writing fully regarding the resemblance of most recent
    and previous technologies, it’s awesome article.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir