1. ARDUİNO
http://www.flickr.com/photos/collinmel/2317520331/
Arduino Eğitimleri
Bölüm 3
Programlama Dili Temelleri
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
1
2. Arduino Dili
Neler Göreceğiz?
Arduino Programlama Dili
Veri Tipleri
Kontrol Yapıları
Döngüler
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
2
3. Arduino Dili
Arduino temel olarak Processing programlama diline
dayanıyor.
Söz dizimi (sentaks) olarak C / C++ / Java dillerine
benzer.
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
3
4. Arduino Dili
Satır sonlarında noktalı virgül (;) bulunuyor
Bloklar süslü parantezlerle { } tanımlanıyor.
// veya /* */ karakterleri ile yorumlar
yazılabilir.
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
4
5. İLK PROGRAMIMIZ
/*
Pin13’e bağlı olan LED saniyede bir
Yakılıp söndürülüyor.
*/
void setup() {
// 13. pini çıkış olarak ayarlıyoruz
// 13. pine Arduino kartında bir LED bağlı
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // LED’i yak
delay(1000); // Bir saniye bekle
digitalWrite(13, LOW); // LED’i söndür
delay(1000); // Bir saniye bekle
}
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
5
6. Arduino
Programlama
main() fonksiyonu bulumuyor. Onun yerine setup() ve
loop() var.
Setup bir kerelik, loop sürekli çalışan işlemler için.
delay() fonksiyonu ile gecikmeler oluşturuluyor
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
6
7. Veri Tipleri
Bütün işlemleri veri tipleri üzerinde
gerçekleştiriyoruz.
Verileri tutan belleklere “değişken” isimleri
vererek kullanıyoruz.
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
7
8. Değişkenler
Değişken isimleri
Türkçe karakter içeremez
Rakamlarla başlayamaz
Büyük – küçük harf duyarlıdır.
Programlama dilinin anahtar kelimeleri isim
olarak kullanılamaz
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
8
9. Veri Tipleri
Tam sayı tipler: (unsigned /signed) char, int, long
Kayar Noktalı Tipler: float, double
Karakter: char, string
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
9
10. Veri Tipleri
TİP BOYUT ARALIK
int 2 bayt -32768 ile 32767 arası
unsigned int 2 bayt 0 ile 65535 arası
long 4 bayt -2147483648 ile 2147483647
unsigned long 4 bayt 0 ile 4294967295 arası
char 1 bayt -128 ile 127 arası
byte 1 bayt 0 ile 255 arası
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
10
11. Veri Tipleri
TİP BOYUT ARALIK
float 4 bayt -3.4028235E+38 ile
3.4028235E+38
double 4 bayt -3.4028235E+38 ile
3.4028235E+38
boolean 1 bayt TRUE(1) veya FALSE(0)
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
11
12. Veri Tipleri
Tam sayı tipler: (unsigned /signed) char, int, long, short
Kayar Noktalı Tipler: float, double
Karakter: char, string
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
12
13. Veri Tipleri
Arduino 8 bitlik bir mikrodenetleyiciye sahip
Kısıtlı bir belleğe sahip olduğundan veri tiplerini doğru
kullanmak önemli
Noktalı-sayılar fazla işlem gücü gerektiriyor!
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
13
14. Veri Tipleri
UYGULAMA
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
14
15. Veri Tipleri
Diziler
Aynı tipte birden fazla değişken gerekli olduğunda
diziler kullanılabilir
int dizi[10]; // 10 elemanlı bir int dizisi
float ondalikDizi[5]; // 5 elemanlı bir float dizisi
char karDizi[] = {'A','R','D','U','I','N','O'};
int sayiDizisi[] = {1,2,3,4,5,6,7};
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
15
16. Veri Tipleri
2 boyutlu Diziler
int dizi[4][5]; // 4x5 elemanlı bir int dizisi
Sütun 0 Sütun 1 Sütun 2 Sütun 3 Sütun 4
Satır 0 dizi[0][0] dizi[0][1] dizi[0][2] dizi[0][3] dizi[0][4]
Satır 1 dizi[1][0] dizi[1][1] dizi[1][2] dizi[1][3] dizi[1][4]
Satır 2 dizi[2][0] dizi[2][1] dizi[2][2] dizi[2][3] dizi[2][4]
Satır 3 dizi[3][0] dizi[3][1] dizi[3][2] dizi[3][3] dizi[3][4]
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
16
17. Veri Tipleri
Diziler
int ikiBoyutluDizi[4][5]; // 4x5 elemanlı bir int dizisi
int ikiBoyutluDizi[4][5]= { {1, 2, 3, 4, 5},
{11, 12, 13, 14, 15},
{10, 20, 30, 40, 50},
{-1, -2, -3, -4, 890 }};
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
17
19. Değişkenlerin
Faaliyet Alanları(scope)
Değişkenler program içerisinde geçerli oldukları
alanlara göre global veya lokal değişkenler olarak
ikiye ayrılabilirler
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
19
20. Değişkenlerin
Faaliyet Alanları(scope)
/* Global değişkenlerin tanımlı olduğu bölge*/
void setup() {
/* Yerel değişkenlerin tanımlı olduğu bölge*/
}
void loop() {
/* Yerel değişkenlerin tanımlı olduğu bölge*/
}
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
20
21. Değişkenlerin
Ömürleri
Değişkenler program içerisinde belirli bölgelerde
tanımlı olup daha sonra yok edilebilirler.
Global değişkenler bütün program boyunca
tanımlıdırlar, yok edilmezler.
Otomatik değişkenler tanımlı oldukları blok
boyunca yaşayıp bloktan çıkınca yok edilirler.
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
21
22. Kontrol Yapıları
Programımızın akışını değiştirmek, belirli şartlar
sağlandığında belirli işlemler yaptırmak için kontrol
yapıları kullanılır.
“Belirli şartları” mantık önermelerle ifade ediyoruz
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
22
23. Mantık Önermeleri
a == b a eşittir b
a != b a eşit değildir b
a>b a küçüktür b
a<b a büyüktür b
a <= b a küçük - eşittir b
a >= b a büyük - eşittir b
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
23
24. Mantık Önermeleri
Mantık önermelerin sonucu DOĞRU (TRUE / 1)
veya YANLIŞ (FALSE / 0) olabilir.
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
24
25. Mantık Operatörleri
Temel mantık operatörleri AND (ve), OR (veya),
NOT (değil) ‘dir.
AND &&
OR ||
NOT !
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
25
26. Mantık Önermeleri
AND
AND operatörü uygulanan iki ifadeden her ikisinin de
sonucu TRUE ise sonuç TRUE olur!
İFADE - 1 İFADE - 2 İFADE1 && İFADE 2
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
26
27. Mantık Önermeleri
OR
OR operatörü uygulanan iki ifadeden EN AZ birisinin
sonucu TRUE ise sonuç TRUE olur!
İFADE - 1 İFADE - 2 İFADE1 || İFADE 2
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
27
30. Dallanma
“Belirli bir şarta göre şu işi yap” durumları:
“Hava kararınca lambayı yak!”
“Butona basıldıysa motoru hızlandır”
En temel karar yapıları
Program akışının değiştirilmesi
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
30
31. Dallanma
if ( degisken1 == 3)
{
// degisken1 3’e eşitse işletilecek bölüm
….
}
else
{
// degisken1 3’e eşit değilse işletilecek bölüm
….
}
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
31
32. Dallanma
if ( degisken1 == 3)
{
// degisken1 3’e eşitse işletilecek bölüm
….
}
else if ( degisken1 == 4)
{
// degisken1 4’e eşit değilse işletilecek bölüm
….
}
else
{
…
}
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
32
33. Dallanma
if ( degisken1 == 3)
{
// degisken1 3’e eşitse işletilecek bölüm
….
}
else
{
// degisken1 3’e eşit değilse işletilecek bölüm
….
}
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
33
34. Döngüler
for döngüsü
while / do – while döngüleri
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
34
35. Döngüler
for
for (başlangıc; adımda doğrulanacak önerme; adım)
{
// her bir adımda gerçekleştirilecek işlemler
}
for (i = 0; i < 10; i++)
{
// her bir adımda gerçekleştirilecek işlemler
Serial.println(“Arduino”);
}
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
35
36. for döngüsü
UYGULAMA
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
36
37. Döngüler
while
while (mantıksal önerme)
{
// her bir adımda gerçekleştirilecek işlemler
}
while (i < 100)
{
// her bir adımda gerçekleştirilecek işlemler
Serial.println(“Arduino”);
i++;
}
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
37
38. While döngüsü
UYGULAMA
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
38
39. Döngüler
do while
do
{
// her bir adımda gerçekleştirilecek işlemler
} while (mantıksal önerme);
do
{
// her bir adımda gerçekleştirilecek işlemler
Serial.println(“Arduino”);
i++;
} while(i < 100);
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
39
40. Döngüler
continue ifadesi
Döngü içerisindeyken continue ifadesinden sonraki
işlemler atlanarak döngü tekrar başa döndürülür.
continue ifadesini döngüdeyken istisnai durumlar
oluşturmak için kullanabiliriz.
12/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
40