HomeArduino

ARDUİNO Kullanım Kılavuzu (Bütün Fonksiyonlar)



Arduino programları üç ana bölümden oluşabilir: yapı, değerler (değişkenler ve sabitler) ve fonksiyonlar(işlevler).

Aşağıdaki tablo https://www.arduino.cc/en/Reference/HomePage adresinin birebir kopyasıdır. Türkçeye çevrilmiştir.

BÖLÜM 1: YAPI
Kontrol Yapıları
Sentaks (Söz Dizimi)
Aritmatik Operatörler
Karşılaştırma Operatörleri
Boolean (Mantık) Operatörleri
İşaretçi Erişim Operatörleri (Pointerlar)
Bit Düzeyi Operatörleri
Bileşik Oparatörler
BÖLÜM 2: DEĞİŞKENLER
Sabitler
Veri Tipleri
Dönüşümler
Değişken Skop ve Niteleyiciler
Araçlar
BÖLÜM 3: FONKSİYONLAR
Dijital Giriş/Çıkış
Analog Giriş/Çıkış
Due ve Zero için
Gelişmiş Giriş/Çıkış
Zaman
Matematik
Trigonometri
Karakterler
Rastgele Sayılar
Bitler ve Baytlar
Harici Kesmeler
Kesmeler
İletişim
USB (32u4 tabanlı kart ve Due/Zero)


BÖLÜM 1: YAPI

Setup fonksiyonu, kod çalışmaya başladığında Arduino'nun ilk olarak okuduğu yerdir. Arduino bu kısmı okuduktan sonra diğer kısımları okumaya başlar. Bu kısım sadece bir kere okunur ve program esnasında yeniden okunmaz. Bu alanda, pinlerin çalışma modları gibi önemli ve bir kere yapılması yeterli olacak ayarlamalar yapılır.

int buttonPin = 3;  void setup() {   Serial.begin(9600);   pinMode(buttonPin, INPUT); }  void loop() {   // ... }

Kontrol Yapıları

Arduino Programlama temel karar komutudur. “if” ‘ten sonra verilen koşul doğru ise bu if bloğundaki işlemler, yanlış ise “else” bloğundaki işlemler yapılır.

if (koşul) { // Koşul sağlanıyor ise yapılacak işlem } else { // Koşul sağlanmıyor ise yapılacak işlem }

Sentaks (Söz Dizimi)

Program içerisinde kullanılan tüm ifadelerin sonuna yazılması gerklidir. Bu ifadeler { } içerisindeki satırlardır. (fonksiyon çapırma, değişken atama, matematiksel işlemler gibi.) Ayrıca for fonksiyonunun  { } içerisindeki elemanlarını ayırmak için de kullanılır.

Aritmetik Oparatörler

Bu işaret atama oparatörüdür.

int sensordegeri = analogRead(0);   //sensordegeri değişkenine 0. pindeki okunan değeri atadık. 

Atama operatörü = ile eşittir == operatörlerini birbiri ile karıştırmamaya dikkat edin.

Karşılaştırma Operatörleri

if deyiminde parantez içinde değerlendirilen ifadeler bir veya daha fazla operatörün kullanılmasını gerektirir.

 x == y (x, y'ye eşittir) x != y (x, y'ye eşit değildir) x  < y (x, y'den küçüktür) x  > y (x, y'den büyük) x <= y (x, y'den küçük veya eşittir) x >= y (x, y'den büyük veya eşittir) 

Yanlışıkla tek eşit işareti kullanmamaya dikkat edin. (ör. if(x=10)). Tek eşit işaret, atama işleci olup x' e 10 değeri atanır. Bunun yerine, karşılaştırma işleci olan çift eşit işareti (ör. if(x==10)) kullanın. ve x'in 10' a eşitse doğrudur, diğer durumlarda yanlıştır.

Boolean (Mantık) Operatörleri


Her iki işlem de doğru ise if şartı sağlanır ve if içerisindeki komut çalıştırılır. Herhangi bir durum ya da ikiside false, yanlış sonuç ise if yapısına girilmez.

 if (buton1 == HIGH && buton2 == HIGH) //eğer buton1 ve buton2 HIGH(5volt) ise { digitalWrite(led, HIGH); // ledi yak. 

İşaretçi Erişim Operatörleri (Pointerlar)
İşaretçiler, C öğrenmede yeni başlayanların daha karmaşık konularından biridir ve Arduino eskizlerinin büyük çoğunluğunu hiç işaretçi bulamadan yazmak mümkündür. Bununla birlikte, bazı veri yapılarını değiştirmek için işaretçilerin kullanılması kodun basitleştirilmesine kullanışlıdır.

Bit Düzeyi Operatörleri
İşleme giren bitleri ve işlemine tabi tutar. Yani işleme giren bitlerin her ikiside 1 ise 1 değerini verir. Diğer durumda 0 dır.

     0  0  1  1    işlenen1    0  1  0  1    işlenen2    ----------    0  0  0  1    (işlenen1 & işlenen2) dönen değer 

  int a = 92;     // ikili değer: 0000000001011100  int b = 101;    // ikili değer: 0000000001100101  int c = a & b;  // ikili değer: 0000000001000100 (ondalık 68) 

Bileşik Oparatörler

Bir değişkeni arttırmak ve azaltmak için kullanılır.

 // ++x veya x++ kullanımı: // x=x+1 ile aynıdır yani amaç sayıyı 1 arttırmaktır. //--x veya x-- kullanımı: //x=x-1 ile aynıdır yani amaç sayıyı 1 azaltmaktır. y = ++x //ilk işlem yapılır sonra atama. y = x++ //ilk atama yapılır sonra işlem. 

 x = 2;        // x'e 2 değerini atadık. y = ++x;      // ilk işlem yapıldı x'e 1 eklendi, x 3 oldu ve y'ye atandı. y = x--;      // ilk atama yapıldı x 3 olmuştu bu yüzden y'ye atandı, sonra işlem yapıldı x 2 oldu. 

BÖLÜM 2: DEĞİŞKENLER

Sabitler


HIGH
pinmode() ile bir INPUT olarak konfigüre edildiğinde ve digitalRead() ile okunduğunda; Arduino aşağıdaki durumlarda HIGH bildirir;

- pinde 3.0V'dan büyük bir voltaj mevcut ise (5V kartlar)
- pinde 2.0V'dan büyük bir voltaj mevcut ise (3.3V kartlar)

Bir pin, pinmode() ile bir INPUT olarak yapılandırılabilir ve daha sonra, digitalWrite() ile HIGH yapılır. Bu, dahili 20K'lık pullup dirençleri ve harici devre tarafından LOW' a çekilmediği sürece giriş pini HIGH durumunda olacaktır.

Bir pin pinMode() ile OUTPUT ile yapılandırıldığında ve digitalWrite() ile HIGH olarak ayarlandırıldığında, pin şu değerdedir.

- 5 volt (5V kartlarda)
- 3.3 volt (3.3V kartlarda)

Bu durumda pine bağlanacak seri bir direnç ve led ile ledimizi aydınlatabiliriz.

LOW
LOW'un anlamı, bir pinin INPUT veya OUTPUT olarak ayarlanmasına bağlı olarak farklı bir anlam taşır.

Pin pinMode() ile bir INPUT olarak yapılandırıldığında ve digitalRead() ile okunduğunda, Arduino şu durumlarda LOW bildirir.

- pinde 1.5V'dan daha düşük bir voltaj mevcut ise (5V kartlarda)
- pinde 1.0V'dan daha düşük bir voltaj mevcut ise (3.3 kartlarda)

Pin pinMode() ile OUTPUT olarak ayarlandığında ve digitalWrite() ile LOW olarak ayarlanırsa

- pin 0 volttuer. (her ikisi de 5V ve 3.3V kartlar)

Bu durumda ledimizi kapatabiliriz.

Sabitler

void anahtar sözcüğü yalnızca işlev bildirimlerinde kullanılır. Eylemler, setup ve loop fonksiyonlarında gerçekleştirilir.

 void setup() {  // ... } void loop() {  // ... } 


Dönüşümler

char() , byte() , int() , word() , long() , float(),

komutları parantez içine aldıkları herhangi bir veriyi çevirmemiz için kullanılır.

Değişken Skop ve Niteleyiciler


Arduino ortamında, bir işlevin dışında bildirilen herhangi bir değişken (ör. Setup(), loop() vb.), Genel bir değişkendir. Programlar daha büyük ve daha karmaşık hale geldiğinde yerel değişkenler, yalnızca bir işlevin kendi değişkenlerine erişebilmesini sağlamak için yararlı bir yöntemdir. Bu, bir işlev yanlışlıkla başka bir işlev tarafından kullanılan değişkenleri değiştirdiğinde programlama hatalarını önler.

Araçlar

Bu fonksiyon değişkenin boyutunu BYTE olarak geri döndürür.

 sizeof(degisken); 


BÖLÜM 3: FONKSİYONLAR

Dijital - Giriş/Çıkış
Belirtilen pini bir giriş INPUT veya çıkış OUTPUT olarak davranacak şekilde yapılandırır. Arduino 1.0.1 itibariyle INPUT_PULLUP modlu dahili pullup dirençlerini etkinleştirmek mümkündür. Ayrıca, INPUT modu iç pullup’ları açıkça devre dışı bırakır. Örnek digitalWrite() bölümün altındadır.


Analog - Giriş/Çıkış

Analog giriş için kullanılan referans voltajını (yani, giriş aralığının üstü olarak kullanılan değer) konfigüre eder.

 Seçenekler şunlardır:

DEFAULT: Varsayılan 5 voltluk analog referans (5V Arduino kartlarda) veya 3.3 volt (3.3V Arduino kartlarında)

INTERNAL: ATmega168 veya ATmega328’de 1,1 volt’a ve ATmega8’de 2,56 volt’a eşit olan dahili bir referans (Arduino Mega’da mevcut değildir)

INTERNAL1V1: dahili bir 1.1V referans (yalnızca Arduino Mega)

INTERNAL2V56: dahili 2.56V referans (yalnızca Arduino Mega)

EXTERNAL: AREF pinine uygulanan voltaj (sadece 0 – 5V) referans olarak kullanılır.

Dikkat! AREF pininde harici referans voltajı için 0V’dan az veya 5V’den fazla kullanmayın! AREF pininde harici bir referans kullanıyorsanız, analogRead() çağrılmadan önce analog referansı EXTERNAL olarak ayarlamanız gerekir. Aksi takdirde aktif referans voltajını (dahili olarak üretilen) ve AREF pinin birlikte kısaltır ve muhtemelenArduino kartındaki mikro denetleyiciye zarar verirsiniz. Alternatif olarak harici referans voltajını, harici ve dahili referans voltajları arasında geçiş yapmanıza izin veren 5K direnç aracılığıyla AREF pinine bağlayabilirsiniz. Dirençin referans olarak kullanılan voltajı değiştireceğini unutmayın çünkü AREF piminde dahili bir 32K direnç vardır. İkisi bir voltaj bölücü olarak görev yaparken, örneğin, direnç aracılığıyla uygulanan; 2,5 V, AREF pininde 2.5×32 / (32 + 5) = ~ 2.2V verir.



DUE ve ZERO İçin


analogWriteResolution(), Arduino Due, Genuino ve Arduino Zero ve MKR1000 için Analog API’nın bir uzantısıdır.

analogWriteResolution(), analogWrite() işlevinin çözünürlüğünü ayarlar. AVR tabanlı kartlarla geriye dönük uyumluluk için varsayılan 8 bit’dir (0-255 arasındaki değerler).

Due, aşağıdaki zor yeteneklere sahiptir: AVR tabanlı kartlar gibi 8 bit PWM‘e varsayılan 12 pindir. Bunlar 12-bit çözünürlük olarak değiştirilebilir. 12-bit DAC (Dijital-Analog Dönüştürücü) ile 1 pin. Yazma çözünürlüğünü 12 olarak ayarlayarak, tam DAC çözünürlüğünden faydalanmak veya devreden çıkarmadan PWM sinyalini ayarlamak için 0 ile 4095 arasında değerli analogWrite() kullanabilirsiniz.

Zero, aşağıdaki zor yeteneklere sahiptir: AVR tabanlı kartlar gibi 8 bit PWM‘e varsayılan 10 pindir. Bunlar 12-bit çözünürlük olarak değiştirilebilir. 10-bit DAC (Dijital-Analog Dönüştürücü) ile 1 pin. Yazma çözünürlüğünü 10 olarak ayarlayarak, tam DAC çözünürlüğünden yararlanabilmek için; analogWrite() işlevini 0 ile 1023 arasındaki değerleri kullanabilirsiniz.

MKR1000, aşağıdaki zor yeteneklere sahiptir: AVR tabanlı kartlar gibi 8-bit PWM‘e varsayılan olan 4 pin. Bunlar 8(varsayılan) ile 12 bitlik çözünürlük arasında değiştirilebilir. 10-bit DAC (Dijital-Analog Dönüştürücü) ile 1 pin. Yazma çözünürlüğünü 12 bit olarak ayarlayarak, PWM sinyalleri için 0 ile 4095 arasında değerlerle analogWrite() kullanabilirsiniz; 1024 değerlerinin tam DAC çözünürlüğünü kullanmak için DAC pininde 10 bit ayarlayın.

Syntax (Sözdizimi) ve Parametreler: analogWriteResolution(bit değeri);
Bitler: analogWrite() işlevinde kullanılan değerlerin çözünürlüğünü (bit olarak) belirler. Değer 1’den 32’ye değişebilir. Kartınızın donanım yeteneklerinden daha yüksek veya daha düşük bir çözünürlük seçerseniz, analogWrite() da kullanılan değer çok yüksekse kesilir veya çok düşükse sıfırlarla doldurulur.

Not: analogWriteResolution() değerini kartın yeteneklerinden daha yüksek bir değere ayarlarsanız, kart fazladan bitleri atacaktır. Örneğin: 12 bitlik bir DAC pininde Due ile analogWriteResolution (16) kullanıldığında; analogWrite()‘a verilen ilk 12 bit kullanılacak ve son 4 bit atılacaktır. analogWriteResolution() değerinikartınızın yeteneklerinden daha düşük bir değere ayarlarsanız, eksik bitler donanım gerektiren boyutu doldurmak için sıfırlarla doldurulacaktır. Örneğin: 12 bitlik bir DAC piminde Due ile analogWriteResolution(8) kullanan Arduino, analogWrite() içinde kullanılan 8 bit değerine 4 sıfır bit ekleyerek gerekli 12 biti elde edecektir.

 void setup(){           Serial.begin(9600);                                // Seri iletişimi başlat.   pinMode(11, OUTPUT);                               // 11. pin çıkıştır.   pinMode(12, OUTPUT);                               // 12. pin çıkıştır.    pinMode(13, OUTPUT);                               // 13. pin çıkıştır. } void loop(){   int sensorVal = analogRead(A0);                    // sensorVal değişkenine A0 pininden alınan değeri depola.   Serial.print("Analog Read) : ");                   // Seri monitöre "Analog Read) : " yazısı yaz.   Serial.print(sensorVal);                           // sensorVal değişkenin değerini ver.     analogWriteResolution(8);                          // analog yazma çözünürlüğü 8 bit yani normal ayar.   analogWrite(11, map(sensorVal, 0, 1023, 0 ,255));  // 11. pine sensorVal'den aldığın 0 -1023 arasında değeri 0-255 aralığına çek.   Serial.print(" , 8-bit PWM value : ");             // Seri monitöre "8-bit PWM value : " yazısı yaz.   Serial.print(map(sensorVal, 0, 1023, 0 ,255));     //sensorVal'den aldığın 0-1023 arasında değeri seri monitöre 0-255 aralığına çek.     analogWriteResolution(12);                         // analog yazma çözünürlüğü 12 bit.   analogWrite(12, map(sensorVal, 0, 1023, 0, 4095)); // 12. pine sensorVal'den aldığın 0-1023 arasında değeri 0-4095 aralığına çek.   Serial.print(" , 12-bit PWM value : ");            // Seri monitöre " , 12-bit PWM value : " yazısı yaz.   Serial.print(map(sensorVal, 0, 1023, 0, 4095));    // sensorVal'den aldığın 0-1023 arasında değeri seri monitöre 0-4095 aralığına çek.     analogWriteResolution(4);                          // analog yazma çözünürlüğü 4 bit.   analogWrite(13, map(sensorVal, 0, 1023, 0, 15));   // 13. pine sensorVal'den aldığın 0 -1023 arasında değeri 0-15 aralığına çek.   Serial.print(", 4-bit PWM value : ");              // Seri monitöre " , 4-bit PWM value : " yazısı yaz.   Serial.println(map(sensorVal, 0, 1023, 0, 15));    // sensorVal'den aldığın 0-1023 arasında değeri seri monitöre 0-15 aralığına çek.     delay(5);                                          // 5 mili saniye bekle. } 


Gelişmiş - Giriş/Çıkış

Bir pin üzerinde belirtilen frekanstaki bir kare dalga oluşturur. Bir süre belirtilebilir, aksi takdirde dalga noTone() çağrısına kadar devam eder. Zil sesleri çalmak için pim bir piezo ziline veya başka bir hoparlöre bağlanabilir. Bir seferde yalnızca bir ton üretilebilir. Farklı bir pinde halen çalan bir ses varsa, tone() hiçbir etkiye sahip olmayacaktır. Ses aynı pinde oynuyorsa, arama frekansını ayarlar. tone() işlevi, 3 ve 11 nolu pinlerde (Mega dışındaki anakartlarda) PWM çıkışını etkiler.

NOT: birden fazla pin üzerinde farklı sahneler oynatmak isterseniz, bir sonraki pin üzerindeki tone() çağırmadan önce bir pim üzerinde noTone() çağırmanız gerekir.

Syntax (Sözdizimi) ve Parametreler:
tone(pin, frekans)
tone(pin, frekans, süre)

Pin: Sesi üretmek için pin
Frekans: ton frekansı hertz cinsindendir – unsigned int Süre: Tonun süresi (milisaniye) (isteğe bağlı) – unsigned long

Zaman
Arduino kurulu mevcut programı çalıştırmaya başlamasından bu yana milisaniye sayısını döndürür. Yaklaşık 50 gün sonra bu numara taşacaktır (sıfıra döner). Bir programcı int gibi daha küçük veri türleriyle aritmetik yapmaya çalışırsa millis() için dönüş değerinin unsigned long olduğunu, mantıksal hataların oluşabileceğini lütfen unutmayın.

 unsigned long zaman;                    // zaman değişkeni tanımlandı.   void setup(){   Serial.begin(9600);                   // seri iletişim bağlatıldı. } void loop(){   Serial.print("Zaman: ");              // seri monitöre "Zaman: " yazıldı.   zaman = millis();                     // program başladığında zaman değişkeni milisaniye cinsinden saymaya başladı.   Serial.println(zaman);                // seri monitöre zaman değişkenin değeri atandı.   delay(1000);                          // 1 saniye bekle. } 

Matematik




 sensor = min(sensor, 100); // sensor değeri 100 olana kadar sensor değerini verir.                            // 100'ü geçerse de otomatik olarak 100'ü verir.                            // Böylece asla 100'ü aşamaz. 

Trigonometri

Bir açının sinüsünü hesaplar (radyan cinsinden). Sonuç -1 ile 1 arasında olacak. radyan float olmalı. (x=sin(y) //y ise double olmalı)


Karakterler

Bir karakterin alfasayısal olup olmadığını analiz eder.

 void setup() {  Serial.begin(9600);  //seri iletişimi başlat.  while (!Serial) {    // USB nin seri iletişime bağlanmasını bekleyin.  }  Serial.println("herhangi bir bayt gönderin ve sana her konuda bilgi vereyim");  Serial.println(); }   void loop() {  if (Serial.available() > 0) {    // gelen herhangi bir bayt al:  int thisChar = Serial.read();        // ne gönderildiğini söyleyin:  Serial.print("Beni Gönerdin \'");  Serial.write(thisChar);  Serial.print("\' ASCII Değer: ");  Serial.println(thisChar);   // gönderilenleri analiz et:  if (isAlphaNumeric(thisChar)) {  Serial.println("bu alfanumerik");  }  if (isAlpha(thisChar)) {  Serial.println("bu alfabetik");  }  if (isAscii(thisChar)) {  Serial.println("bu ASCII");  }  if (isWhitespace(thisChar)) {  Serial.println("bu beyazboşluk");  }  if (isControl(thisChar)) {  Serial.println("bu kontrol karakteri");  }  if (isDigit(thisChar)) {  Serial.println("bu rakam");  }  if (isGraph(thisChar)) {  Serial.println("boşluk olmayan yazdırılabilir bir karakterdir");  }  if (isLowerCase(thisChar)) {  Serial.println("bu küçük harf");  }  if (isPrintable(thisChar)) {  Serial.println("bu tazdırabilinir");  }  if (isPunct(thisChar)) {  Serial.println("noktalama işaretidir");  }  if (isSpace(thisChar)) {  Serial.println("bu boşluk karakteri");  }  if (isUpperCase(thisChar)) {  Serial.println("bu büyük harf");  }  if (isHexadecimalDigit(thisChar)) {  Serial.println("geçerli bir onaltılık basamak (i.e. 0 - 9, a - F, or A - F)");  }    // Biraz yer ekleyin ve başka bir bayt isteyin:  Serial.println();  Serial.println("Başka bir bayt ver:");  Serial.println();  }  

Tüm bu işlevlerin ortak noktası ise sonuç olarak true ya da false döndürür.

Rastgele Sayılar

Rastgele sayı üreticini belli bir başlangıç noktasından (seed) başlatan fonksiyondur. Daha sonrasında çalıştırılacak random() fonksiyonu bu başlangıç noktasına göre rastgele sayı üretecektir. Aynı başlangıç noktası (seed) için üretilen rastgele sayı dizisi her seferinde aynıdır. Eğer oluşturulan program taslağı (sketch) için rastgele üretilen sayı dizisinin aynı olması isteniyorsa randomSeed() ile kullanılacak başlangıç noktası sabit olmalıdır. Diğer yandan, her seferinde değişen rastgele sayı dizisi oluşturulmak isteniyorsa randomSeed() fonksiyonu aşağıdaki gibi kullanılabilir. Bu programda random() fonksiyou, seri monitör her açıldığında farklı bir dizi oluşturur.

long rastSayi;  int bosPin = 15; //15 numaralı pinin boşta olduğu kabul edilmitir.  void setup (){   Serial.begin(9600);  randomSeed(analogRead(bosPin));  //boşta olan herhangi bir pin kullanılabilir.  }   void loop(){  rastSayi = random(250);  //250 den küçük rastgele sayı dizisi üretir.  Serial.println(rastSayi);  delay(500); } 

Rastgele "analogRead(bosPin)" değeri yerine sabit bir sayı yazılırsa (örn; randomSeed(2) gibi) seri monitör her çalıştırılğında aynı sayı dizisi sırayla ekranda yazdırılır.


Bit ve Baytlar

Bir değişkenin (örneğin bir sözcük) düşük sıralı (en sağdaki) baytını çıkarır.
x: herhangi bir türe ait bir değer
Kesmeler

Kesmeleri yeniden etkinleştirir (noInterrupts() tarafından devre dışı bırakıldıktan sonra). Kesmeler, bazı önemli görevlerin arka planda olmasını sağlar ve varsayılan olarak etkindir. Bazı işlevler kesmeler devre dışı bırakılırken çalışmaz ve gelen iletişim yok sayılabilir. Bununla birlikte, kesmeler kod zamanlamasını hafifçe bozabilir ve kodun özellikle kritik bölümleri için devre dışı bırakılabilir.


Dış Kesmeler

Dış kesmeler, Arduino’nun özel pinlerinde gerçekleşen voltaj değişimlerini takip eden kesmelerdir.

Örneğin Arduino’nun dış kesme pinine bağlanmış bir düğmeye basıldığında, dış kesme Arduino’ya otomatik olarak

haber verir. Bu kesme sayesinde Arduino sürekli olarak düğmeye basılıp basılmadığını kontrol etmek zorunda kalmaz,

bu sırada başka işlemleri yerine getirebilir.

Aşağıdaki tabloda Arduino türlerine göre dış kesme özelliğine sahip pinler gösterilmiştir.

KartKesme İçin Dijital Pin
 Uno, Nano, Mini, ve diğer 328 tabanlılar 2, 3
 Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21
 Micro, Leonardo, other 32u4-tabanlılar 0, 1, 2, 3, 7
 Zero 4. pin hariç tüm dijital pinler.
 MKR1000 Rev.1 0, 1, 4, 5, 6, 7, 8, 9, A1, A2
 Due Tüm dijital pinlar
 101 Tüm dijital pinlar


Söz dizimi (Syntax)
attachInterrupt (Dijital kesme pini (pin), ISR, mode); (Tavsiye edilen)
attachInterrupt (interrupt, ISR, mode); (Tavsiye edilmez)
attachInterrupt (pin, ISR, mode); (Sadece Arduino Due, Zero, MKR1000, 101 için önerilmez)

interrupt: Kesme numarası (int)

pin: Pin Numarası (sadece Arduino Due, Zero, MKR1000)

ISR: Kesme oluştuğunda ISR çağırır; Bu işlev parametre almayacak ve hiçbir şey döndürmemelidir.

Bu işlev bazen bir kesme hizmeti rutini olarak da adlandırılır.

mode: Aşağıda “attachInterrupt” fonksiyonu için tanımlanabilecek dış kesmelerin türleri belirtilmiştir.

LOW: Pindeki voltaj 0 ise kesme oluşur.
CHANGE: Pinde oluşacak voltaj değişimlerinde kesme gerçekleşir.
RISING: Yükselen kenarlarda kesme gerçekleşir. Yani pindeki voltaj değeri 0’dan 5 Volta çıktığında kesme gerçekleşir.
FALLING: Düşen kenarlarda kesme gerçekleşir. Yani pindeki voltaj değeri 5’ten 0’a düştüğünde kesme gerçekleşir.
HIGH: Pindeki voltaj 5 volt ise kesme oluşturur. (Sadece Arduino Due, Zero, MKR1000 )

İletişim

Pinlerin seri iletişimi TX / RX, TTL mantık düzeylerini kullanır (karta bağlı olarak 5V veya 3.3V).Bu pinleri bir RS232 seri portuna doğrudan bağlamayın; +/- 12V’de çalışırlar ve Arduino kartınıza zarar verebilirler.

Seri, Arduino kartı ile bir bilgisayar veya diğer cihazlar arasındaki iletişim için kullanılır.Tüm Arduino kartlarında en az bir seri bağlantı noktası (UART veya USART olarak da bilinir) vardır:

Seri, Dijital pin 0 (RX) ve 1 (TX) üzerinden ve ayrıca bilgisayar üzerinden USB üzerinden iletişim kurar. Bu nedenle, bu işlevleri kullanırsanız, dijital giriş veya çıkış için 0 ve 1 numaralı pinleri kullanamazsınız.

Bir Arduino kartıyla iletişim kurmak için Arduino ortamının dahili seri monitörünü kullanabilirsiniz. Araç çubuğundaki seri monitör düğmesini tıklayın ve begin() çağrısında kullanılan aynı baud hızını seçin.

Arduino Mega‘nın üç ek seri portu vardır: Pin 19(RX) ve 18(TX) üzerindeki Serial1, 17(RX) ve 16(TX) pinlerdeki Serial2, 15(RX) ve 14(TX) pinlerdeki Serial3. Bu pinleri kişisel bilgisayarınızla iletişim kurmak için, Mega’nın USB-to-serial adaptörüne bağlı olmadığından ek bir USB-to-seri adaptöre ihtiyaç duyacaksınız. Bunları harici bir TTL seri cihazla iletişim kurmak için kullanmak için, TX pinini cihazınızın RX pimine, RX’i cihazınızın TX pinine ve Mega’nuzun zemini cihazınızın zemine bağlayın.

Arduino Due‘nun üç ilave 3.3V TTL seri portu vardır: 19(RX) ve 18(TX) pinlerdeki Serial1; 15(RX) ve 14 (TX) pinlerdeki Serial2. 17(RX) ve 16(TX), Seri3. Pin 0 ve 1 ayrıca USB hata ayıklama bağlantı noktasına bağlı olan ATmega16U2 USB-to-TTL

Seri yongasının ilgili pinlerine bağlanır. Ayrıca, SAM3X yongasında SerialUSB olan yerli bir USB seri bağlantı noktası da var. Arduino Leonardo kartı, 0(RX) ve 1(TX) pimlerde TTL(5V) seri ile iletişim kurmak için Serial1‘i kullanıyor. Seri USB CDC iletişimi için ayrılmıştır. Daha fazla bilgi için, Leonardo başlama sayfası ve donanım sayfasına bakın.


Fonksiyonları:
if(Serial)
Belirlenen Seri Portun hazır olup olmadığını kontrol etmemize yarar. Serial nesnelerinin mantıksal bir alan alanda kullanılması durumunda eğer belirtilen Seri Port hazır ise; true eğer belirtilen Seri Port hazır değilse false değeri dönecektir.

available()
Serial Port’tan okuma yapmak için kullanılabilir byte( karakter )’in olup olmadığını kontrol etmemize yarar.
Gönderilmiş olan veriyi byte byte değerlendirir.

begin()
Arduino’dan bilgisayarımıza veya seri haberleşme portunu kullanan diğer cihazlara gönderilecek verinin hızını saniyede bit ( bit / saniye ) cinsinden ayarlar. Bir cihaz ile birlikte kullanıldığında hem Arduino’muzun hemde diğer cihazımızın veri transfer hızları aynı olmalıdır.

Kullanım Şekli:

Serial.begin(speed)
Serial.begin(speed, config)

begin() fonksiyonu bir hız parametresi ve isteğe bağlı ikinci bir parametre olarak parity veya stop biti alabilir.

Arduino’muz ile bilgisayarımız arasında bir seri haberleşme gerçekleştirmek istediğimizde hız parametresi olarak

300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, 230400 veya 250000 seçilir.

Bilgisayarımızın varsayılan hızı 9600’dür. Bu hızı değiştirmek için Arduino yazılımında yukarıda nasıl erişileceğinden

bahsedilen Serial Port Ekranından aşağıdaki resimdeki gibi değiştirebilirsiniz.

Kartınızın ve bilgisayarınızın hızlarının aynı olması gerektiğini unutmayınız.

end()

Serial Portun çalışmasını devre dışı bırakır. Daha önce belirttiğimiz gibi TX ve RX pinlerini Serial Portu kullandığımızda

giriş çıkış işlemleri için kullanamıyoruz. end() ile Serial Port devre dışı bırakıldıktan sorna TX ve RX pinlerini giriş

çıkış işlemleri için tekrar kullanabiliriz. Serial Portu tekrar devreye almak istersek begin() fonksiyonunu kullanabiliriz.

find()
Find fonksiyonu ile Serial Port üzerinden gönderilen değer içerisinde arama işleme yapılır. Eğer aranan değer gönderilen değer içerisinde varsa true, yoksa false değeri döndürür.

parseFloat() ve parseInt()parseFloat() ve parseIn() fonksiyonları Seri Porta gönderilen veri dizisi içerisindeki ondalıklı ve tam sayıları almamızı sağlar. Bu işlemi yaparken gelen veri dizisinde değişikliklerde oluşur.

print() ve println()Her iki fonksiyonda seri haberleşmede gönderilen parametreleri ASCII‘ye uygun olarak yazdırma işlemi yapar. Diğer programlama dillerinden de alışık olduğumuz şekilde print fonksiyonu yazma işlemini gerçekleştirdikten sonra imleci yazma işleminin bittiği noktada bırakırken, println fonksiyonu yazma işlemi bittikten sonra imleci bir alt satırın başına getirir ve daha sonraki yazmaların bir alt satırdan olmasını sağlar.

Kullanım şekilleri:

Serial.print(val) , Serial.println(val)
Serial.print(val, format) , Serial.println(val, format)

Parametre olarak aldıkları veriyi seri monitor ekranına yazarlar.

C gibi dillerde kullanılan kaçış karakterleri ( \t, \n vs. ) bu fonksiyonlar içinde geçerlidir.

Ondalıklı sayılar yazdırıldığın da varsayılan hassasiyet olan virgülden sonraki 2 basamağı yazdırılır.

İkinci parametre olarak alınan format değişkeni ile yazdırma hassasiyeti veya yazdırılan sayının hangi taban

aritmetiğinde olması istendiği ayarlanabilir.Serial.println(1.23456) şekildeki kullanımda ekrana onluk tabanda 1.23 yazdırılır.

Serial.println(1.23456, 3) şeklindeki bir kullanımda ekrana 1.234 çıktısını yani, virgülden sonra üç basamağı yazdırılır.

Daha farklı hassasiyetler için örnekteki 3 rakamını değiştirebiliriz.
Serial.println(123, format) kullanımında format değişkeni değer olarak

BIN ( ikilik ), OCT ( sekizlik ), DEC ( ondalık), HEX ( on altılık ) değerlerini alır ve bu aldığı değerlere uygun tabanda
sayı formatlandırılarak yazdırılır.Not: Bu kullanım şekli ondalıklı sayılar için geçerli değildir.

read()
Seri Porttan gelen veriyi ilk byte ile başlayarak sırayla okuma işlemini gerçekleştirir ve okuduğu her değerin int karşılığını döndürür. Bu int değer tip dönüşümü yapılarak istenilen formda kullanılabilir. Eğer okunacak veri yoksa -1 değerini döndürür.

readBytes()
readBytes fonksiyonu Serial Porttan gelen veriyi istenilen byte adedinde okuyarak char veya byte tipinde

bir diziye yazma işlemini gerçekleştirir. Bu işlemi gerçekleştirirken geriye kaç byte lık işlem yaptığını int tipinde döndürür.

Serial.readBytes(buffer, length)

buffer : char veya byte tipinde bir dizi

length : int tipinde kaç byte lık okuma yapılacağı

readBytesUntil()
Bu fonksiyon readBytes fonksiyonundan farklı olarak bir char parametre daha alır ve bu aldığı char parametre gelen veri dizisi içerisinde varsa okuma işlemini sonlandırır.

Serial.readBytesUntil(character,buffer, length)

character : aramak için char tipinde karakter

buffer : char veya byte tipinde bir dizi

length : in tipinde kaç byte lık okuma yapılacağı

readString()

Bu fonksiyon Serial Porta gelen girdi dizisini satır sonuna kadar okuyarak okunan değeri String formunda geri döndürür.

readStringUntil()
Bu fonksiyon readString fonksiyonundan farklı olarak bir char parametre daha alır ve bu aldığı char parametre gelen veri dizisi içerisinde varsa okuma işlemini sonlandırır.

setTimeout()
Bu fonksiyon ile Seri Porttan gelecek olan verinin maksimum ne kadar bekleneceği mili saniye cinsinden ayarlanır.

readBytes, readBytesUntil, parseFloat veya parseInt gibi fonksiyonların varsayılan bekleme süreleri 1000 ms’dir.

write()
Bu fonksiyon print fonksiyonuna benzer bir işlev görür. Tek byte büyüklüğündeki değerleri yazdırmakta, String değerler ve char veya byte tipinde dizileri yazdırmakta kullanılır. Alacağı ikinci bir parametre ile de yazdırılan String veya dizinin kaç elemanının yazdırılacağı ayarlanabilir. Ayrıca write fonksiyonu geri dönüş değeri olarak üzerinde işlem yapılan byte sayısı döndürür.

findUntil()

flush()

availableForWrite()

peek()

serialEvent()

USB (32u4 tabanlı kart ve Due/Zero)

Fare veya Klavye kütüphanesini kullanırken, önce Serial.print () kullanarak çıktısını test etmek en iyisi olabilir. Bu şekilde, hangi değerlerin bildirildiğini bildiğinizden emin olabilirsiniz.

Klavye işlevleri, bir Leonardo, Micro veya Due'nun bağlı bir bilgisayara tuş vuruşlarını göndermesini sağlar.

Not: Olası ASCII karakterleri, özellikle yazdırılmayan ASCII karakterleri, Klavye kütüphanesi ile gönderilemez . Kütüphane, değiştirici tuşların kullanılmasını destekler. Değiştirici tuşlar aynı anda basıldığında başka bir tuşun davranışını değiştirir. Desteklenen tuşları ve kullanımları ile ilgili ek bilgi için. Buraya bakın 

Başlıca Fonksiyonları şunlardır;
Keyboard.begin ()
Keyboard.end ()
Keyboard.press ()
Keyboard.print ()
Keyboard.println ()
Keyboard.release ()
Keyboard.releaseAll ()
Keyboard.write ()


ARDUİNO PİNOUT DİAGRAM


Loading...
Ad

Arduino Autocad Bilim-Teknoloji Biyomedikal Sistemler C-Programlama C# C# Programlama Diferansiyel Denklemler Dijital Kontrol Sistemleri Elektrik Devreleri 1 Elektrik Devreleri 2 Elektrik Makineleri 1 Elektrik Makineleri 2 Elektrik Tesislerinde Koruma Elektromantetik Alan Teorisi Elektromantetik Dalga Teorisi Elektronik 1 Elektronik 2 Elektronik-Devreler EmguCV Genel Fizik Genel Kimya Genel Matematik Gömülü Linux Güç Elektroniği Haberleşme Sistemleri İşaret ve Sistemler Lineer-Cebir Lojik Devreler Malzeme Bilimi MATLAB Mikroişlemciler Olasılık ve İstatistik Otomatik Kontrol Sistemleri PLC-Otomasyon Proje Yönetimi ve Girişimcilik Raspberry Pi Sayısal Analiz Sayısal İşaret İşleme Teknik-Kutuphane Termodinamik Yüksek Gerilim Tekniği
false
ltr
item
Çağlar GÜL: ARDUİNO Kullanım Kılavuzu (Bütün Fonksiyonlar)
ARDUİNO Kullanım Kılavuzu (Bütün Fonksiyonlar)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitC4kWO48ZMtXfzNI2sN30YZjfaUMoLK9H98iGaObDTMIKjCUN_sISfAWnpQtZLaBoIu9qDDVsTdgrtyHou1nmA5jkgVQhx1syB2vAlxzQxGE1Okde9UdcBYY0aa-TTVl0ncsvFPPEpwk/s640/arduino-1280x800.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitC4kWO48ZMtXfzNI2sN30YZjfaUMoLK9H98iGaObDTMIKjCUN_sISfAWnpQtZLaBoIu9qDDVsTdgrtyHou1nmA5jkgVQhx1syB2vAlxzQxGE1Okde9UdcBYY0aa-TTVl0ncsvFPPEpwk/s72-c/arduino-1280x800.png
Çağlar GÜL
https://elektronikafa.blogspot.com/2017/03/arduino-kullanm-klavuzu-butun.html
https://elektronikafa.blogspot.com/
http://elektronikafa.blogspot.com/
http://elektronikafa.blogspot.com/2017/03/arduino-kullanm-klavuzu-butun.html
true
871250089272898028
UTF-8
Not found any posts Not found any related posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU Tag ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Contents See also related Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy