제목에 나와 있습니다. 둘의 차이점은 무엇인가요?
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 % 듀티 사이클 (반 시간)입니다.
구문 : 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)의 스크린 샷이 있습니다.
즉, 출력 핀은 0V입니다.
이제 digitalWrite 용 (HIGH) :
출력 전압은 5V입니다.
analogWrite
는 conf 이후 PWMwrite라는 이름을 지정해야합니다. PWM (펄스 폭 변조)을 출력하도록 프로세서 타이머를 구성합니다.
analogWrite (1)를 사용해 보겠습니다.
전압 레벨이 대부분 0V이고 짧은 기간 동안 5V가되는 것을 볼 수 있습니다. 또한 주파수가 490Hz라는 것을 알 수 있습니다. 이는 analogWrite의 참조 페이지 가 그렇게 될 것이라고 말합니다.
확대 :
출력은 8µs 동안 높으며, 이는 정확히 타이머 기간 인 2048µs의 1/256입니다. 따라서 듀티 사이클은 1/256 (0.39 %)입니다.
analogWrite (127)를 사용해 보겠습니다-0에서 255까지 중간 :
이제 출력이 정확히 절반의 시간 동안 HIGH이고 나머지 시간은 LOW임을 알 수 있습니다.
analogWrite (254)를 사용해 보겠습니다.
이것은 analogWrite (1)의 반대입니다. 출력은 짧은 기간을 제외하고 항상 HIGH입니다. 확대 :
이제 출력은 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()
를 사용하여 변경할 수 있습니다.
를 참조하세요. 답변
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과 스타일을 사용할 필요가 없다는 것을 알아 내기 위해 몇 가지 추가 작업을 수행해야한다는 점을 제외하면 아무것도 아닙니다.