Arduino

Arduino Giriş/Çıkış Fonksiyonları

Arduino kartındaki pinler, giriş veya çıkış olarak yapılandırılabilir. Bu modlardaki pinlerin işleyişini açıklayacağız. Arduino analog pinlerinin çoğunun, dijital pinlerle tam olarak aynı şekilde yapılandırılabileceğini ve kullanılabileceğini unutmamak önemlidir.

Pinleri Giriş Olarak Ayarlama (INPUT)

Arduino pinleri varsayılan INPUT olarak yapılandırılmıştır, bu nedenle giriş olarak kullanırken pinMode() ile açık olarak bildirilmeleri gerekmez. Bu şekilde yapılandırılan pinlerin, yüksek empedanslı bir durumda olduğu söylenir. Giriş pinleri, örnekleme yaptıkları devrede, pinin önündeki 100 megaohm’luk bir dizi rezistansına eşdeğer oldukça küçük taleplerde bulunurlar.

Bu, giriş pinini bir durumdan diğerine geçirmek için çok az akım aldığı anlamına gelir. Bu, pinleri, kapasitif bir dokunma algılayıcısının uygulanması veya bir fotodiyot olarak bir LED’in okunması gibi görevler için yararlı hale getirir.

PinMode (pin, INPUT) olarak ayarlanmış pinler, bunlara bağlı hiçbir şey olmadan veya diğer devrelere bağlı olmayan tellerle bağlantılı olarak, pin durumundaki rastgele değişimleri rapor eder, çevreden gelen elektriksel gürültüyü toplar.

Çekme Dirençleri (Pull-Up)

Çekme dirençleri, INPUT mevcut değilse, bir giriş pinini bilinen bir duruma yönlendirmek için genellikle faydalanılır. Bu, bir çekme direncinin (+ 5V’a) veya girişte bir aşağı çekme direncinin (toprağa direnç) eklenmesiyle yapılabilir. Bir 10K direnç, bir çekme veya aşağı çekme direnci için iyi bir değerdir.

Dahili Pull-up Direnç Kullanılarak Ayarlanmış Pinler

Yazılımdan erişilebilen Atmega yongasına yerleşik 20.000 çekme direnci vardır. Bu dahili pull-up dirençleri, pinMode() ‘yi INPUT_PULLUP olarak ayarlayarak erişilebilir. Bu, HIGH sensörün OFF olduğu ve LOW sensörün ON olduğu anlamına gelen INPUT modunun davranışını etkili bir şekilde tersine çevirir. Bu çekmenin değeri kullanılan mikrodenetleyiciye bağlıdır. Çoğu AVR tabanlı kartta, değerin 20kΩ ile 50kΩ arasında olması garanti edilir. Arduino Due, 50kΩ ile 150kΩ arasındadır. Tam değer için, kartınızdaki mikro denetleyicinin veri sayfasına bakın.

Bir sensörü INPUT_PULLUP ile yapılandırılmış bir pine bağlarken, diğer ucun toprağa bağlanması gerekir. Basit bir anahtar durumunda, anahtar açık olduğunda pin HIGH okumaya ve anahtara basıldığında LOW’a neden olur. Çekme dirençleri, giriş olarak yapılandırılmış bir pine bağlı olan bir LED’i yakmak için yeterli akım sağlar. Bir projedeki LED’ler çalışıyor gibi gözüküyorsa, ancak çok zayıfsa, bunun olması muhtemeldir.

Bir pinin HIGH veya LOW yukarı çekme dirençlerini kontrol edip etmediğini kontrol eden aynı yazmaçlar (dahili çip bellek konumları). Sonuç olarak, pin INPUT mode olduğunda, yukarı-çekme dirençlerine sahip olacak şekilde konfigüre edilen bir pin, eğer pin daha sonra pinMode() ile bir OUTPUT moduna getirilirse, pin HIGH olarak konfigüre edilir. Bu, diğer yönde de çalışır ve HIGH durumda kalan bir çıkış pini, pinMode () ile bir girişe geçildiğinde çekme direncine sahip olacaktır.

Örnek:

Pinleri ÇIKIŞ Olarak Ayarlama (OUTPUT)

PinMode() ile OUTPUT olarak yapılandırılan pinlerin düşük empedanslı bir durumda olduğu söylenir. Bu, diğer devrelere önemli miktarda akım sağlayabildikleri anlamına gelir. Atmega pinleri kaynağı (pozitif akım sağlar) veya diğer cihazlara / devrelere akımın 40 mA (miliamper) değerine kadar (negatif akım sağlar) kaynak yapabilir. Bu, bir LED’i parlak bir şekilde yakmak için yeterlidir (seri rezistansı unutmayınız), ya da birçok sensörü çalıştırırlar, ancak röleleri, solenoitleri veya motorları çalıştırmak için yeterli akım yoktur.

Çıkış pinlerinden yüksek akım cihazlarını çalıştırmaya çalışmak, pin içindeki çıkış transistörlerine zarar verebilir veya yok edebilir veya tüm Atmega çipine zarar verebilir. Çoğunlukla, bu mikrodenetleyicide bir “ölü” pin ile sonuçlanır, ancak kalan yongalar hala yeterli şekilde çalışır. Bu nedenle, belirli bir uygulama için pinlerden maksimum akım çekilmesi gerekmediği sürece, OUTPUT pinlerini diğer cihazlara 470Ω veya 1k dirençler üzerinden bağlamak iyi bir fikirdir.

pinMode() Fonksiyonu Kullanımı

PinMode() fonksiyonu, bir girdi veya çıktı olarak davranması için belirli bir pin yapılandırmak için kullanılır. Dahili çekme dirençlerini INPUT_PULLUP modu ile etkinleştirmek mümkündür. Ayrıca, INPUT modu dahili çekimleri açıkça devre dışı bırakır.

pinMode() Yazımı:

  • pin − ayarlanacak pinin numarasını ifade eder.
  • mode − INPUT, OUTPUT  yada INPUT_PULLUP

Örnek:

Arduino digitalWrite() Kullanımı

DigitalWrite() işlevi, dijital bir pine HIGH veya LOW bir değer yazmak için kullanılır. Pin pinMode() ile bir OUTPUT olarak yapılandırılmışsa, LOW için 0V, HIGH için 5V (veya 3,3V kurullarında 3.3V) olarak karşılık gelen değere ayarlanacaktır. Pin bir INPUT olarak yapılandırılmışsa, digitalWrite(), giriş pini üzerindeki dahili pullupı  etkinleştirir veya devre dışı bırakır. Dahili çekme direncini etkinleştirmek için pinMode() ‘u INPUT_PULLUP olarak ayarlamanız önerilir.

Eğer pinMode() ‘u OUTPUT olarak ayarlamazsanız ve bir LED’i bir pine bağlarsanız, digitalWrite(HIGH) çağırırken, LED sönebilir. Açıkça pinMode() ayarlanmadan, digitalWrite() büyük bir akım sınırlayıcı direnç gibi davranan dahili çekme direncini etkinleştirmiş olacaktır.

Arduino digitalWrite Yazımı:

  • pin − ayarlanmak istenen pin numarası
  • value − HIGH yada LOW.

Örnek:

Arduino analogRead( ) Kullanımı

Arduino, pinlerinden birine uygulanan voltaj olup olmadığını algılayabilir ve digitalRead() fonksiyonu aracılığıyla raporlayabilir. ON/OFF  sensörü (bir nesnenin varlığını algılar) ile değeri sürekli olarak değişen bir analog sensör arasında bir fark vardır. Bu tip sensörü okumak için farklı bir pin tipine ihtiyacımız var.

Arduino kartının sağ alt kısmında, “Analog In” olarak işaretlenmiş altı pini göreceksiniz. Bu özel pinler sadece kendilerine uygulanan bir voltajın değil, aynı zamanda değerinin olup olmadığını da belirtir. AnalogRead() işlevini kullanarak, pinlerden birine uygulanan voltajı okuyabiliriz.

Bu fonksiyon 0 ile 1023 arasında bir sayı verir, bu da 0 ile 5 volt arasındaki voltajları temsil eder. Örneğin, 0 numaralı pine uygulanmış 2,5 V’luk bir voltaj varsa, analogRead(0) 512 değerini döndürür.

analogRead() Fonksiyonu Yazımı

pin − okuma yapılacak analog pin numarası girilir. (0 – 5 çoğunlukla, 0 – 7  Mini ve Nano, 0 – 15  Mega verisyonlarında kullanılabilir)

 

 

 

 

Yorum yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: