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 alma Voltaj Giri Voltaji (tavsiye edilen) Giri Voltaj (limit) Dijital G/ Analog Giriler DC akm her pin'de ATMEGA 328 5V 7-12V 6-20V 14 (6 tanesi PWM destekliyor) 6 40mA

3.3V pin iin DC akm Flash Hafza SRAM EEPROM Saat Hz

50mA 32KB 1KB 1KB 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 alma Voltaj Giri Voltaji (tavsiye edilen) Giri Voltaj (limit) Dijital G/ ATMEGA 2560 5V 7-12V 6-20V 54(15 tanesi PWM destekliyor)

Analog Giriler DC akm her pin'de 3.3V pin iin DC akm Flash Hafza SRAM EEPROM Saat Hz

6 40mA 50mA 256KB 8KB 4KB 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 methodlardr.

setup() ve loop()

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 rnegin void setup() { // ... } void loop() { // ... }

hibir deer dndrmez.

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. 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. 0 -65,535(2^16-1) arasndadr.int gibi hafzada 2 baytlk

short Short 16 bit'lik bir veri tipidir. -32,768(-2^15) -32,767(2^15-1) arasndadr. Float 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;

Float, decimal saylar iin kullanlan veri tipidir. Float veri tipi

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