analogWrite와 digitalWrite의 차이점은 ' 무엇입니까?

제목에 나와 있습니다. 둘의 차이점은 무엇인가요?

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

댓글

  • 저는 ' 무례하다는 뜻은 아니지만 arduino.cc의 문서에서 이에 대해 혼란 스럽거나 IDE?

Answer

digitalWrite는 지정된 핀을 HIGH / LOW 두 상태 중 하나로 설정합니다. 각각 5v (일부 보드에서는 3.3v) 및 접지와 동일합니다.

analogWrite는 사용되는 출력 유형에 따라 다를 수 있습니다.

PWM 핀에 적용하면 핀이 설정됩니다. 주기적인 높음 / 낮음 신호로, 여기에서 높게 소비 한 신호의 비율은 기록 된 값에 비례합니다. 예 :-

 analogWrite(PWMpin,255) 

HIGH 100 % 시간의 경우

 analogWrite(PWMpin,127) 

시간의 50 %는 높음, 시간의 50 %는 낮음

analogWrite를 적용 할 때 DAC 핀 (DUE 또는 MEGA 와 같은 일부 보드에서 사용 가능)에 연결 ogWrite는 실제로 지정된 핀이 지정된 아날로그 값에 비례하는 전압 레벨을 출력하도록합니다.

예를 들어, Due에서 최대 전압 3.3v 및 기본 아날로그 해상도 8 비트-[0 : 255]

 analogWrite(DACpin,255) 

지정된 핀이 3.3v를 출력하도록합니다. 그리고-

 analogWrite(DACpin,127) 

지정된 핀이 1.35v를 출력하도록합니다.

설명

  • 아니요, Mega에는 DAC가 없습니다.
  • 정답입니다.이를 반영하여 답변을 수정했습니다.
  • 좋습니다. 나는 자유로이 편집을 더 간결하게 만들었습니다.
  • " 최대 아날로그 " 정의 또는 상수, 다른 플랫폼과의 더 나은 호환성을 제공합니다. esp8266에는 0에서 1024까지의 아날로그 쓰기가 있습니다. * ' 내 RGB led 컨트롤러가 왜 내 RGB LED 컨트롤러가 작동하는지 알아보기 위해 머리카락을 긁었습니다. ' 동일한 코드로 밝지 않고 전력이나 전압의 차이 때문이라고 생각했지만 적절한 (게인?) 계수를 가진 MOSFET을 사용했습니다. 당시 (1024/256) 동안 만 켜져있었습니다.

답변

analogWrite () : analogWrite () 메서드는 PWM 출력 핀의 값을 설정합니다. analogWrite ()는 0-255의 척도이므로 analogWrite (255)는 100 % 듀티 사이클 (항상 켜짐)을 요청하고 analogWrite (127)는 50 % 듀티 사이클 (반 시간)입니다.

PWM 듀티 사이클

구문 : analogWrite (pin, val)

Where,

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)

Where,

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 } 

Answer

digitalWrite는 출력 핀을 LOW 또는 HIGH로 설정합니다 (이 전압은 V cc에 따라 달라짐). . Uno 또는 Mega의 경우 0V 또는 5V (또는 이에 가까운)입니다.

여기에 “digitalWrite (LOW)의 스크린 샷이 있습니다.

digitalWrite (LOW)

즉, 출력 핀은 0V입니다.


이제 digitalWrite 용 (HIGH) :

출력 전압은 5V입니다.

digitalWrite (HIGH)


analogWrite는 conf 이후 PWMwrite라는 이름을 지정해야합니다. PWM (펄스 폭 변조)을 출력하도록 프로세서 타이머를 구성합니다.

analogWrite (1)를 사용해 보겠습니다.

analogWrite (1)

전압 레벨이 대부분 0V이고 짧은 기간 동안 5V가되는 것을 볼 수 있습니다. 또한 주파수가 490Hz라는 것을 알 수 있습니다. 이는 analogWrite의 참조 페이지 가 그렇게 될 것이라고 말합니다.


확대 :

analogWrite (1)-확대됨

출력은 8µs 동안 높으며, 이는 정확히 타이머 기간 인 2048µs의 1/256입니다. 따라서 듀티 사이클은 1/256 (0.39 %)입니다.


analogWrite (127)를 사용해 보겠습니다-0에서 255까지 중간 :

analogWrite (127)

이제 출력이 정확히 절반의 시간 동안 HIGH이고 나머지 시간은 LOW임을 알 수 있습니다.


analogWrite (254)를 사용해 보겠습니다.

analogWrite (254)

이것은 analogWrite (1)의 반대입니다. 출력은 짧은 기간을 제외하고 항상 HIGH입니다. 확대 :

analogWrite (254)-확대됨

이제 출력은 8µs 동안 꺼집니다 -8µs 동안 켜진 이전 이미지와 비교됩니다.


analogWrite (0)digitalWrite (LOW)와 동일합니다.

analogWrite (255)digitalWrite (HIGH)와 동일합니다.

wire_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는 핀이 다음과 같은 진동 값을 갖도록 핀을 설정합니다. 두 번째 매개 변수로 지정된 듀티 사이클을 기준으로 한 펄스 길이입니다.

따라서

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에서 5V 사이의 입력 전압을 0에서 1023 사이의 정수 값으로 매핑한다는 것을 의미합니다. 이렇게하면 판독 값 사이의 분해능이 5V / 1024 개 단위 또는 .0049V (4.9mV) 단위당으로 나타납니다. 입력 범위와 해상도는 analogReference()를 사용하여 변경할 수 있습니다.

자세한 내용은 https://www.arduino.cc/en/Reference/analogRead

를 참조하세요. 답변

digitalWrite 지정된 핀을 두 상태 중 하나로 설정합니다. -HIGH / LOW

여기서 HIGH = 5V 및 LOW = 0V

analogWrite PWM 핀의 PWM 값 설정

(Arduino UNO에서 PWM 핀은 3, 5, 6, 9, 10, 11)

핀을 설정합니다. 주기적인 높음 / 낮음 신호로.

analogWrite(PWMpin,255) 

시간의 100 % 높음,

analogWrite(PWMpin,127) 

시간의 50 %는 높음, 시간의 50 %는 낮음

답변

따라서 analogWrite (X, 255)와 digitalWrite (X, HIGH)의 차이점은 무엇입니까? 아마도 프로세서가 PWM과 스타일을 사용할 필요가 없다는 것을 알아 내기 위해 몇 가지 추가 작업을 수행해야한다는 점을 제외하면 아무것도 아닙니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다