Arduino Due ve Zero Kartlar için Çözünürlük

analogWriteResolution()

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ğerlerleanalogWrite() 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.
}

analogReadResolution()

analogReadResolution(), Arduino Due ve Zero için Analog API’nin bir uzantısıdır.

analogRead() tarafından döndürülen değerin boyutunu (bit olarak) ayarlar. AVR tabanlı panolara geriye dönük uyumluluk için varsayılan olarak 10 bit (0-1023 arasındaki değerleri döndürür).

Due ve Zero, çözünürlüğü 12 olarak değiştirerek erişilebilen 12 bit ADC yeteneklerine sahiptir. Bu, analogRead() değerlerini 0 ile 4095 arasında döndürür.

Syntax (Sözdizimi) ve Parametreler:

analogReadResolution(bit değeri)

Bit Değeri: analogRead () işlevi tarafından döndürülen değerin çözünürlüğünü (bit olarak) belirler. Bu 1’i ve 32’yi ayarlayabilirsiniz. Çözünürlükleri 12’den daha yüksek olarak ayarlayabilirsiniz, ancak analogRead() tarafından döndürülen değerler de yaklaşım yaşanacaktır.

Not:
analogReadResolution() değerini tahtanın yeteneklerinden daha yüksek bir değere ayarlarsanız, Arduino yalnızca en yüksek özünürlüğüyle geri kalan ekstra bitleri sıfırlarla doldurarak rapor verecektir.

Örneğin: Due veya Zero’uanalogReadResolution(16) ile kullanmak, gerçek ADC okumasını ve son 4 biti sıfırlarla doldurulan ilk 12 bitle yaklaşık 16 bitlik sayı verecektir. analogReadResolution() değerini kartın yeteneklerinden daha düşük bir değere ayarlarsanız, ADC’den okunan ekstra bitler için boşluk atılır.

16 bit çözünürlüğü (veya gerçek donanım yeteneklerinden daha yüksek herhangi bir çözünürlük) kullanmak, gelecekte kurulu bir kod satırını değiştirmeden kullanılabilir olduğunda, daha yüksek çözünürlüklü ADC’ye sahip aygıtları otomatik olarak işleyen eskizleri yazmanıza olanak tanır.


void setup() {
Serial.begin(9600); // Seri İletişimi Başlat.
}
void loop() {
analogReadResolution(10); // Okuma çözünürlüğü 10 bit
Serial.print("ADC 10-bit (default) : "); // Seri monitöre "ADC 10-bit (default) : " yazdır.
Serial.print(analogRead(A0)); // A0'dan aldığın veriyi seri monitöre yaz.

analogReadResolution(12); // Okuma çözünürlüğü 12 bit
Serial.print(", 12-bit : "); // Seri monitöre ", 12-bit : " yazdır.
Serial.print(analogRead(A0)); // A0'dan aldığın veriyi seri monitöre yaz.

analogReadResolution(16); // Okuma çözünürlüğü 16 bit
Serial.print(", 16-bit : "); // Seri monitöre ", 16-bit : " yazdır.
Serial.print(analogRead(A0)); // A0'dan aldığın veriyi seri monitöre yaz.

analogReadResolution(8); // Okuma çözünürlüğü 8 bit
Serial.print(", 8-bit : "); // Seri monitöre ", 8-bit : " yazdır.
Serial.println(analogRead(A0)); // A0'dan aldığın veriyi seri monitöre yaz.

delay(100); // 100 mili saniye bekle.
}


YAZAR : Admin

Elektronik Mühendisi / E.Üni. Kalibrasyon Lab. Sorumlusu / Biyomedikal Kalibrasyon Laboratuvarı Sorumlu Müdürü (Sağ.Bak.) / X-Işınlı Görüntüleme Sistemleri Test Kontrol ve Kalibrasyon Uzmanı (Sağ.Bak.) / Ultrason-Doppler Sistemleri Test Kontrol ve Kalibrasyon Uzmanı (Sağ.Bak.) - Hatalı veya kaldırılmasını istediğiniz sayfaları diyot.net@gmail.com bildirin

BU YAZIYI DA İNCELEDİNİZ Mİ ?

Arduino ile BD135 – BD136 transistörlerini kullanarak DC Motor kontrolü

Çeşitli robot projelerinde kullanılan DC motorları Arduinoya doğrudan bağlayıp çalıştıramayız. Çünkü Arduinonun giriş-çıkış pinleri en …

Bir cevap yazın