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.
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. }
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.