Upload
others
View
21
Download
0
Embed Size (px)
Citation preview
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