Arduino dili bize bazı matematiksel ve trigonometrik işlemleri yapmak için hazır fonksiyonlar sunmaktadır. Bu fonksiyonlar aşağıda listelenmiştir;
Matematiksel Fonksiyonlar;
Trigonometrik Fonksiyonlar;
Şimdi yukarıdaki fonksiyonların kullanımlarını inceleyelim;
Bir sayının mutlak değerini almak için kullanılır. Bilindiği üzere bir sayının mutlak değeri, o sayının sıfıra olan uzaklığını vermektedir. Pozitif bir sayının mutlak değeri sayının kendisini verir, negatif bir sayının mutlak değeri ise o sayının pozitif değerini verir.
Sözdizimi : abs(sayi);
Örnek kullanım;
1 2 |
abs(10); // 10 sayısının mutlak değerini alır abs(-15); // -15 sayısının mutlak değerini alır |
Aralık sınırlamak için kullanılır. Örneğin analog girişten aldığımız değer 0 ila 1023 arasındadır. Biz bu sayıyı 256 ila 512 arasında sınırlamak istersek bu fonksiyonu kullanacağız. Bufonksiyon 3 adet parametre alır. Birinci parametre değişkenimiz, ikinci parametre alt sınırımızı ve üçüncü parametre ise üst sınırımızı belirlemek için kullanılır.
Sözdizimi: constrain(değişken, alt sınır, üst sınır);
Örnek olarak analog 0 girişinden okuduğumuz değeri 127 ile 750 arasında sınırlayalım;
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { Serial.begin(9600); // Seri port ayarlarını yapıyoruz } void loop() { /* * A0 girişinden değerimizi okuyoruz * değeri 127 ile 750 arasında sınırlıyoruz * ve seri porta gönderiyoruz */ Serial.println(constrain(analogRead(A0), 127,750)); delay(1000); // 1000 milisaniye bekleme veriyoruz } |
Yukarıdaki kodda 11. satırda analog A0 girişinden okuduğumuz değeri constrain fonksiyonu ile 127 ile 750 arasında sınırlandırdık ve seri porta yazdırdık. Analog girişten okuduğumuz değer 127’nin altında olsa dahi artık 127 olarak görünecek ve değer 750’nin üzerinde olsa dahi 750 olarak görünecektir. Bu aralık içerisindeki değerler ise orjinal okuna değer olarak görünecektir.
map fonksiyonu bir aralıktaki değeri başka bir aralığa dönüştürme işlemini yapar. Örneğin analog girişten okuduğumuz 0 ile 1023 arasındaki değeri 0 ile 255 aralığına liner (doğrusal) olarak dönüştürmek istersek bu fonksiyonu kullanacağız.
Sözdizimi: map(değişken, alt değer, üst değer, yeni alt değer, yeni üst değer);
Örneğin analog girişten okuduğumuz 0 ile 1023 arasındaki değeri 0 ie 255 aralığına gönüştürelim;
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { Serial.begin(9600); // Seri port ayarlarını yapıyoruz } void loop() { /* * A0 girişinden değerimizi okuyoruz * okuduğumuz 0 ile 1023 arasındaki değeri * 0 ile 255 arasındaki değere dönüştür */ Serial.println(map(analogRead(A0), 0,1023, 0, 255)); delay(1000); // 1000 milisaniye bekleme veriyoruz } |
Yukarıdaki kodlarımızın 11. satırında analog A0 girişinden okuduğumuz 0 ile 1023 arasındaki değeri 0 ile 255 arasındaki değere dönüştürüp seri porta yazdırdık.
Örneğin yine seri porttan okuduğumuz 0 ile 1023 aralığındaki değeri tam tersi olan 1023 ile 0 aralığına dönüştürmek istersek fonksiyonumuzu aşağıdaki gibi kullanabiliriz.
1 |
map(analogRead(A0), 0,1023, 1023, 0); |
Bu fonksiyon iki değeri karşılaştırıp büyük olanı seçer.
Sözdizimi: max(deger1, deger2);
Örnek olarak analog A0 ve A1 girişinden aldığımız değerleri karşılaştıralım ve büyük olanı alalım ve seri porta yazdıralım;
1 2 3 4 5 6 7 8 9 10 11 |
int deger1, deger2; void setup() { Serial.begin(9600); // Seri port ayarlarını yapıyoruz } void loop() { deger1 = analogRead(A0); // A0 girişini oku ve deger1 değişkenine ata deger2 = analogRead(A1); // A1 girişini oku ve deger1 değişkenine ata Serial.println(max(deger1, deger2)); // deger1 ve deger2 değişkeninden büyük olanı seç ve seri porta yazdır delay(1000); // 1000 milisaniye bekleme veriyoruz } |
min fonksiyonumuz max fonksiyonumuzun tam tersi çalışır. İki değeri karşılaştırır ve küçük olan değeri alır.
Sözdizimi: min(deger1, deger2);
Örnek olarak analog A0 ve A1 girişinden aldığımız değerleri karşılaştıralım ve küçük olanı alalıp seri porta yazdıralım;
1 2 3 4 5 6 7 8 9 10 11 |
int deger1, deger2; void setup() { Serial.begin(9600); // Seri port ayarlarını yapıyoruz } void loop() { deger1 = analogRead(A0); // A0 girişini oku ve deger1 değişkenine ata deger2 = analogRead(A1); // A1 girişini oku ve deger1 değişkenine ata Serial.println(min(deger1, deger2)); // deger1 ve deger2 değişkeninden küçük olanı seç ve seri porta yazdır delay(1000); // 1000 milisaniye bekleme veriyoruz } |
pow fonksiyonumuz bir sayının istediğimiz kuvvetini (üssünü) almak için kullanılır. İki adet parametre alır. Birinci parametre sayı değeri, ikinci parametre ise üs değeridir.
Sözdizimi: pow(sayi, kuvvet);
Örnek kullanım:
1 2 3 4 5 6 7 |
/* * 11 sayısının üçüncü kuvvetini alıyoruz ve * deger adındaki integer türü değişkene atıyoruz */ int deger = pow(11, 3); // 11 sayısının üçüncü kuvvetini aldık (11 üzeri 3); // deger değişkeni değeri 1331 oldu |
sq fonksiyonu bir sayının karesini almak için kullanılır. Parantezler arasına girilen sayının karesini döndürür.
Sözdizimi: sq(sayi);
Örnek kullanım:
1 2 |
int karesi = sq(8); // 8 sayısının karesini al ve sonucu "keresi" değişkenine ata // "karesi" değişkeni değeri 64 olur |
sqrt fonksiyonu parantezler içerisine girilen sayının karekökünü almak için kullanılır.
Sözdizimi: sqrt(sayi);
Örnek kullanım:
1 2 |
int karekoku = sqrt(64); // 64 sayısının karekökünü al ve sonucu "karekoku" değişkenine ata // "karekoku" değişkeni değeri 8 olur |
cos fonksiyonu fonksiyona gönderilen açı değerinin kosinüsünü radyan cinsinden hesaplayıp döndürür. Float türü parametre alır, dönüş değeri double cinsindendir. Yani burada dikkat etmemiz gereken kısım, cosinüsünü alacağımız açı değerinin sonucunu double türündeki değişkene atamaktır.
Sözdizimi: cos(açı);
Örnek kullanım:
1 |
double kosinus = cos(270); |
Yukarıdaki örnekte 270 derece açının kosinüsünü aldık ve double türü “kosinus” değişkenine atadık. Fonksiyonun dönüş değeri 1 ile -1 arasındaki ondalıklı değerlerdir. Eğer biz fonksiyonun dönüş değerini double yerine integer türü değişkene atasaydık sadece 1, 0 ve -1 değerini görebilirdik. Bunun sebebi integer türü değişkenler sadece tamsayı türünden değerleri tutabilir, ondalıklı değerleri hafızada tutamazlar.
sin fonksiyonu fonksiyona gönderilen açı değerinin sinüsünü radyan cinsinden hesaplayıp döndürür. Float türü parametre alır, dönüş değeri double cinsindendir.
Sözdizimi: sin(açı);
Örnek kullanım:
1 |
double sinus = sin(270); |
Yukarıdaki örnekte 270 derece açının sinüsunü aldık ve double türü “sinus” değişkenine atadık. Fonksiyonun dönüş değeri 1 ile -1 arasındaki ondalıklı değerlerdir. Eğer biz fonksiyonun dönüş değerini double yerine integer türü değişkene atasaydık sadece 1, 0 ve -1 değerini görebilirdik. Bunun sebebi integer türü değişkenler sadece tamsayı türünden değerleri tutabilir, ondalıklı değerleri hafızada tutamazlar.
tan fonksiyonu fonksiyona gönderilen açı değerinin sinüsünü radyan cinsinden hesaplayıp döndürür. Float türü parametre alır, dönüş değeri double cinsindendir.
Sözdizimi: tan(açı);
Örnek kullanım:
1 |
double tanjant = tan(270); |
Yukarıdaki örnekte 270 derece açının tanjantını aldık ve double türü “tanjant” değişkenine atadık. Fonksiyonun dönüş değeri 1 ile -1 arasındaki ondalıklı değerlerdir.
Evet arkadaşlar böylelikle arduinoda kullanılan Matematiksel ve Trigonometrik fonksiyonları ele aldık.
hocam ardunıoda 4işlem fonksiyonları nelerdir