Arduino programlama
ö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
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
Projeler
1. proje 2. proje 3. proje 4. proje 5. proje 6. proje 7. proje 8. proje 9. proje 10.projeNazır DO AN
Ğ
www.gereksizcoder.wordpress.com
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 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
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.ş
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ş
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.
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
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.
lk ve tek 32 bit Arduino DUE İ
Arduino Nano ve Mini
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 ş
shield'lerini tasarlayıp satmakta veya kullanmaktadır.
Resmi Arduino Shield'lerinden Bazıları
GSM shield
Ethernet Shield
Wireless SD Shield
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.ğ
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 ş
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.
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()
veloop()
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.ş
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 kadaryanmayacagı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. ş
İ
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.
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
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
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.
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.
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.
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 ğ ş
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
veLOW
'dur.BurdaHIGH voltajın var oldugunu LOW ise olmadıgını gösterir.
digitalWrite( pin,HIGH) veya digitalWrite(pin,LOW) eklinde kullanabiliriz.ş
Veri Tipleri
• void
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 . ğ
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 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. ğ
• 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”;
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ü
•
+ 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
ş
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) { // ...}
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 • &=
• |=
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()
E er voltaj 5V veya 3.3V ayarlanmı a HIGH degeri için ğ şş bu degeri gönderir.LOW için ise 0V gönderir.
•
digitalRead()
Pin'in degerini okur .HIGH veya LOW olabilir. deger = digitalRead(inPin);
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.
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 ğ ş
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
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()
•
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)
•
sin()
•
cos()
•
tan()
Rastgele(Random) Sayılar
•
randomSeed()
•
random
Bit'ler ve Bayt
•
lowByte()
•
highByte()
•
bitRead()
•
bitWrite()
•
bitSet()
•
bitClear()
•
bit()
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.ş
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.
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.
Serial.parseFloat() • parseInt()
Seri veride bir sonraki geçerli tam sayıyı arar. Söz dizimi
Serial.parseInt() • peek()
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.
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ı
•
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) }
•
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() {
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:
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++;
•
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
{ 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;
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++){
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 ş
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 ş ş
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
• 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
( lerde bir iki örnekle processing'i anlat)İ
•
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
Devremizi ekildeki gibi ba ladıktan sonra tek yapmamız ş ğ gereken kodu yüklememiz.