Soru:
AnalogWrite ve digitalWrite arasındaki fark nedir?
pijemcolu
2017-03-16 14:06:51 UTC
view on stackexchange narkive permalink

Başlıktan da anlaşılacağı gibi. İkisi arasındaki fark nedir?

analogWrite (pin, 0-255) ile digitalWrite(pin,LOW-HIGH)

Kaba olmak istemem ama arduino.cc'deki belgelerde veya IDE'de bulunan bu konuda kafa karıştırıcı olan şey neydi?
Yedi yanıtlar:
TanyaV
2017-03-16 17:18:08 UTC
view on stackexchange narkive permalink

digitalWrite, belirtilen pini iki durumdan birine ayarlar - YÜKSEK / DÜŞÜK, bu sırasıyla 5v (bazı kartlarda 3,3v) ve toprağa eşittir.

analogWrite kullanılan çıkış türüne göre değişebilir .

Bir PWM pinine uygulanırsa - pini periyodik bir yüksek / düşük sinyale ayarlayacaktır, burada yüksek harcanan sinyal yüzdesi yazılan değerle orantılıdır. örneğin -

  analogWrite (PWMpin, 255)  

% 100 YÜKSEK,

  analogWrite (PWMpin, 127)  

Zamanın% 50 YÜKSEK ve% 50 DÜŞÜK olacaktır

AnalogWrite'ı bir DAC pinine uygularken (DUE veya MEGA ) analogWrite, belirtilen pinin, belirtilen analog değere orantılı bir voltaj düzeyi vermesine neden olur

Örneğin, Due üzerinde, maksimum voltaj 3.3v ve varsayılan 8 bitlik analog çözünürlük - [0: 255]

  analogWrite (DACpin, 255)  

Belirtilen pinin 3.3v çıkışı ve-

  analogWrite (DACpin, 127)  

Belirtilen pinin 1.35v çıktısına neden olur

Hayır, Mega'da DAC yok.
haklısınız, cevap bunu yansıtacak şekilde düzenlendi.
Harika. Düzenlemeyi daha özlü hale getirme özgürlüğünü aldım.
Diğer platformlarla daha iyi uyumluluk sağlamak için bir "maxanalog" tanımı veya sabitinin olduğuna inanıyorum. Esp8266, 0 ile 1024 arasında değişebilen bir analog yazıya sahiptir. * RGB led kontrol cihazımın neden aynı kodla o kadar parlak olmayacağını bulmaya çalışırken bazı tüyleri kazıdım, bunun güç farkından kaynaklandığını düşündüm veya voltaj, ancak uygun (kazanç?) faktörü olan bir MOSFET kullandım. Zamanın (1024/256) kadarı açıktı.
Hasan
2017-03-20 08:55:54 UTC
view on stackexchange narkive permalink

analogWrite (): analogWrite () yöntemi, bir PWM çıkış pininin değerini ayarlar. AnalogWrite (), 0 - 255 ölçeğindedir, öyle ki analogWrite (255)% 100 görev döngüsü (her zaman açık) ve analogWrite (127)% 50 görev döngüsü (sürenin yarısında).

PWM Duty Cycle

Sözdizimi : analogWrite (pin, değer)

Nerede,

pin: PWM çıkış pin numarası.

val: 0 (her zaman kapalı) ile 255 (her zaman açık) arasında görev döngüsünün int değeri

Örnek Kod :

  int outLed = 10; // dijital pin 10int değerine bağlı LED = 0; // okunan değeri saklamak için değişken analogIN = 3; // giriş pinvoid setup () {pinMode (outLed, OUTPUT); // PWM pinini OUTPUT olarak ayarlayın} void loop () {value = analogRead (analogIN); // analogIN değerini okuyun (0 ile 1023 arasındaki değerler) analogWrite (outLed, değer / 4); // outLed'deki okuma değerini ayarlar (0 ile 255 arasındaki değerler)}  

digitalWrite: digitalWrite () yöntemi, dijital bir pinin değerini şu şekilde ayarlar: Yüksek veya düşük. Burada, YÜKSEK için 5 V (veya 3,3 V kartlarda 3,3 V), DÜŞÜK için 0 V (toprak).

Sözdizimi: digitalWrite (pin, değer)

Nerede,

pin: pin numarası

val: HIGH veya LOW

Örnek Kod:

  int ledPin = 13; // LED dijital pin 13void kurulumuna bağlı () {pinMode (ledPin, OUTPUT); // dijital pini çıktı olarak ayarlar} void loop () {digitalWrite (ledPin, HIGH); // LED'i gecikmeye ayarlar (1000); // ikinci bir digitalWrite için bekler (ledPin, LOW); // LED kapanma gecikmesini ayarlar (1000); // bir saniye bekler}  
Nick Gammon
2017-03-19 14:27:13 UTC
view on stackexchange narkive permalink

digitalWrite , çıkış pinini LOW veya HIGH olarak ayarlar (burada bu voltajlar işlemcinin V cc değerine bağlıdır. Uno veya Mega için 0V veya 5V (veya ona yakın).

İşte digitalWrite (DÜŞÜK) ekran görüntüsü:

digitalWrite (LOW)

Bu , çıkış pini 0V'dadır.


Şimdi digitalWrite (HIGH) için:

Çıkış voltajı 5V.

digitalWrite (HIGH)


analogWrite işlemci zamanlayıcılarını PWM çıkışı (darbe genişliği modülasyonu) için yapılandırdığı için gerçekten PWMwrite olarak adlandırılmış olmalıydı.

AnalogWrite (1) deneyelim:

analogWrite (1)

Gerilim seviyesinin çoğu zaman 0V olduğunu ve Kısa süreler için 5V. Ayrıca, frekansın 490 Hz olduğunu ve analogWrite için referans sayfasının söylediği gibi olduğunu görüyorsunuz.


Yakınlaştırma:

analogWrite (1) - zoomed

Çıktı 8 µs için yüksek, bu da zamanlayıcının periyodu olan 2048 µs değerinin tam olarak 1 / 256'sı. Yani, bizde 1/256 (0. % 39).


AnalogWrite (127) deneyelim - 0'dan 255'e kadar:

analogWrite (127)

Artık çıktının tam olarak yarıda YÜKSEK ve kalan zamanın DÜŞÜK olduğunu görebilirsiniz.


AnalogWrite (254) deneyelim:

analogWrite (254)

Bu, analogWrite (1) 'in tersidir. Çıkış, kısa bir süre dışında her zaman YÜKSEK olur. Yakınlaştırma:

analogWrite (254) - zoomed

Artık çıktı 8 µs için kapalı - daha önceki görüntüyle karşılaştırıldığında 8 µs için açıktı.


analogWrite (0) , digitalWrite (LOW) ile aynıdır.

analogWrite (255) , digitalWrite (HIGH) ile aynıdır.

Bu, wiring_analog.c'deki ilgili kodla kanıtlanmıştır:

  if (val == 0) {digitalWrite (pin, LOW);} else if (val = = 255) {digitalWrite (pin, HIGH);}  

Özet

analogWrite temelde donanım zamanlayıcılarını PWM çıkışı yapacak şekilde yapılandırır. Bunu yaptığınızda, zamanlayıcı donanımı, 0'ın her zaman kapalı olduğu, 255'in her zaman açık olduğu ve aradaki bazı değerler size PWM (darbeli çıkış) veren istenen görev döngüsünü (0'dan 255'e) çıkarır.


Zamanlayıcılar hakkında daha fazla bilgi için zamanlayıcılarla ilgili sayfama bakın.

Code Gorilla
2017-03-16 14:20:04 UTC
view on stackexchange narkive permalink

digitalWrite, pimi, o pin için tekrar digitalWrite çağrılana kadar tam olarak bu değerde kalan yüksek veya düşük bir değere ayarlar.

analogWrite, pimi, darbe uzunluğuna dayalı bir salınım değerine ayarlar. görev döngüsünün ikinci parametre olarak belirtilmesi.

Yani:

  digitalWrite (5, HIGH); // Pin 5, highanalogWrite (6, 127) olur; // Pin 6, yaklaşık 250 Hz'de 0v ile 5v (veya 3.3v) arasında düzenli olarak salınır.  
Tanmay Yerunkar
2017-03-20 00:03:42 UTC
view on stackexchange narkive permalink

analogWrite (): Bir pime analog bir değer (PWM dalgası) yazar. Farklı parlaklıklarda bir LED'i yakmak veya bir motoru çeşitli hızlarda sürmek için kullanılabilir. analogWrite () çağrısından sonra, pin, bir sonraki analogWrite () çağrısına (veya digitalRead () veya digitalWrite () aynı pin üzerinde). Çoğu pimdeki PWM sinyalinin frekansı yaklaşık 490 Hz'dir. Uno ve benzeri kartlarda 5 ve 6 numaralı pinler yaklaşık 980 Hz frekansa sahiptir. Leonardo'daki 3 ve 11 numaralı pinler de 980 Hz'de çalışıyor.

Ayrıntılar için şu adresi ziyaret edin: https://www.arduino.cc/en/Reference/analogWrite

analogRead (): Belirtilen analog pinden değeri okur. Arduino kartı 6 kanal (Mini ve Nano'da 8 kanal, Mega'da 16), 10-bit analogdan dijitale dönüştürücü içerir. Bu, 0 ile 5 volt arasındaki giriş voltajlarını 0 ile 1023 arasındaki tam sayı değerlerine eşleyeceği anlamına gelir. Bu, birim başına 5 volt / 1024 birim veya 0,0049 volt (4,9 mV) okumaları arasında bir çözünürlük sağlar. Giriş aralığı ve çözünürlük analogReference () kullanılarak değiştirilebilir.

Ayrıntılar için şu adresi ziyaret edin: https://www.arduino.cc/en/Reference/analogRead

sam
2017-04-07 17:15:54 UTC
view on stackexchange narkive permalink

digitalWrite , belirtilen pimi iki durumdan birine ayarlar - HIGH / LOW

Where, HIGH = 5 V and LOW = 0 V

analogWrite PWM pininin PWM değerini ayarlayın

(Arduino UNO'da PWM pinleri 3, 5, 6, 9, 10, 11'dir)

pini periyodik bir yüksek / düşük sinyale ayarlayın.

  analogWrite (PWMpin, 255)  

% 100 YÜKSEK olurken

  analogWrite (PWMpin, 127)  

Zamanın% 50 YÜKSEK ve% 50 DÜŞÜK zaman olacaktır

PaulMurrayCbr
2017-03-26 14:46:01 UTC
view on stackexchange narkive permalink

Peki analogWrite (X, 255) ve digitalWrite (X, HIGH) arasındaki fark nedir? Muhtemelen hiçbir şey yok, belki de işlemcinin PWM kullanması gerekmediğini anlamak için fazladan bazı şeyler yapması ve aynı zamanda stil yapması dışında.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...