' AnalogWriteとdigitalWriteの違いは何ですか?

タイトルにあるとおり。 2つの違いは何ですか?

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

コメント

  • 失礼なことではありませんが' arduino.ccのドキュメントでこれについて混乱していたこと、またはIDE?

回答

digitalWriteは、指定されたピンを2つの状態(HIGH / LOW)のいずれかに設定します。それぞれ5v(一部のボードでは3.3v)とグランドに相当します。

analogWriteは使用する出力のタイプによって異なります。

PWMピンに適用すると、ピンが設定されます。周期的な高/低信号に対して、高に費やされた信号のパーセンテージは、書き込まれた値に比例します。たとえば、-

 analogWrite(PWMpin,255) 

高100%になります

 analogWrite(PWMpin,127) 

50%の確率でHIGHになり、50%の確率でLOWになります

analogWriteを適用する場合DACピン(DUE やMEGA などの一部のボードで利用可能)肛門へogWriteは実際に、指定されたピンに指定されたアナログ値に比例した電圧レベルを出力させます

たとえば、Dueでは、最大電圧は3.3v、デフォルトのアナログ分解能は8ビットです-[0: 255]

 analogWrite(DACpin,255) 

指定されたピンは3.3vを出力し、-

 analogWrite(DACpin,127) 

指定されたピンは1.35vを出力します

コメント

  • いいえ、メガにはDACがありません。
  • あなたは正しいです。これを反映するように回答を編集してください。
  • すばらしい。編集をより簡潔にするために自由を取りました。
  • " maxanalog "の定義または一定、他のプラットフォームとの互換性を向上させます。 esp8266には、0から1024の範囲のアナログ書き込みがあります。* I ' RGBLEDコントローラーがなぜ'同じコードでも同じくらい明るくはありません。電力や電圧の違いによるものだと思いましたが、適切な(ゲイン?)係数のMOSFETを使用しました。単に(1024/256)の間オンでした。

回答

analogWrite(): analogWrite()メソッドはPWM出力ピンの値を設定します。 AnalogWrite()は0〜255のスケールであり、analogWrite(255)は100%のデューティサイクル(常にオン)を要求し、analogWrite(127)は50%のデューティサイクル(半分の時間)です。

PWMデューティサイクル

構文:analogWrite(pin、val)

ここで、

pin:PWM出力ピン番号。

val:0(常にオフ)から255(常にオン)までのデューティサイクルのint値

サンプルコード:

int outLed = 10; //LED connected to digital pin 10 int value = 0; //variable to store the read value int analogIN = 3; //input pin void setup() { pinMode(outLed, OUTPUT); // set the PWM pin as OUTPUT } void loop() { value = analogRead(analogIN); // read the value of analogIN (values between from 0 to 1023) analogWrite(outLed, value/4); // sets the read value on outLed (values between from 0 to 255) } 

digitalWrite: digitalWrite()メソッドは、デジタルピンの値をHIGHまたはLOWに設定します。ここで、HIGHの場合は5V(または3.3Vボードでは3.3V)、LOWの場合は0V(グランド)です。

構文: digitalWrite(pin、val)

ここで、

pin:ピン番号

val:HIGHまたはLOW

サンプルコード:

int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second } 

回答

digitalWriteは、出力ピンをLOWまたはHIGHに設定します(これらの電圧はV ccに依存します)。プロセッサの。0Vまたは5V(またはそれに近い)のUnoまたはMegaの場合。

ここに “digitalWrite(LOW)のスクリーンショット:

digitalWrite(LOW)

つまり、出力ピンは0Vです。


digitalWrite(HIGH)の場合:

出力電圧は5Vです。

digitalWrite(HIGH)


analogWriteは、confであるため、実際にはPWMwriteという名前にする必要があります。 PWM(パルス幅変調)を出力するプロセッサタイマーを示します。

AnalogWrite(1)を試してみましょう:

アナログ書き込み(1)

電圧レベルはほとんどの場合0Vであり、短時間は5Vになります。また、周波数が490 Hzであることがわかります。これは、 analogWriteのリファレンスページに記載されているものです。


ズームイン:

アナログ書き込み(1)-ズーム

出力は8µsの間ハイです。これは、タイマーの周期である2048 µsのちょうど1/256です。したがって、1/256(0.39%)のデューティサイクルがあります。


AnalogWrite(127)を試してみましょう-0から255の中間:

アナログ書き込み(127)

これで、出力がちょうど半分の時間でHIGHになり、残りの時間でLOWになることがわかります。

<時間>

アナログ書き込み(254)を試してみましょう:

アナログ書き込み(254)

これはanalogWrite(1)の反対です。短い期間を除いて、出力は常にHIGHです。ズームイン:

アナログ書き込み(254)-ズーム

これで、出力は8 µsの間オフになります-以前の画像では8µsの間オンでしたが、


analogWrite (0)digitalWrite (LOW)と同じです。

analogWrite (255)digitalWrite (HIGH)と同じです。

これは、wiring_analog.cの関連コードによって証明されています:

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

概要

analogWriteは基本的に、PWMを出力するようにハードウェアタイマーを構成します。これを行うと、タイマーハードウェアは要求されたデューティサイクル(0から255)を出力します。ここで、0は常にオフ、255は常にオンであり、その間の値によってPWM(パルス出力)が得られます。


タイマーの詳細については、タイマーに関するマイページを参照してください。

回答

digitalWriteは、ピンを高い値または低い値に設定します。この値は、digitalWriteがそのピンに対して再度呼び出されるまで、正確にその値のままです。

analogWriteは、ピンに振動値を設定します。 2番目のパラメータとして指定されたデューティサイクルに基づくパルス長。

つまり:

digitalWrite (5, HIGH); // Pin 5 goes high analogWrite (6, 127); // Pin 6 oscillates regularly between 0v and 5v (or 3.3v) at about 250Hz. 

回答

analogWrite():アナログ値(PWM波)をピンに書き込みます。さまざまな明るさでLEDを点灯したり、さまざまな速度でモーターを駆動したりするために使用できます。 analogWrite()を呼び出した後、ピンは、次のanalogWrite()(またはa)を呼び出すまで、指定されたデューティサイクルの定常方形波を生成します。同じピンでdigitalRead()またはdigitalWrite()を呼び出します)。ほとんどのピンのPWM信号の周波数は約490Hzです。 Unoおよび同様のボードでは、ピン5と6の周波数は約980Hzです。 Leonardoのピン3と11も980Hzで動作します。

詳細については、 https://www.arduino.cc/en/Reference/analogWrite

analogRead():指定されたアナログピンから値を読み取ります。 Arduinoボードには、6チャンネル(MiniとNanoでは8チャンネル、Megaでは16チャンネル)、10ビットのアナログ-デジタルコンバーターが含まれています。これは、0〜5ボルトの入力電圧を0〜1023の整数値にマッピングすることを意味します。これにより、読み取り値間の分解能が5ボルト/ 1024ユニット、またはユニットあたり.0049ボルト(4.9 mV)になります。入力範囲と解像度は、analogReference()を使用して変更できます。

詳細については、 https://www.arduino.cc/en/Reference/analogRead

をご覧ください。回答

digitalWrite 指定されたピンを2つの状態のいずれかに設定します-HIGH / LOW

ここで、HIGH = 5VおよびLOW = 0 V

analogWrite PWMピンのPWM値を設定します

(Arduino UNOでは、PWMピンは3、5、6、9、10、11です)

ピンを設定します定期的な高/低信号に変換します。

analogWrite(PWMpin,255) 

100%の時間、HIGHになりますが、

analogWrite(PWMpin,127) 

50%の確率でHIGHになり、50%の確率でLOWになります

回答

AnalogWrite(X、255)とdigitalWrite(X、HIGH)の違いは何ですか?おそらく何もありません。ただし、プロセッサがPWMを使用する必要がなく、スタイルも使用しないようにするために、追加の処理を行う必要がある場合を除きます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です