Arduino Programlama Dili – Analog Giriş ve Çıkışlar

0
5216
Okunma

Analog Giriş ve Çıkışlar


analogReference()

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.

analogRead() (analog okuma)

Belirtilen analog pinden değeri okur. Arduino kartı, 6 kanal (Mini ve Nano’da 8 kanal, Mega’da 16), 10 bitlik analogdan dijitale çeviriciye sahiptir.

Bu, 0 ile 5 volt arasındaki giriş voltajlarını 0 ile 1023 arasında tam sayı değerlerine haritalandırması anlamına gelir.Bu, 5 volt / 1024 ünite veya birim başına 0,009 volt (4,9mV) okuma arasında bir çözünürlük verir.

Giriş aralığı ve çözünürlük, analogReference() kullanılarak değiştirilebilir. Bir analog girişi okumak ~ 100 mikrosaniye (0.0001 s) alır, bu nedenle maks okuma hızı saniyede ~ 10.000 kez olur.

int analogPin = 3;                  // analogPin değişkeninin değeri 3 verip, 3. pini atadık.
                                    // Potun 1. ve 3. bacağı 5v ve toprağa bağlanacaktır.
int val = 0;                        // Okunan değeri depolamak için değişken val tanımaldık.

void setup()
{
 Serial.begin(9600);                // Serial iletişimi açtık.
}
void loop()
{
 val = analogRead(analogPin);      // val değişkenine analogPin değişkeninden okunan değeri atadık.
 Serial.println(val);              // val değerini seri monitörde yazdırdık.
}

anologWrite() (PWM)

Bir pine bir analog değer (PWM dalgası) yazar. Değişik parlaklıklarda bir LED’i aydınlatmak veya çeşitli hızlarda bir motor sürmek için kullanılabilir.

analogWrite() çağrısından sonra pin, analogWrite() için sonraki çağrı (veya aynı pin üzerinde digitalRead() veya digitalWrite() çağrısı) oluncaya kadar belirtilen görev döngüsünün kararlı bir kare dalga oluşturacaktır.

Çoğu pin üzerindeki PWM sinyalinin frekansı yaklaşık 490 Hz‘dir.
Arduino Uno ve benzeri kartlarda 5 ve 6 numaralı pinlerin frekansı yaklaşık 980 Hz‘dir.
Arduino Leonardo’da 3. ve 11. pinler de 980 Hz‘de çalışıyor.
Çoğu Arduino kartı (ATmega168 veya ATmega328 ile olanlar) üzerinde bu işlev 3, 5, 6, 9, 10 ve 11  pinler üzerinde çalışır.
Arduino Mega’da pin 2 – 13 ve 44 – 46‘da çalışır.
Eski Arduino ATmega8’e sahip panolar yalnızca 9, 10 ve 11 numaralı pimlerde analogWrite() desteklemektedir.
Arduino Due, analogWrite() 2 ila 13 pinleri ve ayrıca DAC0 ve DAC1 pinlerini destekler.

PWM pinlerinin aksine DAC0 ve DAC1, Dijital-Analog dönüştürücülerdir ve gerçek analog çıkışlar gibi davranırlar. analogWrite() çağrılmadan önce pini çıkış olarak ayarlamak için pinMode() öğesini aramanız gerekmez. analogWrite işlevinin analog pinler veya analogRead işleviyle ilgisi yoktur.analogWrite() işlevinde parantez içinde 0 (her zaman kapalı) ile 255 (her zaman açık) değerler kullanılır.

Notlar ve Bilinen Sorunlar:5 ve 6 numaralı pimlerde üretilen PWM çıkışlarının beklenenden daha yüksek çalışma devreleri olacaktır. Bunun nedeni, bu PWM çıkışlarını üretmek için kullanılan aynı dahili zamanlayıcıyı paylaşan millis() ve delay()işlevleri ile olan etkileşimlerdir.

Bu, çoğunlukla düşük çalışma devri ayarları (örn., 0-10) üzerinde fark edilir ve 5 ve 6  numaralı pinlerdeki çıkışın tamamını kapatmayan 0 değerine neden olabilir.

int ledPin = 9;                    // ledPin 9 değerini alarak 9. pine tanımlandı.
int analogPin = 3;                 // analogPin 3 değerini aldı, potansiyometre bağlanacak.
int val = 0;                       // Okunan değeri depolamak için değişken val tanımaldık.

void setup()
{
 pinMode(ledPin, OUTPUT);          // ledPin değişkenini yani 9. pini çıkış olarak atadık.
}
void loop()
{
 val = analogRead(analogPin);      // val değişkenine potansiyometreden gelen değeri atadık.
 analogWrite(ledPin, val / 4);     // val değerini 4'e bölüp çıkan değeri ledpine yazdırdık.
                                   // analogRead değerleri 0'dan 1023'e, analogWrite değerleri 0'dan 255'e
}

İlgili Örnekler:

Arduino Yerleşik(Temel) Örnekler

1. Basics (Temeller)

  • Analog Read Serial: Potansiyometreyi okuyun, durumunu Arduino Seri Monitörüne yazdırın.
  • Bare Minimum: Arduino taslağını başlatmak için gereken minimum kod.
  • Blink: Bir LED’i açar ve kapatır.
  • Digital Read Serial: Bir anahtarı okuyun, durumu Arduino Seri Monitörüne yazdırın.
  • Fade: Bir LED’in kararıp aydınlanması arasındaki zaman ve şiddet farkını ayarlar.
  • Read Analog Voltage: Bir analog giriş okur ve Serial Monitor’e voltajı yazdırır.

3. Analog

  • Analog In Out Serial: Analog giriş pinini okuyun, sonucu eşleştirin ve ardından bir LED’i karartmak veya aydınlatmak için bu verileri kullanın.
  • Analog Input: Bir LED’in yanıp sönmesini kontrol etmek için bir potansiyometre kullanın.
  • Analog Write Mega: Arduino Mega kartını kullanarak 12 LED’i tek tek açıp kapayın.
  • Calibration: Beklenen analog sensör değerleri için maksimum ve minimum tanımlayın.
  • Fading: LED’i Soldurmak için analog çıkış (PWM pin) kullanın.
  • Smoothing: Bir analog girişin çoklu okunması ve ortalama alınması.

NOT: Buradaki bilgiler arduino.cc sitesinden Türkçeye çevrilmiştir.
Türkçe çevirinin tüm hakları saklıdır.
Bu web sayfası sadece link olarak paylaşılabilir.
Sayfada herhangi bir hata, öneri ve yorumlarınız için iletişim kurmanızı bekleriz.


CEVAP VER

Please enter your comment!
Please enter your name here

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.