analogReadResolution()

Описание

analogReadResolution() — это расширение аналогового API, которое позволяет установить разрешение (в битах) значения, возвращаемого функцией analogRead(). По умолчанию оно равно 10 битам (возвращает значения от 0 до 1023) для обратной совместимости с платами на основе AVR.

Среди плат Arduino можно найти различные разрешения, которые дают разные диапазоны:

  • 10 бит: значения от 0 до 1023.

  • 12 бит: значения от 0 до 4095.

  • 14 бит: значения от 0 до 16383.

  • 16 бит: значения от 0 до 65535.

Синтаксис

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

analogReadResolution(bits)

Параметры

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

  • bits: определяет разрешение (в битах) значения, возвращаемого функцией analogRead().

Предупреждение

Вы можете установить значение от 1 до 32. Можно задать разрешение выше поддерживаемых 12 или 16 бит, но значения, возвращаемые analogRead(), будут приближёнными. Подробности см. в примечании ниже.

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

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

Пример кода

Код показывает, как использовать АЦП с различными разрешениями.

void setup() {
  // открываем последовательное соединение
  Serial.begin(9600);
}

void loop() {
  // считываем вход A3 с разрешением по умолчанию (10 бит)
  // и отправляем через последовательное соединение
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A3));

  // меняем разрешение на 12 бит и считываем A3
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A3));

  // меняем разрешение на 16 бит и считываем A3
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A3));

  // меняем разрешение на 8 бит и считываем A3
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A3));

  // небольшая задержка, чтобы не перегружать монитор порта
  delay(100);
}

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

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

Например: использование UNO R4 с analogReadResolution(16) даст приблизительное 16-битное число, в котором первые 14 бит содержат реальные данные АЦП, а последние 2 бита дополнены нулями.

Если вы установите значение analogReadResolution() ниже возможностей вашей платы, лишние младшие биты, считанные с АЦП, будут отброшены.

Использование 16-битного разрешения (или любого разрешения выше реальных аппаратных возможностей) позволяет писать скетчи, которые автоматически поддержат устройства с более высоким разрешением АЦП, когда они появятся на будущих платах, без изменения ни одной строки кода.

См. также