arduİno - kavsaoglu...arduino eğitimleri 22 arduino dili matematik fonksiyonlar fonksiyon...
TRANSCRIPT
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri1
ARDUİNO
Arduino Eğitimleri
Bölüm 4
Programlama Dili Temelleri - II
http://www.flickr.com/photos/collinmel/2317520331/
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri2
Arduino Dili - II
Neler Göreceğiz?
Fonksiyonlar
Matematik İşlemler
Gecikme / Zaman Fonksiyonları
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri3
Arduino DiliFonksiyonlar
ƒ(x)ÇıktılarFonksiyonGirişler
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri4
Arduino DiliFonksiyonlar
Arduino programlarımızı tek bir fonksiyon (loop())
içerisinde yazabileceğimiz gibi onları küçük birimlere
de ayırabiliriz.
Daha önce kullandığımız Delay() fonksiyonu parametre alan ama değer döndürmeyen bir fonksiyondur.
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri5
Arduino DiliFonksiyonlar
loop()
Fonksiyon_A() Fonksiyon_B() Fonksiyon_C()
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri6
Arduino DiliFonksiyonlar
Fonksiyonlar parametre almaları ve değer döndürmeleri zorunlu değildir.
Değer döndürmeyen fonksiyonların dönüş değer tipi “void” dir.
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri7
Arduino DiliFonksiyonlar
Fonksiyonlar parametre alıp almadıklarına veya
değer döndürüp döndürmemelerine göre
gruplanabilir:
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri8
Arduino DiliFonksiyonlar
Parametre almayan ve dönüş değeri olmayan
Parametre alan ve dönüş değeri olmayan
Parametre almayan ve dönüş değeri olan
Parametre alan ve dönüş değeri olan
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri9
Arduino DiliFonksiyonlar
int ornekBirFonksiyon(int sayi1, int sayi2) {
/* Parametre olarak verilen iki tam sayının
toplamını döndüren fonksiyon */
int sonuc;
sonuc = sayi1 + sayi2;
return sonuc;
}
1. Parametre 2. Parametre
Dönüş değeri tipi
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri10
Arduino DiliFonksiyonlar
void ArduinoYazdir() {
/* Seri çıkış üzerinden “Arduino” yazdıran
fonksiyon
*/
Serial.println(“Arduino”);
}
Dönüş değeri yok (void)
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri11
Arduino DiliFonksiyonlar
Fonksiyonları tekrar edilen işlemler için
kullanabiliriz.Fonksiyonlara verdiğimiz girişlere “parametre” denilir. Fonksiyonlar tanımlanırken hangi tip parametre alacakları belirtilir.
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri12
Fonksiyon Çağırma
/*
Seri haberleşme üzerinden “Arduino” yazdıran
fonksiyon saniyede 1 çağırılıyor.
*/
void setup() {
Serial.begin(9600);
}
void loop() {
ArduinoYazdir(); // Fonksiyon çağrısı
delay(1000); // Bir saniye bekle
}
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri13
Arduino DiliFonksiyonlar
Fonksiyonlara parametre iletmenin iki yolu vardır:
Değerle çağırma ve Referansla çağırma
Değerle çağırmada fonksiyona iletilen parametrelerle yapılan işlemler sonucu verilen parametrelerin değerlerinde değişim olmaz.
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri14
Arduino DiliFonksiyonlarda Değerle Çağırma
int ornekBirFonksiyon(int sayi1, int sayi2) {
/* Parametre olarak verilen iki tam sayının
toplamını döndüren fonksiyon */
int sonuc;
sonuc = sayi1 + sayi2;
return sonuc;
}
1. Parametre 2. Parametre
Dönüş değeri tipi
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri15
Arduino DiliFonksiyonlar
Referansla çağırmada fonksiyona iletilen parametrelerin bellek adresleri(referans) fonksiyona iletilir ve parametrelerin orijinal değerleri üzerinde işlem yapılır.
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri16
Arduino DiliFonksiyonlarda Referansla
Çağırma
void degerleriTopla(int sayi1, int sayi2, int &toplam) {
/* Parametre olarak verilen iki tam sayının
toplamını döndüren fonksiyon */
toplam = sayi1 + sayi2;
}
1. Parametre
referans
Dönüş değeri tipi void
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri17
Arduino DiliGecikme ve Zaman
Fonksiyonları
Gecikme fonksiyonu delay()’i daha önce görmüştük.
delay(ms_gecikme) ms gecikme
delayMicroseconds(us_gecikme) us gecikme gibi
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri18
Arduino DiliGecikme ve Zaman
Fonksiyonları
millis() fonksiyonu Arduino’nun çalışmasından
itibaren geçen süreyi ms cinsinden döndürür.
Ortalama 50 günde bir sıfırlanır.
Dönüş değeri yüksek bir değer olabileceğinden“unsigned long” tipi kullanılmalıdır.
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri19
Arduino DiliMatematik Fonksiyonlar
Temel matematik işlemleri matematik
operatörleriyle gerçekleştirebiliyoruz.
Karekök alma, trigonometrik hesaplamalar gibi işlemler için matematik kütüphanesi fonksiyonlarını kullanabiliriz.
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri20
Arduino DiliMatematik Operatörler
Operatör İşlem
+ TOPLAMA
- ÇIKARMA
* ÇARPMA
/ BÖLME
% KALAN
= ATAMA
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri21
Arduino DiliMatematik Fonksiyonlar
Fonksiyon Parametre İşlem
Pow(x,n) x: Sayı
n: Üs değeriÜs alma
Sqrt(x) x: sayi Karekök alma
Abs(x) x: sayi Mutlak Değer
sin(x) x: açı (radyan) Sinüs
cos(x) x: açı (radyan) Kosinüs
tan(x) x: açı (radyan) Tanjant
29.02.2016 Coşkun TAŞDEMİR - Çizgi-Tagem
Arduino Eğitimleri22
Arduino DiliMatematik Fonksiyonlar
Fonksiyon Parametre Sonuç
a = min(x,y) x: Sayi-1
y: Sayi-2
İki sayının en küçüğü
a = max(x,y) x: Sayi-1
y: Sayi-2
İki sayının en büyüğü
a = constrain(x,min,max) x: sayı İki değer arasına sınırlama
a = floor(x) x: ondalık sayı En küçük tam sayıya
yuvarlama
a = ceil(x) x: ondalık sayı En büyük tam sayıya
yuvarlama