You are on page 1of 74

Arduino programlama

nsz
iki blmden oluan bu kitapta birinci blm Arduino
nedir,ne deildir ve programlama iin referans
ksmndan oluurken ikinci ksm ise Arduino ile
yaplm projelerden oluuyor.Kitabn amac
Arduino'ya yeni balayanlar iin basit anlalr bir
kaynak sunmak.
Lisans
Bu belgeyi, Open Publication Licence lisansnn 1.0 ya da
daha sonraki srmnn koullarna bal kalarak
kopyalayabilir, databilir ve/veya deitirebilirsiniz. Bu
Lisansn zgn kopyasn
http://www.opencontent.org/openpub/ adresinde
bulabilirsiniz.

Not: Burdaki notlarla ilgili grdgnz bir sorun ve


nerileriniz iin nazrdogan@gmail.com mail
atabilirsiniz.

iindekiler
nedir?
1. Fiziksel Programlama nedir?
2. Arduino Nedir?
3. Neden Arduino?
4. Arduino eitleri ve Shield'leri
5. Arduino Kurulum

Programlama
Temel
1. Arduino Programlama dilinin Kod yaps
2. Minimum Arduino Sketch'i
3. ilk Arduino Program
4. Referanslar

Projeler
1. proje
2. proje
3. proje
4. proje
5. proje
6. proje
7. proje
8. proje
9. proje
10.proje

Nazr DOAN

www.gereksizcoder.wordpress.com
V.0.1

Fiziksel Programlama
Fiziksel programlama yazlm ve donanm kullanarak
analog d dnyayla veri alverii yapan fiziksel tasarlama
iine verilen isimdir.Sensorler yardmyla d dnyayla
iletiime geilir.Analog olan veriler dijitale aktarlr ve yazlm
sayesinde ne yaplacagna karar verilir.

Arduino Nedir?

Arduino fiziksel dnyay alglayan ve kontrol edebilmek


iin kullanabileciginiz basit bir bilgisayardr. Basit bir
mikroilemci ve yazlm yazmak iin bir gelitirme ortamna
sahip basit bir fiziksel hesaplama platformudur.

Arduino anahtarlar ,sensorleri,motorlar ve diger fiziksel


klar kontrol etmek ve etkileimli nesneler gelitirmek iin
kullanlabilir. Arduino projeleri tek bana gelitirebilir yada
bilgisayar zerinde alan yazlmlara baglanabilir .
(Flash,Processing vb..)
Arduino ak kaynak bir gelitirme ortamna sahip olup
Processing yazlmndan yola karak yazlmtr.
Kendi board'unuzu yapabileceginiz gibi tamamen hazr
alabilirsiniz.ve tamamen ak kaynak kodlu bir IDE'ye sahiptir

Neden Arduino ?
Fiziksel ortam iin birok mikrokontrolr ve
mikrokontrolr platformu mevcuttur. rnegin Parallax Basic
Stamp,Netmedia's BX-24,Phidgets,MIT's Handyboard vs..
birogu ayn fonksiyona sahiptir. Fakat hepsinin
programlanmas olduka zordur.Arduino ise programlamay
olduka kolay hale getirir.grenciler ve amatrler iin byk
avantajlar saglar.
Nedenler ise

Ucuz olmas-Arduino diger platformlarla karlatgnda


daha ucuzdur.ayrca kendiniz yapabilirsiniz.

apraz platform olmas-Arduino Linux,Windows ve


MacOs ta alabilir.ogu mikrokontrolr sistemi
Windows'la snrldr.
Basit ve Ak Programlama Ortam-Arduino yazlm yeni
balayanlar iin olduka kolay bir ortam sunar.
Ak Kaynak olmas-Benim dncem en nemli
sebeptir.Gereksiz bir ok yazlma para vermekten
kurtarr ve devaml geliebilen bir ortam sunar.

Arduino eitleri ve Shield'leri


Arduino UNO
Arduino Uno ATMEGA 328 temelli bir board'dur. 14 tane
dijital giri/k (G/) (6 tanesi PWM iin kullanlabilir)
pinine sahiptir.6 tane analog giri ve 16 Mhz seramik
resonator'e bulunmaktadr.USB baglants sayesinde kolayca
yazdgnz kodu ykleyip altrabilirsiniz. Ayn zamanda
USB balantsn g iinde kullanabilirsiniz.
Ya da zerinde bulunan G girii ile bir g kaynana
balayabilirsiniz.Bir adette ICSP baglants bulunmaktadr.
zet olarak
Mikrokontroller

ATMEGA 328

alma Voltaj

5V

Giri Voltaji (tavsiye edilen)

7-12V

Giri Voltaj (limit)

6-20V

Dijital G/

14 (6 tanesi PWM destekliyor)

Analog Giriler

DC akm her pin'de

40mA

3.3V pin iin DC akm

50mA

Flash Hafza

32KB

SRAM

1KB

EEPROM

1KB

Saat Hz

16MHz

Arduino Uno'dan bahsettikten sonra Uno'nun nemine

gelelim.Uno,Arduino programlamaya yeni balayanlar iin


biilmi kaftandr.Hem diger board'lara nazaran ucuz oluu
her yerde bulunabilir olmas ve Arduino shield'lerin hemen
hemen hepsiyle uyumlu olmas nedeniyle tercih sebebidir.

Arduino MEGA 2560


Arduino Mega 2560 ATMEGA 2560 temelli bir board'dur.
54 tane dijital G/ (15 tanesi PWM iin kullanlabilir).16 tane
analog giri ve 4 UART(donanm seri portu)
bulunmaktadr.16 MHz kristal osilator,USB baglant ve g
giriine sahiptir.ICSP baglants ve reset butonu bu board'da
mevcuttur.

zet olarak
Mikrokontroller

ATMEGA 2560

alma Voltaj

5V

Giri Voltaji (tavsiye edilen)

7-12V

Giri Voltaj (limit)

6-20V

Dijital G/

54(15 tanesi PWM destekliyor)

Analog Giriler

DC akm her pin'de

40mA

3.3V pin iin DC akm

50mA

Flash Hafza

256KB

SRAM

8KB

EEPROM

4KB

Saat Hz

16MHz

Arduino Mega'nn zelliklerinden bahsettikten sonra ise


Mega neden nemli bir boarddur ondan bahsedelim.
Arduino Mega hafza ve pin saysndan dolay daha byk
projeler iin ideal bir boarddur .Uno'nun yetmedigi projeler
iin kullanlabilir.
Mega,Uno iin tasarlanm bir ok shield ile uyumludur.

Diger Arduino Board'lar


Burada btn Arduino Boardlarndan bahsetmem okta
mmkn degil Muhtemelen ben bu yazy yazarken yeni bir
ok board tasarlanmaktadr . :)
Sadece isimlerini ve birka zelliini yazarak gemek
istiyorum.

lk ve tek 32 bit Arduino DUE

Arduino Nano ve Mini

Arduino ESPLORA ve Leonardo

Lilypad

Shield'ler
Shield'leri tantmadan nce shield nedir onun zerinde biraz
durmak istiyorum.Shield'ler Arduino boardumuzun zerine
kolayca taklp yapmak istediimiz projeyi dahada kolay
yapmamz saglayan ek board'lardr.
Arduino'nun resmi olarak birok shield'i bulunmaktadr.ama
ak kaynak olmasndan dolay gelirtiriciler kendi

shield'lerini tasarlayp satmakta veya kullanmaktadr.


Resmi Arduino Shield'lerinden Bazlar
GSM shield

Ethernet Shield

Wireless SD Shield

Motor Shield

Xbee

Arduino Windows Kurulumu


ncelikle

www.arduino.cc sitesinden arduinonun

bilgisayarmzn iletim sistemine uygun IDE'yi indiriyoz.


ndirdikten sonra ise yapmamz gereken Arduino'yu
bilgisayarmza balayp tantmak.
Bunu ekran grntleriyle anlatmak daha kolay sanrm. :)

Eger bu ekran grntlerindeki admlar izlerseniz


.Arduino'yu sorunsuz olarak bilgisayarnza tantmsnzdr.

Linux zerinde Arduino


Eger sizde benim gibi bir Ubuntu kullancsysanz Ubuntu
Software Center'dan direk olarak kurabilirsiniz.Ya da
Arduino'nun sitesinden linux iin olan versiyonunu indirip
direk olarak altrabilirsiniz .Benim kiisel nerim ise bir
linux datm kullanmanzdr.Bir neden gstermek gerekirse
64 bit Windows zerinde Processing(daha ilerde
bahsedeceim) seri monitor'u kullanamamanzdr.

PROGRAMLAMA
Arduino kod yaps
Eger bir programlama diliyle uratysanz Arduino size
olduka kolay gelecektir. Hi ugramadysanz ise
korkmanza gerek yok.Arduino'yu en temel seviyeden

anlatacam.Bu sayede programlamaya ilinizi artrp


yazdnz kodlar altrp gznzle grdgnz iin
normal bir bilgisayar programlama dilinden daha kolay
reneceksiniz.
Eger C ailesinden bir dili ile ugratysanz Arduino dilini
anlamanz daha kolay olacaktr.nk Arduino dili C dilinden
esinlenmitir. Ve C++ ile ktphane yazabilir bunlar
kullanabilirsiniz.

Minimum Kod

Fazla uzatmadan artk programlamaya balamak


istiyorum.dedigim gibi Arduino olduka kolay en bata bunu
aklmzda tutalm.Zaten felsefesi kolay olmak. :)

Arduino kodunun alabilmesi iin minimum iki tane


methoda ihtiyacmz var bunlar

setup() ve loop()

methodlardr.

Setup()
Bu fonksiyon sketch'in(her bir Arduino almasna verilen
ad) baladn gsterir. Bu fonksiyonun iinde deikenler
ve pinler tanmlanr.Ktphaneler kullanlmaya balanr. Bu
fonksiyon Arduino altgnda veya resetlendiinde bir
defa alr.

Loop()

Bu fonksiyon ise

Setup() fonksiyonunda tanmlanan G/

birimlerinin kontroln bizim yazdgmz koda gre yapar.


rnegin bir led'e ne kadar sre yanp ne kadar
yanmayacagn burda yapabiliriz .yada bir LDR yardmyla
gn iddetini lebiliriz.Loop() fonksiyonu Arduino
almaya baladktan sonra devaml olarak alr.devaml
olarak baa dner ve dngy devam ettirir.

lk Arduino Sketch'i
Buraya kadar Arduino nedir ne degildir diye bahsettim .Artk
kodlamaya gemenin zaman geldi .
lk kodumuzda bir Led'i yakp sndrecegiz.
Devremizi ekildeki gibi kurduktan sonra tek yapmamz
gereken yazdgmz kodu boarda yklemek.

Eer yukardakilar eksiksiz yaptysanz u an arduino

board'unuzda led'in yanp sndgn grmelisiniz.


Eer olmadysa bu ilemlere tekrardan gz atmanzda
fayda var. :)

Seri Dijital Okuma


Baz eylerin Trkesini tam bir evirisi olmadndan ya da
benim bilmediimden dolay byle eviriler olabilir.
Bu rnekte ise buton'un durumunu yani ak m kapalm
onu Arduino board'umuzla seri ileitimini salayacaz.

Gerekli Donanmlar
Arduino Board
Buton
10k ohm diren
Devre Tahtas(Breadboard)
Kablo

Yukardak gibi butonu ve direni bagladktan sonra


yapmamz gereken sadece kodumuzu board'a yklemek.
Kodu File=>Examples=>Basics=>DigitalSerialRead yolunu
izleyerek aabilirsiniz

Daha sonra yapmanz gereken Seri Monitor'u ap dijital


1 ve 0 'lar grecegiz. Eger devre aksa 0 ,deilse 1 'i
grecegiz.
Seri Monitor nerede diyorsanz aadaki resimde

grebilirsiniz.

Analog Seri Okuma


Bu rnekte ise potansiyometre ile fiziksel dnyadan analog
veriler okuyacaz.ncelikle potansiyometrenin ne
oldugundan biraz bahsedelim .potansiyometre basite bir
eksen zerinde dnen ayarl direntir.

Gerekli Donanmlar
Arduino
10 Kohm Potansiyometre

ekildeki gibi baladktan sonra tek yapmanz gereken


Board'da kodu yklemek.
Kodu File=>Examples=>Basics=>AnalogSerialRead yolunu
izleyerek aabilirsiniz.

Kodu ykledikten sonra Seri Monitor'u ap neler


dndgne bakabilirsiniz. Eer potensiyometreyle
oynarsanz deerlerin degitigini greceksiniz.Arduino'da
bulunan ADC (analog to digital Converter) sayesinde 0-1023
arasnda saylara dntgn grebilirsiniz.

Buraya kadar basite analog ve digital kavramlarn


anladnz varsayarak artk programlamaya balamak

istiyorum.

Sabitler ve Veri Tipleri


Sabitler Arduino dilinde ntanml olarak bulunmaktadr.
Bu sabitler programmzn daha kolay okunmasn salar.

Boolean Sabitleri
Eer az ok dijital elektronikle uratysanz Boolean
Matematiinden haberdar olmalsnz.
Boolean sabitleri 1 ve 0 'dr .Arduino'da ise true ve false 'dir.
Burda 0 false 1 ise true anlamna gelmektedir.

Pinlerin Durumlarn Belirleme


Arduino pinlerinden okuyabileceimiz yada yazabileceimiz
iki tane deger vardr. Bunlar

HIGH ve LOW 'dur.Burda

HIGH voltajn var oldugunu LOW ise olmadgn gsterir.


digitalWrite( pin,HIGH) veya digitalWrite(pin,LOW)
eklinde kullanabiliriz.

Veri Tipleri
void
Void kelimesi sadece fonksiyon tanmlanrken kullanlr.

Bu fonskiyon agrldnda

hibir deer dndrmez.

rnegin
void setup()
{
// ...
}
void loop()
{
// ...
}

boolean
boolean'dan daha nce bahsettiim iin zerinde
durmayacam .

char

1 bayt'lk bir karakter deeri saklayan veri trdr.


rnek
char karakter='A';
Eer birden ok karakter iin
char karakter=ABC;
eklinde kullanllabilir.
Char (Karakterler) say olarakta tutulabilir.ASCII tablosuna
gz atmanz lazm.
rnek
char karakter='A';
char karakter=65;
Eger ASCII tablosuna gz attysanz A nn saysal degerinin
65 oldugunu grebilirsiniz.

unsigned char
Unsigned Char hafzada 1 baytlk yer tutar.byte ile
ayndr.
0-255 arasndaki saylar encode eder.
Byte
Byte , 0-255 arasnda hafzada 8 bit unsigned say tutar.
int

int veri tipi say tutmak iin kullanlan birincil veri tipidir.
-32,768(-2^15)-32,767(2^15-1) aralnda deger
alr.Hafzada 2 baytlk yer tutar.
rnek
int ledPin=13;
unsigned int
unsigned int ile int fark ise unsigned int negatif deger
tutmaz.sadece pozitif deger alr.

-65,535(2^16-1) arasndadr.int gibi hafzada 2 baytlk


yer tutar.
Word
word ,0-65535 arasnda 16 bit unsigned say
tutar.Unsigned int ile ayndr.
Long
Long,say tutmak iin geniletilmi veri tipidir.
-2,147,1483,648-2,147,483,647 arasnda 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 deerler almasdr.
0-4,294,967,295(2^32-1) aralndadr.

short
Short 16 bit'lik bir veri tipidir.
-32,768(-2^15) -32,767(2^15-1) arasndadr.
Float

Float, decimal saylar iin kullanlan veri tipidir. Float veri tipi
daha ok analog ve devam eden deerlerde daha byk
znrlk elde etmek iin kullanlr.Deer aral
-3,4028235E+38 ile 3,4028235E+38 arasndadr. 32 bit
(4 bayt) say tutar. Float virgulden sonra 6-7 basamaa
sahiptir.
Double
Float'la ayn ii grr.
array(dizi)
Dizi ,bir dizin numaras ile eriilen degikenlerin
topluluudur.
Bir Dizi(Array) oluturmak
int Dizi=[6];
int Pinler [ ]={2,4,8,7,6};
char mesaj[6]=hello;

Dizinin bir elemanna deer atamak


mySensVals[0]=10;
Dizinin bir elemanndan deer almak
x=mySensVals[4];
Dizi ve For Dngs
int i;
for(i=0; i<5; i++)
{
Serial.println(myPins[i]);
}

OPERATRLER
Aritmetik Operatrler
= atama operatr

+ toplama operatr
- karma operatr
* arpma operatr
/

blme operatr

% mod(artk blme)

Karlatrma Operatrleri
== eittir operatr
!= eit degil operatr
< kktr operatr
> byktr operatr
<= kk veya eittir
>= byk veya eittir

Boolean Operatrleri
&& AND (ve ) operatr
if deyiminde kullanlabilir.
rnek
if (digitalRead(2) == HIGH && digitalRead(3) == HIGH)
{
// read two switches
// ...
}

||

OR (veya ) operatr

if (x > 0 || y > 0) {
// ...
}

NOT (degil ) operatr

if (!x) {
// ...}

Bitwise Operatrleri
& (bitwise and)
| (bitwise or )
^ (bitwise xor)
~ (bitwise not)
<< (bitwise left)
>> (bitwise right)
Birletirme Operatrleri
++ artrma
--

azaltma

+= ekleyerek atama
-= eksilterek atama
*= arparak atama
/= blerek atama
%= blp kalan atama
&=

|=

Fonksiyonlar
Dijital G/
pinMode()
Bir giri(input) ya da k(output) olarak belirtilen pin'i
yaplandrr.
Szdizimi
pinMode(pin,Mode)
pin:Ka numaral pin'i ayarlamak istiyorsak onu yazyoruz.
Mode: INPUT,OUTPUT veya INPUT_PULLUP durumlarndan
birini yazyoruz.
rnek
pinMode(led,OUTPUT);

DigitalWrite()
HIGH veya LOW degerini pin'e gnderen fonksiyondur.

Eer voltaj 5V veya 3.3V ayarlanma HIGH degeri iin


bu degeri gnderir.LOW iin ise 0V gnderir.

digitalRead()
Pin'in degerini okur .HIGH veya LOW olabilir.
deger = digitalRead(inPin);

Analog G/
analogReference()
Analog giri olarak kullanlan referans gerilimini
yaplandrr.Seenekler ise unlardr
DEFAULT:varsaylan analog 5V veya 3.3 Volt
INTERNAL:1.1 volt Atmega168 veya ATMEGA328 de
2.56 Volttur.
EXTERNAL: AREF pin uygulanan voltajdr.0-5V arasnda
kullanlr.

analogRead()
Belirtilen analog pin deerini okur .Arduino 6 kanal (8
kanal Mini ve Nano,16 kanal Mega) ,10 bit ADC(Analog
Digital Converter).Bu u anlama gelmektedir. 0 -1023
arasndaki tamsay deerlere 0 ile 5 volta aras giri
gerilimleri ile eleir. 5Volt/1.024 birim veya birim bana
0,0049. Yani Arduio'nun okuduunuz Analog degeri bu say
ile arparak Voltaji bulabilirsiniz.
Bir analog giri okumak iin yaklak 100

mikrosaniye(0,0001 ) alr. En yksek okuma orani ise


saniyede 10,000 defadr.

AnalogWrite
Analog deeri belirtilen pin'e yazar.LED'lerin
parlaklgn ayarlamak veya Motorlar farkl hzlarda
srebilirsiniz.Kare dalga retir.PWM sinyal frekans
yaklak olarak 490Hz'dir.
ogu Arduino Board'unda bu fonksiyon 3,5,6,9,10 ve 11
numaral pinlerle alr.Sadece Mega board'ta 2 den 13
e kadardr.
Szdizimi
analogWrite(pin,value)
Parametre
pin: pin'in numaras
value: 0(kapal)-255(ak) arasndaki degerler
rnek

Zaman
millis()
Arduino'da ykl mevcut olan program balamasndan
sonra milisaniye deerinde say dndrr.Yaklak 50

gn sonra overflow(tama ) olacaktr.


rnek

micros()
Arduino'da ykl mevcut olan program balamasndan
sonra mikrosaniye deerinde say dndrr.Yaklak 70
dakika sonra overflow olacaktr.
rnek

delay()
Program belirtilen sre kadar durdurur. Birimi
milisaniyedir. 1000 milisaniye 1 saniyedir.
Szdizimi
delay(ms)
rnek

delayMicroseconds()
Program belirtilen sre kadar durdurur. Birimi
mikrosaniyedir. 1000 mikrosaniye 1
milisaniyedir.Saniyenin milyonda bir'i kadardr.
Szdizimi

delayMicroseconds(us)
rnek

Matematik
min()
iki saydan kk olan geri dndrr.
rnek
SensValue=min(Sens,100) // burda devaml kk olan
degeri geri dndrecektir. Yani 100 e kadar Sens
degerini alacak 100 den sonra ise hep 100 degerini
dndrecektir.

Max()
iki saydan byk olan geri dndrr.
rnek
SensValue=max(sens,20) // burda ise devaml byk olan
deeri dndrecektir.Yani 20 ye kadar hep 20 sonrasnda ise
sens deerini dndrecektir.

Abs()
saynn mutlak deerini geri dndrr.

Constrain()
Sayy bir aralkta snrlar.
rnek
sensVal=constrain(sens,10,160); // deikenin deeri en
kk 10 en yksek 160 olabilir.

Map()
Map fonksiyonu saynn araln baka bir arala
tamaya yarar.
y=map(x,1,50,50,1) // burda birinci dk degeri 1 iken
50 olmu ikinci degeri ise 50 iken 1 olmutur.

Pow()
Saynn kuvvetini hesaplamaya yarayan fonksiyondur.
Szdizimi
pow(taban,zeri)

sqrt()
Saynn karekkn hesaplayan fonksiyondur.
Szdizimi
Sqrt(x)

Trigonometri

sin()
cos()
tan()
Rastgele(Random) Saylar
randomSeed()
random
Bit'ler ve Bayt
lowByte()
highByte()
bitRead()
bitWrite()
bitSet()
bitClear()
bit()

letiim
Serial
Arduino board'nun bilgisayar veya dier cihazlarla
iletiimi iin kullanlr.Btn Arduinp board'larnda en az
bir tane Seri port bulunmaktadr.(Genellikle UART ve
USART diye bilinirler).Seri port USB yardm ile dijital
pinler zerindeki 0 (RX ) ve 1 (TX) kullanarak haberleir.

Fonksiyonlar
available()
Seri porttan okumak iin kullanlabilir bayt saysn alr.
Szdizimi
Serial.available()
rnek
begin
Seri veri iletimi iin saniyedeki bit (baud) hzn ayarlar.
300,600,1200,2400,4800,9600 ,
14400,19200,28800,38400,57600,115200 degerlerinden
birini alr.
Szdizimi
Serial.begin(hz)

end()
Seri iletiimi devre d brakr.pinleri genel giri ve k
olarak kullanmaya izin verir. Yeniden iletiime gemek
iin Serial.begin() kullanlr.
Szdizimi

Serial.end()
Find()
Verilen uzunlukta veri bulunana kadar tampon verileri
okur.Hedef dize,yanl zaman veya olmadg bulunursa
ilevi true degerini dndrr.
Szdizimi
Serial.find(hedef)
findUntil()
Belirli bir uzunlukta veya sonlandrc bir dize bulunana
kadar Serial.findUtil() tampon verilerini okur.
Szdizimi
Serial.findUtil(hedef,terminal)
Flush()
Giden Seri verinin tamamlanmasn bekler.
Szdizimi
Serial.flush()
parseFloat()
Seri verinin virgulden sonrasnda geri
dndrr.Basamak (veya eksi iareti) olmayan
karakterler atlanr.
Szdizimi

Serial.parseFloat()
parseInt()
Seri veride bir sonraki geerli tam sayy arar.
Sz dizimi
Serial.parseInt()
peek()
print
Seri port'tan ald verileri ASCII tablosundaki karlg
eklinde yanstr. Bu komut birok 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
gstermesidir.Veri bittiginde dier veriyi bir alt satrda
gsterir.
Szdizimi

Serial.println(deer)
Serial.println(deer,format)
Read()
Gelen seri veriyi okur.
Szdizimi
Serial.read()
readBytes
readBytesUntil()
setTimeout()
write
Seri port'a ikilik verileri yazar.Bu veri bayt bayt veya dizi
olarak gnderilir.
Szdizimi
Serial.write(val)
rnek

Stream
Kontrol Yaplar

if ve if ...else
if ve else koullu ilem yapan deyimlerdir.if ve else tek
bir karlatrma deyimi olup else kullanm istege
baldr.Eer koul doru ise if den sonraki blm
yrtlr. Else'den sonraki blm atlanr.
rnek-1
if(degisken>50)
{
digitalWrite(ledPin,HIGH)
}

rnek -2
if(degisken>500)
{
digitalWrite(ledpin,LOW)
}
else
{
digitalWrite(ledpin,HIGH)
}

for
Bu deyim, dier dng deyimleri gibi bir kmeyi bir ok
kez tekrarlamak iin kullanlr. Koul snamas while da
olduu gibi dngye girmeden yaplr. Bu dng
deyimin iinde dierlerinden farkl olarak balang
deeri ve dng sayacna sahip olmasdr.

rnek
int PWMpin = 10; // led digital 10 'a balanr.
void setup()
{
// no setup needed
}
void loop()
{

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


analogWrite(PWMpin, i);
delay(10);
}
}

switch case
Bu deyim bir deikenin ieriine bakarak, programn
akn bir ok seenekten birine ynlendirir. case
(durum) deyiminden sonra deikenin durumu belirlenir
ve takip eden gelen satrlar (deyimler) ileme konur.
Btn durumlarn aksi sz konu olduunda
gerekletirilmesi istenen deyimler default deyiminden
sonraki ksmda bildirilir.
rnek
switch (degisken) {
case 1:
//deiken 1 eit oldugunda yrt
break;
case 2:
//deiken 2 eit oldugunda yrt

break;
default:
// Hibiri ile elemez ise yrt
// default deyimi opsiyoneldir.
}

while
Tekrarlama deyimidir. Bir kme ya da deyim while
kullanlarak bir ok kez yinelenebilir. Yinelenmesi iin
koul snamas dngye girilmeden yaplr. Koul olumlu
olduu srece evrim yinelenir.

rnek
degisken = 0;
while(degisken < 200){
// 200 defa kodu yrtr.
degisken++;
}

do....while
Bu deyimin while deyiminden fark, koulun dng
sonunda snanmasdr. Yani koul snanmadan dngye
girilir ve dng kmesi en az bir kez yrtlr. Koul
olumsuz ise dngden sonraki satra geilir.
rnek
do
{
delay(50);

//sensor stabilizisyanu iin bekle

x = readSensors(); // Sensoru oku


} while (x < 100);

break
Bir Arduino programnda, bir ilem gerekletirilirken,
ilemin sona erdirilmesi bu deyim ile yaplr. rnein,
dng deyimleri iindekiler yrtlrken, evrimin,
kouldan bamsz kesin olarak sonlanmas gerektiinde
bu deyim kullanlr.
rnek
for (x = 0; x < 255; x ++)

{
digitalWrite(PWMpin, x);
sens = analogRead(sensorPin);
if (sens > threshold){
x = 0;
break;
}
delay(50);
}

continue
Bir dng ierisinde continue deyimi ile karlalrsa,
ondan sonra gelen deyimler atlanr ve dng bir sonraki
evrime girer.
rnek
for (x = 0; x < 255; x ++)
{
if (x > 40 && x < 120){
continue;
}

// create jump in values

digitalWrite(PWMpin, x);
delay(50);
}

return
Fonksiyon'u sonlandrmak veya deger dndrmek iin
kullanlr.
rnek
int checkSensor(){
if (analogRead(0) > 400) {
return 1;
else{
return 0;
}}

goto
Programn herhangi bir yerinden baka bir yerine atlamak
iin goto deyimi kullanlr.
rnek
for(byte r = 0; r < 255; r++){
for(byte g = 255; g > -1; g--){
for(byte b = 0; b < 255; b++){

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


// more statements ...
}
}
}
bailout:

FRITZING
Fritzing ak kaynak kodlu gelitirilen devre tasarm
programdr.Fritizng iinde bulunan Arduino board'laryla
(diger board'larda mevcut) ve temel devre elemanlaryla
devrenizi abuk prototip retmenizi saglar.Fritzing'i
kullanmak iin ok fazla Bir ey bilmenize gerek yok devre
elemanlarn srkle brak ile alma alannza alp
kullanabilirsiniz.

Fritzing www.fritzing.org adresinden iletim sisteminize


uygun olan versiyonunu indirebilirsiniz.Ayrca fritzing
Windows ,Linux ve Mac OS X almaktadr.

PROCESSING
Processing, resim, animasyon ve etkileim yntemleri
gelitirebileceiniz ak kaynak bir programlama dili ve
ortamdr. okluortam malzemeleriyle (resim, video ve ses
gibi) sorunsuz alabilir, ileyebilir. Grsel bir kt zerinden

hareket ederek bilgisayar programlamann prensipleri ve


temellerini disiplin d kiilerinde ok rahat ve hzl bir
ekilde renmesine olanak salar. O nedenle birok
aratrmac, renci, tasarmc ve sanat tarafndan tercih
edilen bir programlama dilidir. Kendi yaptklar profesyonel
ilerinde prototip uygulama, sergi esi veya ilerinin
niteliklerini artracak nitelikte kullanmaktadr. Processing bu
kadar farkl amalarda farkl insanlarn tercih etme
sebeplerini sralayacak olursak;
Ak kaynak ve tm iletim sistemleri ile sorunsuz
alabilmesi
2D ve 3D ile sorunsuz alabilme bu grntler
zerinde kolay ve hzl etkileim yaratabilme (gelimi
2D ve 3D ktphaneleri)
Uygulama iersinden basit ve kolay PDF ktlar alabilme
(zengin PDF ktphaneleri)
OpenGL entegrasyonu ile 3D motor kullanm
Ses, video bata olmak zere 100den fazla ktphane
ile birok oklu ortam esi ile sorunsuz alabilme
Web ve masastde alabilir uygulamalar
yaratabilme
Andorid destei

Sadece processing iin zelletirilmi bir programlama


ortam (PDE Processing Development Enviroment)
Geni kaynak eriimi (Gncel ve eksiksiz
dokmantasyon ve zel gereksinimler zerine yazlm
oka sayda kitap)

Processing'den bahsetmemin nedeni Arduino ile Seri veri


iletimi sayesinde Data Visualization kolayca yaplabilmesidir.
Processing ile zaten zevkli olan Arduino programlama daha
zevkli hale geliyor.Birok projeniz grsel anlamda daha
gze hitap edecek hale geliyor ve insanlarn anlamas
kolaylayor.
Processing 'i https://processing.org/download/ adresinden
indirebilirsiniz.Kiisel bir tavsiye olarak eger 64 bit windows
kullanyorsanz Processingn

(lerde bir iki rnekle processing'i anlat)

PROJELER

Proje-1
Aslnda ilk projelerimizi yapm olmakla birlikte burda ise
sadece proje bazl anlatacam.
LED yakp sndrdgmz iin ilk projemiz biraz daha yine
led'lerle alakal olup biraz daha kullanl bir proje olacak

Trafik Lambas
Projemizin adndan anlalac zere trafik lambas
yapacaz.
Neye ihtiyan var
1. BreadBoard
2. 1'er adet krmz ,sar ve yeil led
3. Jumper kablo

Devremizi ekildeki gibi baladktan sonra tek yapmamz


gereken kodu yklememiz.

Kod

You might also like