analogWriteResolution()

Описание

analogWriteResolution() — это расширение аналогового API для установки разрешения функции analogWrite(). По умолчанию оно равно 8 битам (значения от 0 до 255) для обратной совместимости с платами на основе AVR.

Синтаксис

Используйте следующую функцию для использования полного диапазона выходов ЦАП и ШИМ:

analogWriteResolution(bits)

Параметры

Функция принимает следующий параметр:

  • bits: определяет разрешение (в битах) значений, используемых в функции analogWrite(). Значение может быть от 1 до 32. Если вы выберете разрешение выше или ниже аппаратных возможностей вашей платы, значение, используемое в analogWrite(), будет либо усечено (если оно слишком высокое), либо дополнено нулями (если слишком низкое). Подробности см. в примечании ниже.

Возвращаемое значение

Функция ничего не возвращает.

Пример кода

void setup() {
  // открываем последовательное соединение
  Serial.begin(9600);
  // устанавливаем цифровые пины как выходы
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // считываем вход A0 и преобразуем для ШИМ-пина
  // с подключённым светодиодом
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read : ");
  Serial.print(sensorVal);

  // разрешение ШИМ по умолчанию
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 255));

  // меняем разрешение ШИМ на 12 бит
  analogWriteResolution(12);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
  Serial.print(" , 12-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 4095));

  // меняем разрешение ШИМ на 4 бита
  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);
}

Примечания и предупреждения

Возможности плат

  • Платы с 8-битным разрешением ШИМ способны разделять коэффициент заполнения ШИМ на 255 шагов.

  • Платы с 10-битным разрешением ШИМ способны разделять коэффициент заполнения ШИМ на 1024 шага.

  • Платы с 12-битным разрешением ШИМ способны разделять коэффициент заполнения ШИМ на 4095 шагов.

  • Платы с 16-битным разрешением ШИМ способны разделять коэффициент заполнения ШИМ на 65536 шагов.

Другие замечания

Если вы установите значение analogWriteResolution() выше возможностей вашей платы, Arduino отбросит лишние биты.

Если вы установите значение analogWriteResolution() ниже возможностей вашей платы, недостающие биты будут дополнены нулями для заполнения аппаратно требуемого размера.

См. также