74
Arduino programlama

Arduino Kitap

Embed Size (px)

DESCRIPTION

Arduino Türkçe

Citation preview

Page 1: Arduino Kitap

Arduino programlama

Page 2: Arduino Kitap

önsöz

iki bölümden olu an bu kitapta birinci bölüm Arduino ş

nedir,ne de ildir ve programlama için referans ğ

kısmından olu urken ikinci kısım ise Arduino ile ş

yapılmı projelerden olu uyor.Kitabın amacı ş ş

Arduino'ya yeni ba layanlar için basit anla ılır bir ş ş

kaynak sunmak.

Lisans

Bu belgeyi, Open Publication Licence lisansının 1.0 ya da

daha sonraki sürümünün ko ullarına ba lı kalarak ş ğ

kopyalayabilir, da ıtabilir ve/veya de i tirebilirsiniz. Buğ ğ ş

Lisansın özgün kopyasını

http://www.opencontent.org/openpub/ adresinde

bulabilirsiniz.

Page 3: Arduino Kitap

Not: Burdaki notlarla ilgili gördügünüz bir sorun ve

önerileriniz için [email protected] mail

atabilirsiniz.

içindekiler

nedir?1. Fiziksel Programlama nedir?

2. Arduino Nedir?

3. Neden Arduino?

4. Arduino çe itleri ve Shield'leriş

5. Arduino Kurulum

Programlama

Temel1. Arduino Programlama dilinin Kod yapısı

2. Minimum Arduino Sketch'i

3. ilk Arduino Programı

4. Referanslar

Page 4: Arduino Kitap

Projeler

1. proje

2. proje

3. proje

4. proje

5. proje

6. proje

7. proje

8. proje

9. proje

10.proje

Page 5: Arduino Kitap

Nazır DO ANĞ

www.gereksizcoder.wordpress.com

V.0.1

Page 6: Arduino Kitap

Fiziksel Programlama Fiziksel programlama yazılım ve donanım kullanarak

analog dı dünyayla veri alı veri i yapan fiziksel tasarlama ş ş ş

i ine verilen isimdir.Sensorler yardımıyla dı dünyayla ş ş

ileti ime geçilir.Analog olan veriler dijitale aktarılır ve yazılım ş

sayesinde ne yapılacagına karar verilir.

Arduino Nedir?

Page 7: Arduino Kitap

Arduino fiziksel dünyayı algılayan ve kontrol edebilmek

için kullanabileciginiz basit bir bilgisayardır. Basit bir

mikroi lemci ve yazılım yazmak için bir geli tirme ortamına ş ş

sahip basit bir fiziksel hesaplama platformudur.

Arduino anahtarları ,sensorleri,motorları ve diger fiziksel

çıkı ları kontrol etmek ve etkile imli nesneler geli tirmek için ş ş ş

kullanılabilir. Arduino projeleri tek ba ına geli tirebilir yada ş ş

bilgisayar üzerinde çalı an yazılımlara baglanabilir .ş

(Flash,Processing vb..)

Arduino açık kaynak bir geli tirme ortamına sahip olup ş

Processing yazılımından yola çıkarak yazılmı tır.ş

Kendi board'unuzu yapabileceginiz gibi tamamen hazır

alabilirsiniz.ve tamamen açık kaynak kodlu bir IDE'ye sahiptir

Page 8: Arduino Kitap

Neden Arduino ?

Fiziksel ortam için birçok mikrokontrolör ve

mikrokontrolör platformu mevcuttur. Örnegin Parallax Basic

Stamp,Netmedia's BX-24,Phidgets,MIT's Handyboard vs..

birçogu aynı fonksiyona sahiptir. Fakat hepsinin

programlanması oldukça zordur.Arduino ise programlamayı

oldukça kolay hale getirir.Ögrenciler ve amatörler için büyük

avantajlar saglar.

Nedenler ise

• Ucuz olması-Arduino diger platformlarla kar ıla tıgında ş ş

daha ucuzdur.ayrıca kendiniz yapabilirsiniz.

• Çapraz platform olması-Arduino Linux,Windows ve

MacOs ta çalı abilir.Çogu mikrokontrolör sistemi ş

Windows'la sınırlıdır.

• Basit ve Açık Programlama Ortamı-Arduino yazılımı yeni

ba layanlar için oldukça kolay bir ortam sunar.ş

• Açık Kaynak olması-Benim dü üncem en önemli ş

sebeptir.Gereksiz bir çok yazılıma para vermekten

kurtarır ve devamlı geli ebilen bir ortam sunar.ş

Page 9: Arduino Kitap

Arduino Çe itleri ve Shield'leriş

Arduino UNOArduino Uno ATMEGA 328 temelli bir board'dur. 14 tane

dijital giri /çıkı ş ş (G/Ç) (6 tanesi PWM için kullanılabilir)

pinine sahiptir.6 tane analog giri ve 16 Mhz seramik ş

resonator'e bulunmaktadır.USB baglantısı sayesinde kolayca

yazdıgınız kodu yükleyip çalı tırabilirsiniz. Aynı zamanda ş

USB ba lantısını güç içinde kullanabilirsiniz.ğ

Ya da üzerinde bulunan Güç giri i ile bir güç kayna ına ş ğ

ba layabilirsiniz.ğ Bir adette ICSP baglantısı bulunmaktadır.

Özet olarak

Mikrokontroller ATMEGA 328

Çalı ma Voltajı 5Vş

Giri Voltaji (ş tavsiye edilen) 7-12V

Giri Voltajı (ş limit) 6-20V

Dijital G/Ç 14 (6 tanesi PWM destekliyor)

Analog Giri ler 6ş

DC akım her pin'de 40mA

Page 10: Arduino Kitap

3.3V pin için DC akım 50mA

Flash Hafıza 32KB

SRAM 1KB

EEPROM 1KB

Saat Hızı 16MHz

Arduino Uno'dan bahsettikten sonra Uno'nun önemine

gelelim.Uno,Arduino programlamaya yeni ba layanlar için ş

biçilmi kaftandır.Hem diger board'lara nazaran ucuz olu u ş ş

her yerde bulunabilir olması ve Arduino shield'lerin hemen

hemen hepsiyle uyumlu olması nedeniyle tercih sebebidir.

Page 11: Arduino Kitap

Arduino MEGA 2560Arduino Mega 2560 ATMEGA 2560 temelli bir board'dur.

54 tane dijital G/Ç (15 tanesi PWM için kullanılabilir).16 tane

analog giriş ve 4 UART(donanım seri portu)

bulunmaktadır.16 MHz kristal osilator,USB baglantı ve güç

giri ine sahiptir.ICSP baglantısı ve reset butonu bu board'da ş

mevcuttur.

Özet olarak

Mikrokontroller ATMEGA 2560

Çalı ma Voltajı 5Vş

Giri Voltaji (ş tavsiye edilen) 7-12V

Giri Voltajı (ş limit) 6-20V

Dijital G/Ç 54(15 tanesi PWM destekliyor)

Page 12: Arduino Kitap

Analog Giri ler 6ş

DC akım her pin'de 40mA

3.3V pin için DC akım 50mA

Flash Hafıza 256KB

SRAM 8KB

EEPROM 4KB

Saat Hızı 16MHz

Arduino Mega'nın özelliklerinden bahsettikten sonra ise

Mega neden önemli bir boarddur ondan bahsedelim.

Arduino Mega hafıza ve pin sayısından dolayı daha büyük

projeler için ideal bir boarddur .Uno'nun yetmedigi projeler

için kullanılabilir.

Mega,Uno için tasarlanmı bir çok shield ile uyumludur.ş

Diger Arduino Board'larıBurada bütün Arduino Boardlarından bahsetmem çokta

mümkün degil Muhtemelen ben bu yazıyı yazarken yeni bir

çok board tasarlanmaktadır . :)

Sadece isimlerini ve birkaç özelli ini yazarak geçmek ğ

istiyorum.

Page 13: Arduino Kitap

lk ve tek 32 bit Arduino DUE İ

Arduino Nano ve Mini

Arduino ESPLORA ve Leonardo

Page 14: Arduino Kitap

Lilypad

Shield'lerShield'leri tanıtmadan önce shield nedir onun üzerinde biraz

durmak istiyorum.Shield'ler Arduino boardumuzun üzerine

kolayca takılıp yapmak istedi imiz projeyi dahada kolay ğ

yapmamızı saglayan ek board'lardır.

Arduino'nun resmi olarak birçok shield'i bulunmaktadır.ama

açık kaynak olmasından dolayı geli rtiriciler kendi ş

Page 15: Arduino Kitap

shield'lerini tasarlayıp satmakta veya kullanmaktadır.

Resmi Arduino Shield'lerinden Bazıları

GSM shield

Ethernet Shield

Page 16: Arduino Kitap

Wireless SD Shield

Motor Shield

Page 17: Arduino Kitap

Xbee

Arduino Windows Kurulumu Öncelikle www.arduino.cc sitesinden arduinonun

bilgisayarımızın i letim sistemine uygun IDE'yi indiriyoz.ş

ndirdikten sonra ise yapmamız gereken Arduino'yu İ

bilgisayarımıza ba layıp tanıtmak.ğ

Bunu ekran görüntüleriyle anlatmak daha kolay sanırım. :)

Page 18: Arduino Kitap
Page 19: Arduino Kitap
Page 20: Arduino Kitap
Page 21: Arduino Kitap
Page 22: Arduino Kitap

Eger bu ekran görüntülerindeki adımları izlerseniz

.Arduino'yu sorunsuz olarak bilgisayarınıza tanıtmı sınızdır.ş

Linux üzerinde ArduinoEger sizde benim gibi bir Ubuntu kullanıcısıysanız Ubuntu

Software Center'dan direk olarak kurabilirsiniz.Ya da

Arduino'nun sitesinden linux için olan versiyonunu indirip

direk olarak çalı tırabilirsiniz .Benim ki isel önerim ş ş ise bir

linux da ıtımı kullanmanızdır.Bir neden göstermek gerekirse ğ

64 bit Windows üzerinde Processing(daha ilerde

bahsedece im) seri monitor'u kullanamamanızdır.ğ

PROGRAMLAMAArduino kod yapısıEger bir programlama diliyle u ra tıysanız Arduino size ğ ş

oldukça kolay gelecektir. Hiç ugra madıysanız ise ş

korkmanıza gerek yok.Arduino'yu en temel seviyeden

Page 23: Arduino Kitap

anlataca ım.Bu sayede programlamaya il inizi artırıp ğ ğ

yazdı ınız kodları çalı tırıp gözünüzle gördügünüz için ğ ş

normal bir bilgisayar programlama dilinden daha kolay

ö reneceksiniz.ğ

Eger C ailesinden bir dili ile ugra tıysanız Arduino dilini ş

anlamanız daha kolay olacaktır.çünkü Arduino dili C dilinden

esinlenmi tir. Ve C++ ile kütüphane yazabilir bunları ş

kullanabilirsiniz.

Minimum Kod

Page 24: Arduino Kitap

Fazla uzatmadan artık programlamaya ba lamak ş

istiyorum.dedigim gibi Arduino oldukça kolay en ba ta bunuş

aklımızda tutalım.Zaten felsefesi kolay olmak. :)

Arduino kodunun çalı abilmesi için minimum iki tane ş

methoda ihtiyacımız var bunlar setup() ve loop()

methodlarıdır.

Setup()Bu fonksiyon sketch'in(her bir Arduino çalı masına verilen ş

ad) ba ladı ını gösterir. Bu fonksiyonun içinde de i kenler ş ğ ğ ş

ve pinler tanımlanır.Kütüphaneler kullanılmaya ba lanır. Bu ş

fonksiyon Arduino çalı ıtıgında veya resetlendi inde bir ş ğ

defa çalı ır.ş

Loop()

Page 25: Arduino Kitap
Page 26: Arduino Kitap

Bu fonksiyon ise Setup() fonksiyonunda tanımlanan G/Ç

birimlerinin kontrolünü bizim yazdıgımız koda göre yapar.

Örnegin bir led'e ne kadar süre yanıp ne kadar

yanmayacagını burda yapabiliriz .yada bir LDR yardımıyla

ı ıgın iddetini ölçebiliriz.ş ş Loop() fonksiyonu Arduino

çalı maya ba ladıktan sonra devamlı olarak çalı ır.devamlı ş ş ş

olarak ba a döner ve döngüyü devam ettirir. ş

Page 27: Arduino Kitap

lk Arduino Sketch'iİ

Buraya kadar Arduino nedir ne degildir diye bahsettim .Artık

kodlamaya geçmenin zamanı geldi .

lk kodumuzda bir Led'i yakıp söndürecegiz.

Devremizi ekildeki gibi kurduktan sonra tek yapmamız ş

gereken yazdıgımız kodu boarda yüklemek.

Page 28: Arduino Kitap
Page 29: Arduino Kitap

E er yukardakiları eksiksiz yaptıysanız u an arduino ğ ş

Page 30: Arduino Kitap

board'unuzda led'in yanıp söndügünü görmelisiniz.

E er olmadıysa bu i lemlere tekrardan göz atmanızda ğ ş

fayda var. :)

Seri Dijital OkumaBazı eylerin Türkçesini tam bir çevirisi olmadı ından ya da ş ğ

benim bilmedi imden dolayı böyle çeviriler olabilir.ğ

Bu örnekte ise buton'un durumunu yani açık mı kapalımı

onu Arduino board'umuzla seri ile itimini sa layaca ız.ş ğ ğ

Gerekli Donanımlar

• Arduino Board

• Buton

• 10k ohm direnç

• Devre Tahtası(Breadboard)

• Kablo

Page 31: Arduino Kitap

Yukardakı gibi butonu ve dirençi bagladıktan sonra

yapmamız gereken sadece kodumuzu board'a yüklemek.

Kodu File=>Examples=>Basics=>DigitalSerialRead yolunu

izleyerek açabilirsiniz

Page 32: Arduino Kitap

Daha sonra yapmanız gereken Seri Monitor'u açıp dijital

1 ve 0 'ları görecegiz. Eger devre açıksa 0 ,de ilse 1 'i ğ

görecegiz.

Seri Monitor nerede diyorsanız a a ıdaki resimde ş ğ

Page 33: Arduino Kitap

görebilirsiniz.

Analog Seri Okuma Bu örnekte ise potansiyometre ile fiziksel dünyadan analog

veriler okuyaca ız.Öncelikle potansiyometrenin ne ğ

oldugundan biraz bahsedelim .potansiyometre basitçe bir

eksen üzerinde dönen ayarlı dirençtir.

Page 34: Arduino Kitap

Gerekli Donanımlar• Arduino

• 10 Kohm Potansiyometre

ekildeki gibi ba ladıktan sonra tek yapmanız gereken ş ğ

Board'da kodu yüklemek.

Kodu File=>Examples=>Basics=>AnalogSerialRead yolunu

izleyerek açabilirsiniz.

Page 35: Arduino Kitap

Kodu yükledikten sonra Seri Monitor'u açıp neler

döndügüne bakabilirsiniz. E er potensiyometreyle ğ

oynarsanız de erlerin degi tigini göreceksiniz.Arduino'da ğ ş

bulunan ADC (analog to digital Converter) sayesinde 0-1023

arasında sayılara dönü tügünü görebilirsiniz.ş

Buraya kadar basitçe analog ve digital kavramlarını

anladı ınızı varsayarak artık programlamaya ba lamak ğ ş

Page 36: Arduino Kitap

istiyorum.

Sabitler ve Veri TipleriSabitler Arduino dilinde öntanımlı olarak bulunmaktadır.

Bu sabitler programımızın daha kolay okunmasını sa lar.ğ

Boolean SabitleriE er az çok dijital elektronikle u ra tıysanız Boolean ğ ğ ş

Matemati inden haberdar olmalısınız.ğ

Boolean sabitleri 1 ve 0 'dır .Arduino'da ise true ve false 'dir.

Burda 0 false 1 ise true anlamına gelmektedir.

Pinlerin Durumlarını BelirlemeArduino pinlerinden okuyabilece imiz yada yazabilece imizğ ğ

iki tane deger vardır. Bunlar HIGH ve LOW 'dur.Burda

HIGH voltajın var oldugunu LOW ise olmadıgını gösterir.

digitalWrite( pin,HIGH) veya digitalWrite(pin,LOW)

eklinde kullanabiliriz.ş

Veri Tipleri • void

Void kelimesi sadece fonksiyon tanımlanırken kullanılır.

Page 37: Arduino Kitap

Bu fonskiyon çagırıldı ında hiçbir de er döndürmez.ğ ğ

Örnegin

void setup()

{

// ...

}

void loop()

{

// ...

}

• boolean

boolean'dan daha önce bahsetti im için üzerinde ğ

durmayaca ım . ğ

• char

Page 38: Arduino Kitap

1 bayt'lık bir karakter de eri saklayan veri türüdür.ğ

Örnek

char karakter='A';

E er birden çok karakter için ğ

char karakter=”ABC”;

eklinde kullanılılabilir.ş

Char (Karakterler) sayı olarakta tutulabilir.ASCII tablosuna

göz atmanız lazım.

Örnek

char karakter='A';

char karakter=65;

Eger ASCII tablosuna göz attıysanız A nın sayısal degerinin

65 oldugunu görebilirsiniz.

• unsigned char

Unsigned Char hafızada 1 baytlık yer tutar.byte ile

aynıdır.

0-255 arasındaki sayıları encode eder.

• Byte

Byte , 0-255 arasında hafızada 8 bit unsigned sayı tutar.

• int

Page 39: Arduino Kitap

int veri tipi sayı tutmak için kullanılan birincil veri tipidir.

-32,768(-2^15)-32,767(2^15-1) aralı ında deger ğ

alır.Hafızada 2 baytlık yer tutar.

Örnek

int ledPin=13;

• unsigned int

unsigned int ile int farkı ise unsigned int negatif deger

tutmaz.sadece pozitif deger alır. 0

-65,535(2^16-1) arasındadır.int gibi hafızada 2 baytlık

yer tutar.

• Word

word ,0-65535 arasında 16 bit unsigned sayı

tutar.Unsigned int ile aynıdır.

• Long

Long,sayı tutmak için geni letilmi veri tipidir. ş ş

-2,147,1483,648-2,147,483,647 arasında 32 bit'lik (4

bayts) sayı tutar.

• unsigned long

Usigned long'ta long veri tipi gibi 32 bit (4 bayt) veri

tutar. Farkı ise sadece pozitif de erler almasıdır. ğ

0-4,294,967,295(2^32-1) aralı ındadır.ğ

Page 40: Arduino Kitap

• short

Short 16 bit'lik bir veri tipidir.

-32,768(-2^15) -32,767(2^15-1) arasındadır.

• Float

Float, decimal sayılar için kullanılan veri tipidir. Float veri tipi

daha çok analog ve devam eden de erlerde daha büyük ğ

çözünürlük elde etmek için kullanılır.De er aralı ı ğ ğ

-3,4028235E+38 ile 3,4028235E+38 arasındadır. 32 bit

(4 bayt) sayı tutar. Float virgulden sonra 6-7 basama a ğ

sahiptir.

• Double

Float'la aynı i i görür.ş

• array(dizi)

Dizi ,bir dizin numarası ile eri ilen degi kenlerin ş ş

toplulu udur.ğ

Bir Dizi(Array) olu turmakş

int Dizi=[6];

int Pinler [ ]={2,4,8,7,6};

char mesaj[6]=”hello”;

Page 41: Arduino Kitap

Dizinin bir elemanına de er atamakğ

mySensVals[0]=10;

Dizinin bir elemanından de er almakğ

x=mySensVals[4];

Dizi ve For Döngüsü

int i;

for(i=0; i<5; i++)

{

Serial.println(myPins[i]);

}

OPERATÖRLER

Aritmetik Operatörler

• = atama operatörü

Page 42: Arduino Kitap

• + toplama operatörü

• - çıkarma operatörü

• * çarpma operatörü

• / bölme operatörü

• % mod(artık bölme)

Kar ıla tırma Operatörleriş ş

• == e ittir operatörüş

• != e it degil operatörüş

• < küçüktür operatörü

• > büyüktür operatörü

• <= küçük veya e ittirş

• >= büyük veya e ittirş

Page 43: Arduino Kitap

Boolean Operatörleri

• && AND (ve ) operatörüif deyiminde kullanılabilir.

Örnek

if (digitalRead(2) == HIGH && digitalRead(3) == HIGH)

{

// read two switches

// ...

}

• || OR (veya ) operatörüif (x > 0 || y > 0) {

// ...

}

• ! NOT (degil ) operatörüif (!x) {

// ...}

Page 44: Arduino Kitap

Bitwise Operatörleri

• & (bitwise and)

• | (bitwise or )

• ^ (bitwise xor)

• ~ (bitwise not)

• << (bitwise left)

• >> (bitwise right)

Birle tirme Operatörleriş• ++ artırma

• -- azaltma

• += ekleyerek atama

• -= eksilterek atama

• *= çarparak atama

• /= bölerek atama

• %= bölüp kalanı atama

• &=

Page 45: Arduino Kitap

• |=

Fonksiyonlar

Dijital G/Ç

• pinMode()Bir giri (input) ya da çıkı (output) olarak belirtilen pin'i ş ş

yapılandırır.

Sözdizimi

pinMode(pin,Mode)

pin:Kaç numaralı pin'i ayarlamak istiyorsak onu yazıyoruz.

Mode: INPUT,OUTPUT veya INPUT_PULLUP durumlarından

birini yazıyoruz.

Örnek

pinMode(led,OUTPUT);

• DigitalWrite()HIGH veya LOW degerini pin'e gönderen fonksiyondur.

Page 46: Arduino Kitap

E er voltaj 5V veya 3.3V ayarlanmı a HIGH degeri için ğ şş

bu degeri gönderir.LOW için ise 0V gönderir.

Page 47: Arduino Kitap

• digitalRead()Pin'in degerini okur .HIGH veya LOW olabilir.

deger = digitalRead(inPin);

Page 48: Arduino Kitap

Analog G/Ç

• analogReference()Analog giri olarak kullanılan referans gerilimini ş

yapılandırır.Seçenekler ise unlardırş

• DEFAULT:varsayılan analog 5V veya 3.3 Volt

• INTERNAL:1.1 volt Atmega168 veya ATMEGA328 de

2.56 Volttur.

• EXTERNAL: AREF pin uygulanan voltajdır.0-5V arasında

kullanılır.

• analogRead() Belirtilen analog pin de erini okur .Arduino 6 kanal (8 ğ

kanal Mini ve Nano,16 kanal Mega) ,10 bit ADC(Analog

Digital Converter).Bu u anlama gelmektedir. 0 -1023 ş

arasındaki tamsayı de erlere 0 ile 5 volta arası giri ğ ş

gerilimleri ile e le ir. 5Volt/1.024 birim veya birim ba ına ş ş ş

0,0049. Yani Arduio'nun okudu unuz Analog degeri bu sayı ğ

ile çarparak Voltaji bulabilirsiniz.

Bir analog giri okumak için yakla ık 100 ş ş

Page 49: Arduino Kitap

mikrosaniye(0,0001 ) alır. En yüksek okuma orani ise

saniyede 10,000 defadır.

• AnalogWriteAnalog de eri belirtilen pin'e yazar.LED'lerin ğ

parlaklıgını ayarlamak veya Motorları farklı hızlarda

sürebilirsiniz.Kare dalga üretir.PWM sinyal frekansı

yakla ık olarak 490Hz'dir.ş

Çogu Arduino Board'unda bu fonksiyon 3,5,6,9,10 ve 11

numaralı pinlerle çalı ır.Sadece Mega board'ta 2 den 13 ş

e kadardır.

Sözdizimi

analogWrite(pin,value)

Parametre

pin: pin'in numarası

value: 0(kapalı)-255(açık) arasındaki degerler

Örnek

Zaman

• millis() Arduino'da yüklü mevcut olan programı ba lamasındanş

sonra milisaniye de erinde sayı döndürür.Yakla ık 50 ğ ş

Page 50: Arduino Kitap

gün sonra overflow(ta ma ) olacaktır.ş

Örnek

• micros()Arduino'da yüklü mevcut olan programı ba lamasından ş

sonra mikrosaniye de erinde sayı döndürür.ğ Yakla ık 70 ş

dakika sonra overflow olacaktır.

Örnek

• delay()Programı belirtilen süre kadar durdurur. Birimi

milisaniyedir. 1000 milisaniye 1 saniyedir.

Sözdizimi

delay(ms)

Örnek

• delayMicroseconds()Programı belirtilen süre kadar durdurur. Birimi

mikrosaniyedir. 1000 mikrosaniye 1

milisaniyedir.Saniyenin milyonda bir'i kadardır.

Sözdizimi

Page 51: Arduino Kitap

delayMicroseconds(us)

Örnek

Matematik

• min()iki sayıdan küçük olanı geri döndürür.

Örnek

SensValue=min(Sens,100) // burda devamlı küçük olan

degeri geri döndürecektir. Yani 100 e kadar Sens

degerini alacak 100 den sonra ise hep 100 degerini

döndürecektir.

• Max()iki sayıdan büyük olanı geri döndürür.

Örnek

SensValue=max(sens,20) // burda ise devamlı büyük olan

de eri döndürecektir.Yani 20 ye kadar hep 20 sonrasında ise ğ

sens de erini döndürecektir.ğ

• Abs()sayının mutlak de erini geri döndürür.ğ

Page 52: Arduino Kitap

• Constrain()Sayıyı bir aralıkta sınırlar.

Örnek

sensVal=constrain(sens,10,160); // de i kenin de eri enğ ş ğ

küçük 10 en yüksek 160 olabilir.

• Map()Map fonksiyonu sayının aralı ını ba ka bir aralı a ğ ş ğ

ta ımaya yarar.ş

y=map(x,1,50,50,1) // burda birinci dü ük degeri 1 iken ş

50 olmu ikinci degeri ise 50 iken 1 olmu tur.ş ş

• Pow()Sayının kuvvetini hesaplamaya yarayan fonksiyondur.

Sözdizimi

pow(taban,üzeri)

• sqrt()Sayının karekökünü hesaplayan fonksiyondur.

Sözdizimi

Sqrt(x)

Trigonometri

Page 53: Arduino Kitap

• sin()

• cos()

• tan()

Rastgele(Random) Sayılar

• randomSeed()

• random

Bit'ler ve Bayt

• lowByte()

• highByte()

• bitRead()

• bitWrite()

• bitSet()

• bitClear()

• bit()

Page 54: Arduino Kitap

leti im İ ş

• SerialArduino board'nun bilgisayar veya di er cihazlarla ğ

ileti imi için kullanılır.Bütün Arduinp board'larında en az ş

bir tane Seri port bulunmaktadır.(Genellikle UART ve

USART diye bilinirler).Seri port USB yardımı ile dijital

pinler üzerindeki 0 (RX ) ve 1 (TX) kullanarak haberle ir.ş

Page 55: Arduino Kitap

Fonksiyonlar

• available()

Seri porttan okumak için kullanılabilir bayt sayısını alır.

Sözdizimi

Serial.available()

Örnek

• begin

Seri veri iletimi için saniyedeki bit (baud) hızını ayarlar.

300,600,1200,2400,4800,9600 ,

14400,19200,28800,38400,57600,115200 degerlerinden

birini alır.

Sözdizimi

Serial.begin(hız)

• end()

Seri ileti imi devre dı ı bırakır.pinleri genel giri ve çıkı ş ş ş ş

olarak kullanmaya izin verir. Yeniden ileti ime geçmek ş

için Serial.begin() kullanılır.

Sözdizimi

Page 56: Arduino Kitap

Serial.end()

• Find()

Verilen uzunlukta veri bulunana kadar tampon verileri

okur.Hedef dize,yanlı zaman veya olmadıgı bulunursa ş

i levi true degerini döndürür.ş

Sözdizimi

Serial.find(hedef)

• findUntil()

Belirli bir uzunlukta veya sonlandırıcı bir dize bulunana

kadar Serial.findUtil() tampon verilerini okur.

Sözdizimi

Serial.findUtil(hedef,terminal)

• Flush()

Giden Seri verinin tamamlanmasını bekler.

Sözdizimi

Serial.flush()

• parseFloat()

Seri verinin virgulden sonrasınıda geri

döndürür.Basamak (veya eksi i areti) olmayan ş

karakterler atlanır.

Sözdizimi

Page 57: Arduino Kitap

Serial.parseFloat()

• parseInt()

Seri veride bir sonraki geçerli tam sayıyı arar.

Söz dizimi

Serial.parseInt()

• peek()

• print

Seri port'tan aldı ı verileri ASCII tablosundaki kar ılıgı ğ ş

eklinde yansıtır. Bu komut birçok ekilde olabilir.ş ş

Örnek

• Serial.print(78) “78 ” verir

• Serial.print(1.23456) “1.23” verir

• Serial.print ('N') “N” verir.

• Serial.print(“Merhaba”) “Merhaba ”verir.

Örnek

• println()

print() 'den farkı daha okunabilir veriyi

göstermesidir.Veri bittiginde di er veriyi bir alt satırda ğ

gösterir.

Sözdizimi

Page 58: Arduino Kitap

Serial.println(de er)ğ

Serial.println(de er,format)ğ

• Read()

Gelen seri veriyi okur.

Sözdizimi

Serial.read()

• readBytes

• readBytesUntil()

• setTimeout()

• write

Seri port'a ikilik verileri yazar.Bu veri bayt bayt veya dizi

olarak gönderilir.

Sözdizimi

Serial.write(val)

Örnek

• Stream

Kontrol Yapıları

Page 59: Arduino Kitap

• if ve if ...elseif ve else ko ullu i lem yapan deyimlerdir.if ve else tek ş ş

bir kar ıla tırma deyimi olup else kullanımı istege ş ş

ba lıdır.E er ko ul do ru ise if den sonraki bölüm ğ ğ ş ğ

yürütülür. Else'den sonraki bölüm atlanır.

Örnek-1

if(degisken>50)

{

digitalWrite(ledPin,HIGH)

}

Örnek -2

if(degisken>500)

{

digitalWrite(ledpin,LOW)

}

else

{

digitalWrite(ledpin,HIGH)

}

Page 60: Arduino Kitap

• forBu deyim, di er döngü deyimleri gibi bir kümeyi bir çok ğ

kez tekrarlamak için kullanılır. Ko ul sınaması while da ş

oldu u gibi döngüye girmeden yapılır. Bu döngü ğ

deyimin içinde di erlerinden farklı olarak ba langıç ğ ş

de eri ve döngü sayacına sahip olmasıdır.ğ

Örnek

int PWMpin = 10; // led digital 10 'a ba lanır.ğ

void setup()

{

// no setup needed

}

void loop()

{

Page 61: Arduino Kitap

for (int i=0; i <= 255; i++){

analogWrite(PWMpin, i);

delay(10);

}

}

• switch caseBu deyim bir de i kenin içeri ine bakarak, programın ğ ş ğ

akı ını bir çok seçenekten birine yönlendirir. case ş

(durum) deyiminden sonra de i kenin durumu belirlenirğ ş

ve takip eden gelen satırlar (deyimler) i leme konur. ş

Bütün durumların aksi söz konu oldu unda ğ

gerçekle tirilmesi istenen deyimler default deyiminden ş

sonraki kısımda bildirilir.

Örnek

switch (degisken) {

case 1:

//de i ken 1 e it oldugunda yürütğ ş ş

break;

case 2:

//de i ken 2 e it oldugunda yürütğ ş ş

Page 62: Arduino Kitap

break;

default:

// Hiçbiri ile e le mez ise yürütş ş

// default deyimi opsiyoneldir.

}

• whileTekrarlama deyimidir. Bir küme ya da deyim while

kullanılarak bir çok kez yinelenebilir. Yinelenmesi için

ko ul sınaması döngüye girilmeden yapılır. Ko ul olumlu ş ş

oldu u sürece çevrim yinelenir.ğ

Örnek

degisken = 0;

while(degisken < 200){

// 200 defa kodu yürütür.

degisken++;

}

Page 63: Arduino Kitap

• do....whileBu deyimin while deyiminden farkı, ko ulun döngü ş

sonunda sınanmasıdır. Yani ko ul sınanmadan döngüye ş

girilir ve döngü kümesi en az bir kez yürütülür. Ko ul ş

olumsuz ise döngüden sonraki satıra geçilir.

Örnek

do

{

delay(50); //sensor stabilizisyanu için bekle

x = readSensors(); // Sensoru oku

} while (x < 100);

• breakBir Arduino programında, bir i lem gerçekle tirilirken, ş ş

i lemin sona erdirilmesi bu deyim ile yapılır. Örne in, ş ğ

döngü deyimleri içindekiler yürütülürken, çevrimin,

ko uldan ba ımsız kesin olarak sonlanması gerekti indeş ğ ğ

bu deyim kullanılır.

Örnek

for (x = 0; x < 255; x ++)

Page 64: Arduino Kitap

{

digitalWrite(PWMpin, x);

sens = analogRead(sensorPin);

if (sens > threshold){

x = 0;

break;

}

delay(50);

}

• continueBir döngü içerisinde continue deyimi ile kar ıla ılırsa, ş ş

ondan sonra gelen deyimler atlanır ve döngü bir sonraki

çevrime girer.

Örnek

for (x = 0; x < 255; x ++)

{

if (x > 40 && x < 120){ // create jump in values

continue;

}

Page 65: Arduino Kitap

digitalWrite(PWMpin, x);

delay(50);

}

• return Fonksiyon'u sonlandırmak veya deger döndürmek için

kullanılır.

Örnek

int checkSensor(){

if (analogRead(0) > 400) {

return 1;

else{

return 0;

}}

• goto

Programın herhangi bir yerinden ba ka bir yerine atlamak ş

için goto deyimi kullanılır.

Örnek

for(byte r = 0; r < 255; r++){

for(byte g = 255; g > -1; g--){

for(byte b = 0; b < 255; b++){

Page 66: Arduino Kitap

if (analogRead(0) > 250){ goto bailout;}

// more statements ...

}

}

}

bailout:

FRITZINGFritzing açık kaynak kodlu geli tirilen devre tasarım ş

programıdır.Fritizng içinde bulunan Arduino board'larıyla

(diger board'larda mevcut) ve temel devre elemanlarıyla

devrenizi çabuk prototip üretmenizi saglar.Fritzing'i

kullanmak için çok fazla Bir ey bilmenize gerek yok devre ş

elemanlarını sürükle bırak ile çalı ma alanınıza alıp ş

kullanabilirsiniz.

Page 67: Arduino Kitap

Fritzing www.fritzing.org adresinden i letim sisteminize ş

uygun olan versiyonunu indirebilirsiniz.Ayrıca fritzing

Windows ,Linux ve Mac OS X çalı maktadır.ş

PROCESSINGProcessing, resim, animasyon ve etkile im yöntemleri ş

geli tirebilece iniz açık kaynak bir programlama dili ve ş ğ

ortamıdır. Çokluortam malzemeleriyle (resim, video ve ses

gibi) sorunsuz çalı abilir, i leyebilir. Görsel bir çıktı üzerinden ş ş

Page 68: Arduino Kitap

hareket ederek bilgisayar programlamanın prensipleri ve

temellerini disiplin dı ı ki ilerinde çok rahat ve hızlı bir ş ş

ekilde ö renmesine olanak sa lar. O nedenle birçok ş ğ ğ

ara tırmacı, ö renci, tasarımcı ve sanatçı tarafından tercih ş ğ

edilen bir programlama dilidir. Kendi yaptıkları profesyonel

i lerinde prototip uygulama, sergi ö esi veya i lerinin ş ğ ş

niteliklerini artıracak nitelikte kullanmaktadır. Processing bu

kadar farklı amaçlarda farklı insanların tercih etme

sebeplerini sıralayacak olursak;

• Açık kaynak ve tüm i letim sistemleri ile sorunsuz ş

çalı abilmesiş

• 2D ve 3D ile sorunsuz çalı abilme bu görüntüler ş

üzerinde kolay ve hızlı etkile im yaratabilme (geli mi ş ş ş

2D ve 3D kütüphaneleri)

• Uygulama içersinden basit ve kolay PDF çıktılar alabilme

(zengin PDF kütüphaneleri)

• OpenGL entegrasyonu ile 3D motor kullanımı

• Ses, video ba ta olmak üzere 100’den fazla kütüphane ş

ile birçok çoklu ortam ö esi ile sorunsuz çalı abilmeğ ş

• Web ve masaüstü’de çalı abilir uygulamalar ş

yaratabilme

• Andorid deste iğ

Page 69: Arduino Kitap

• Sadece processing için özelle tirilmi bir programlama ş ş

ortamı (PDE – Processing Development Enviroment)

• Geni kaynak eri imi (Güncel ve eksiksiz ş ş

dokümantasyon ve özel gereksinimler üzerine yazılmı ş

çokça sayıda kitap)

Processing'den bahsetmemin nedeni Arduino ile Seri veri

iletimi sayesinde Data Visualization kolayca yapılabilmesidir.

Processing ile zaten zevkli olan Arduino programlama daha

zevkli hale geliyor.Birçok projeniz görsel anlamda daha

göze hitap edecek hale geliyor ve insanların anlaması

kolayla ıyor.ş

Processing 'i https://processing.org/download/ adresinden

indirebilirsiniz.Ki isel bir tavsiye olarak eger 64 bit windows ş

kullanıyorsanız Processingîn

Page 70: Arduino Kitap

( lerde bir iki örnekle processing'i anlat)İ

PROJELER

Page 71: Arduino Kitap

• Proje-1Aslında ilk projelerimizi yapmı olmakla birlikte burda ise ş

sadece proje bazlı anlataca ım.ğ

LED yakıp söndürdügümüz için ilk projemiz biraz daha yine

led'lerle alakalı olup biraz daha kullanı lı bir proje olacakş

Trafik LambasıProjemizin adından anla ılacı ı üzere trafik lambası ş ğ

yapaca ız.ğ

Neye ihtiyaçın var

1. BreadBoard

2. 1'er adet kırmızı ,sarı ve ye il ledş

3. Jumper kablo

Page 72: Arduino Kitap

Devremizi ekildeki gibi ba ladıktan sonra tek yapmamız ş ğ

gereken kodu yüklememiz.

Kod

Page 73: Arduino Kitap
Page 74: Arduino Kitap