This page is also available in 2 other languages

analogWriteResolution()

[Zero, Due & MKR Family]

설명

analogWriteResolution() 은 아두이노 두에를 위한 아날로그 API의 확장이다.

analogWriteResolution()analogWrite() 함수의 해상도를 설정합니다. AVR 기반 보드와의 호환성을 위해 기본값은 8 비트 (0-255 사이의 값)입니다.

Due 는 아래와 같은 하드웨어 기능이 있습니다:

  • AVR 기반 보드와 같이 기본적으로 8비트 PWM인 12핀을 12비트 해상도로 변경할 수 있습니다.

  • 2핀, 12비트 DAC (디지털 - 아날로그 컨버터)

쓰기 해상도를 12로 설정하면 analogWrite() 를 0에서 4095 사이의 값으로 사용하여 전체 DAC 해상도를 활용하거나 롤오버하지 않고 PWM 신호를 설정할 수 있습니다.

Zero 에는 다음과 같은 하드웨어 기능이 있습니다:

  • AVR 기반 보드와 같이 기본적으로 8비트 PWM인 10핀을 12비트 해상도로 변경할 수 있습니다.

  • 10 비트 DAC (디지털 - 아날로그 변환기)가있는 1 핀.

쓰기 해상도를 10으로 설정하면 analogWrite() 를 0에서 1023 사이의 값으로 사용하여 전체 DAC 해상도를 활용할 수 있습니다.

보드의 MKR 패밀리 는 다음과 같은 하드웨어 기능을 제공합니다:

  • AVR 기반 보드처럼 8비트 PWM을 기본으로하는 4핀을 8(기본값)에서 12비트 해상도로 변경할 수 있습니다.

  • 1 핀, 10 비트 DAC (디지털 - 아날로그 컨버터)

쓰기 해상도를 12 비트로 설정하면 PWM 신호에 대해 0에서 4095 사이의 값을 갖는 analogWrite() 를 사용할 수 있습니다. 1024개 값의 전체 DAC 분해기능을 활용하려면 DAC 핀에서 10 비트를 설정해야 합니다.

문법

analogWriteResolution(bits)

매개변수

bits : analogWrite() 함수에서 사용되는 값의 해상도 (비트 단위)를 결정합니다. 값의 범위는 1에서 32 사이 입니다. 보드의 하드웨어 기능보다 높거나 낮은 해상도를 선택한 상태에서 analogWrite() 의 값이 너무 높으면 해당 값이 사라지고 값이 너무 낮으면 0으로 채우게 됩니다. 너무 낮으면 0으로 채웁니다. 자세한 내용은 아래 참고 사항을 참조하십시오.

반환

없음.

예제 코드

예제코드

void setup() {
  // open a serial connection
  Serial.begin(9600);
  // make our digital pin an output
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // read the input on A0 and map it to a PWM pin
  // with an attached LED
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // the default PWM resolution
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 255));

  // change the PWM resolution to 12 bits
  // the full 12 bit resolution is only supported
  // on the Due
  analogWriteResolution(12);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
  Serial.print(" , 12-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 4095));

  // change the PWM resolution to 4 bits
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));

  delay(5);
}

주의와 경고

analogWriteResolution() 값을 보드의 기능보다 높은 값으로 설정하면 아두이노는 여분의 비트를 무시합니다. 예를 들어, 12비트 DAC 핀에서 analogWriteResolution(16) 을 사용하면 analogWrite() 에 전달 된 값의 처음 12비트 만 사용되며 마지막 4비트는 무시됩니다.

analogWriteResolution() 값을 보드의 기능보다 낮은 값으로 설정하면 누락 된 비트에 하드웨어 필요 크기를 채우기 위해 0이 채워집니다. 예를 들어, 12 비트 DAC 핀에서 analogWriteResolution(8) 을 사용하여 Due를 사용하면 아두이노는 analogWrite() 에 사용 된 8비트 값에 4개의 0비트를 추가하여 필요한 12비트를 얻습니다.

더보기