ARDUİNO - kavsaoglu.com · 28.02.2016 Cokun TADEMİR - Çizgi-Tagem Arduino Eğitimleri 3 Arduino...

Post on 29-May-2020

21 views 0 download

Transcript of ARDUİNO - kavsaoglu.com · 28.02.2016 Cokun TADEMİR - Çizgi-Tagem Arduino Eğitimleri 3 Arduino...

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri1

ARDUİNO

Arduino Eğitimleri

Bölüm 3

Programlama Dili Temelleri

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri2

Arduino Dili

Neler Göreceğiz?

Arduino Programlama Dili

Veri Tipleri

Kontrol Yapıları

Döngüler

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri3

Arduino Dili

Arduino temel olarak Processing programlama diline

dayanıyor.

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

benzer.

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri4

Arduino Dili

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

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

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri5

İ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

}

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri6

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri7

Veri Tipleri

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

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri8

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri9

Veri Tipleri

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

Kayar Noktalı Tipler: float, double

Karakter: char, string

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri10

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ı

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri11

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)

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri12

Veri Tipleri

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

Kayar Noktalı Tipler: float, double

Karakter: char, string

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri13

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!

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri14

Veri Tipleri

UYGULAMA

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri15

Veri Tipleri

Diziler

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri16

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]

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri17

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri18

Diziler

UYGULAMA

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri19

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri20

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri21

Değişkenlerin

Ömürleri

Değişkenler program içerisinde belirli bölgelerdetanı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.

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri22

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri23

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri24

Mantık Önermeleri

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri25

Mantık Operatörleri

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

AND && OR || NOT !

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri26

Mantık Önermeleri

AND

İ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!

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri27

Mantık Önermeleri

OR

İ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!

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri28

Mantık Önermeleri

NOT

İFADE - 1 !İFADE-1

TRUE FALSE

FALSE TRUE

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri29

Mantık Önermeleri

NOT

İFADE - 1 !İFADE-1

TRUE FALSE

FALSE TRUE

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri30

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri31

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri32

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri33

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

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri34

Döngüler

while / do – while döngüleri

for döngüsü

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri35

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şlemlerSerial.println(“Arduino”);

}

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri36

for döngüsü

UYGULAMA

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri37

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şlemlerSerial.println(“Arduino”);i++;

}

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri38

While döngüsü

UYGULAMA

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri39

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şlemlerSerial.println(“Arduino”);i++;

} while(i < 100);

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri40

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.

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri41

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.

28.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem

Arduino Eğitimleri42

Continue, break

ifadeleri

UYGULAMA