• No results found

Arduino Kitap

N/A
N/A
Protected

Academic year: 2021

Share "Arduino Kitap"

Copied!
74
0
0

Loading.... (view fulltext now)

Full text

(1)

Arduino programlama

(2)

ö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

(3)

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

Temel

1. Arduino Programlama dilinin Kod yapısı 2. Minimum Arduino Sketch'i

3. ilk Arduino Programı 4. Referanslar

(4)

Projeler

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

(5)

Nazır DO AN

Ğ

www.gereksizcoder.wordpress.com

(6)

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.

(7)

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

(8)

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.ş

(9)

Arduino Çe itleri ve Shield'leri

ş

Arduino UNO

Arduino 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ş

(10)

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.

(11)

Arduino MEGA 2560

Arduino 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

(12)

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.

(13)

lk ve tek 32 bit Arduino DUE İ

Arduino Nano ve Mini

(14)

Lilypad

Shield'ler

Shield'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 ş

(15)

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

Resmi Arduino Shield'lerinden Bazıları

GSM shield

Ethernet Shield

(16)

Wireless SD Shield

(17)

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.ğ

(18)
(19)
(20)
(21)
(22)

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 Arduino

Eger 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.ğ

PROGRAMLAMA

Arduino kod yapısı

Eger bir programlama diliyle u ra tıysanız Arduino size ğ ş oldukça kolay gelecektir. Hiç ugra madıysanız ise ş

(23)

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.

(24)

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.ş

(25)
(26)

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. ş

(27)

İ

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.

(28)
(29)
(30)

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 Okuma

Bazı 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

(31)

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

(32)

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.

(33)

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.

(34)

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.

(35)

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 ğ ş

(36)

istiyorum.

Sabitler ve Veri Tipleri

Sabitler Arduino dilinde öntanımlı olarak bulunmaktadır. Bu sabitler programımızın daha kolay okunmasını sa lar.ğ

Boolean Sabitleri

E 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ı Belirleme

Arduino 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

(37)

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 . ğ

(38)

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.

(39)

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. ğ

(40)

• 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”;

(41)

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ü

(42)

+ 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

ş

(43)

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) { // ...}

(44)

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 • &=

(45)

• |=

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()

(46)

E er voltaj 5V veya 3.3V ayarlanmı a HIGH degeri için ğ şş bu degeri gönderir.LOW için ise 0V gönderir.

(47)

digitalRead()

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

(48)

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.

(49)

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

AnalogWrite

Analog 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 ğ ş

(50)

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

(51)

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()

(52)

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)

(53)

sin()

cos()

tan()

Rastgele(Random) Sayılar

randomSeed()

random

Bit'ler ve Bayt

lowByte()

highByte()

bitRead()

bitWrite()

bitSet()

bitClear()

bit()

(54)

leti im

İ

ş

Serial

Arduino 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.ş

(55)

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.

(56)

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.

(57)

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.

(58)

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ı

(59)

if ve if ...else

if 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) }

(60)

for

Bu 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() {

(61)

for (int i=0; i <= 255; i++){ analogWrite(PWMpin, i); delay(10); } }

switch case

Bu 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:

(62)

break; default:

// Hiçbiri ile e le mez ise yürütş ş // default deyimi opsiyoneldir. }

while

Tekrarlama 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++;

(63)

do....while

Bu 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);

break

Bir 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

(64)

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

continue

Bir 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;

(65)

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++){

(66)

if (analogRead(0) > 250){ goto bailout;} // more statements ... } } } bailout:

FRITZING

Fritzing 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 ş

(67)

Fritzing www.fritzing.org adresinden i letim sisteminize ş uygun olan versiyonunu indirebilirsiniz.Ayrıca fritzing Windows ,Linux ve Mac OS X çalı maktadır.ş

PROCESSING

Processing, 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 ş ş

(68)

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

(69)

• 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

(70)

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

(71)

Proje-1

Aslı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

(72)

Devremizi ekildeki gibi ba ladıktan sonra tek yapmamız ş ğ gereken kodu yüklememiz.

(73)
(74)

References

Related documents

Income effects have no influence whatsoever on the reaL exchange rate under this production structure, so whether P increases because of a higher tariff t or a higher world price P

As stated in its 2007 Financial report, this beverage organization is the leading name in its line of business that manufactures, distributes and markets non-alcoholic drinks,

The Re- FOLD server is our first successful attempt at developing a method for directly fixing likely errors in any user supplied 3D models, using global quality assessment

The defendants filed a motion for summary judgment which was denied by the Court pending certification to the New Hampshire Supreme Court for a determination as to whether

Results from our field and laboratory studies evaluating insecticidal Cry1F Bt protein, as ex- pressed in maize hybrids and cotton varieties, in- dicate economical levels of

Međuspremnik topline u sustavu grijanja i pripreme potrošne tople vode s dizalicom topline služi za poboljšavanje pogonskih uvjeta, odnosno za smanj ivanje učestalosti uključivanja

• In patients with low-risk, superficial basal cell skin cancer, where surgery and RT are not feasible, therapies such as topical imiquimod, topical 5-fluorouracil,

Elementos cerámicos elaborados con incorporación de biosólido hasta un 10 %, pueden ser utilizados según la norma NTC 4205, como mampostería no estructural de uso interior para