Başlıktan da anlaşılacağı gibi. İkisi arasındaki fark nedir?
analogWrite (pin, 0-255)
ile digitalWrite(pin,LOW-HIGH)
Başlıktan da anlaşılacağı gibi. İkisi arasındaki fark nedir?
analogWrite (pin, 0-255)
ile digitalWrite(pin,LOW-HIGH)
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
Ö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
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).
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}
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ü:
Bu , çıkış pini 0V'dadır.
Şimdi digitalWrite (HIGH) için:
Çıkış voltajı 5V.
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:
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:
Çı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:
Artık çıktının tam olarak yarıda YÜKSEK ve kalan zamanın DÜŞÜK olduğunu görebilirsiniz.
AnalogWrite (254) deneyelim:
Bu, analogWrite (1) 'in tersidir. Çıkış, kısa bir süre dışında her zaman YÜKSEK olur. Yakınlaştırma:
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);}
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.
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.
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
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
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.