arduino eğitimleri 3 - arduino programlama dili

42
11.03.22 Coşkun TAŞDEMİR - Çizgi-T agem Arduino Eğitimleri 1 ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri http://www.flickr.com/photos/collinmel/23175203 31/

Upload: coskun-tasdemir

Post on 28-Jun-2015

13.909 views

Category:

Technology


9 download

DESCRIPTION

Arduino Web Seminerleri - 3

TRANSCRIPT

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

1

ARDUİNO

Arduino Eğitimleri Bölüm 3

Programlama Dili Temelleri

http://www.flickr.com/photos/collinmel/2317520331/

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

2

Arduino DiliNeler Göreceğiz?

Arduino Programlama Dili

Veri Tipleri

Kontrol Yapıları

Döngüler

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

3

Arduino Dili

Arduino temel olarak Processing programlama dilinedayanıyor.

Söz dizimi (sentaks) olarak C / C++ / Java dillerine benzer.

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

4

Arduino Dili

Satır sonlarında noktalı virgül (;) bulunuyor

Bloklar süslü parantezlerle { } tanımlanıyor.

// veya /* */ karakterleri ile yorumlar yazılabilir.

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

5

İLK PROGRAMIMIZ/* Pin13’e bağlı olan LED saniyede birYakı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}

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

6

Arduino Programlama

Setup bir kerelik, loop sürekli çalışan işlemler için.

main() fonksiyonu bulumuyor. Onun yerine setup() ve loop() var.

delay() fonksiyonu ile gecikmeler oluşturuluyor

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

7

Veri Tipleri

Bütün işlemleri veri tipleri üzerinde gerçekleştiriyoruz.

Verileri tutan belleklere “değişken” isimleri vererek kullanıyoruz.

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

9

Veri Tipleri

Tam sayı tipler: (unsigned /signed) char, int, long

Kayar Noktalı Tipler: float, double

Karakter: char, string

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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ı

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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)

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

12

Veri Tipleri

Tam sayı tipler: (unsigned /signed) char, int, long, short

Kayar Noktalı Tipler: float, double

Karakter: char, string

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

13

Veri Tipleri

Arduino 8 bitlik bir mikrodenetleyiciye sahip

Kısıtlı bir belleğe sahip olduğundan veri tiplerini doğrukullanmak önemli

Noktalı-sayılar fazla işlem gücü gerektiriyor!

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

14

Veri Tipleri

UYGULAMA

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

15

Veri TipleriDiziler

Aynı tipte birden fazla değişken gerekli olduğunda diziler kullanılabilir

int dizi[10]; // 10 elemanlı bir int dizisifloat ondalikDizi[5]; // 5 elemanlı bir float dizisichar karDizi[] = {'A','R','D','U','I','N','O'};int sayiDizisi[] = {1,2,3,4,5,6,7};

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

16

Veri Tipleri2 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]

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

17

Veri TipleriDiziler

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

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

18

Diziler

UYGULAMA

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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*/}

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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.

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

23

Mantık Önermeleria == 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

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

24

Mantık Önermeleri

Mantık önermelerin sonucu DOĞRU (TRUE / 1) veya YANLIŞ (FALSE / 0) olabilir.

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

25

Mantık Operatörleri

Temel mantık operatörleri AND (ve), OR (veya), NOT (değil) ‘dir.

AND && OR || NOT !

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

26

Mantık ÖnermeleriAND

İFADE - 1 İFADE - 2 İFADE1 && İFADE 2

TRUE TRUE TRUE

TRUE FALSE FALSE

FALSE TRUE FALSE

FALSE FALSE FALSE

AND operatörü uygulanan iki ifadeden her ikisinin de sonucu TRUE ise sonuç TRUE olur!

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

27

Mantık ÖnermeleriOR

İFADE - 1 İFADE - 2 İFADE1 || İFADE 2

TRUE TRUE TRUE

TRUE FALSE TRUE

FALSE TRUE TRUE

FALSE FALSE FALSE

OR operatörü uygulanan iki ifadeden EN AZ birisinin sonucu TRUE ise sonuç TRUE olur!

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

28

Mantık ÖnermeleriNOT

İFADE - 1 !İFADE-1

TRUE FALSE

FALSE TRUE

Bir ifadeye NOT operatörü uygulanırsa sonuc ifadenin sonucun DEĞİLİ (tersi) olur!

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

29

Mantık ÖnermeleriNOT

İFADE - 1 !İFADE-1

TRUE FALSE

FALSE TRUE

Bir ifadeye NOT operatörü uygulanırsa sonuc ifadenin sonucun DEĞİLİ (tersi) olur!

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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….}

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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{…}

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

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….}

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

34

Döngüler

while / do – while döngüleri

for döngüsü

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

35

Döngülerfor

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”);}

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

36

for döngüsü

UYGULAMA

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

37

Döngülerwhile

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

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

38

While döngüsü

UYGULAMA

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

39

Döngülerdo 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);

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

40

Döngülercontinue 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.

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

41

Döngülerbreak ifadesi

Döngü içerisindeyken break ifadesi bulunuyorsa döngüden çıkılır.

break ifadesini belirli bir şart oluştuğunda döngüyü sonlandırmak için kullanabiliriz.

13.04.23 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri

42

Continue, break ifadeleri

UYGULAMA