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