analogReadResolution() - это функция, расширяющая API для работы с аналоговыми величинами для Arduino Due.

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

В состав Due входит 12-битный АЦП, задействовать возможности которого можно путем изменения размерности на 12 бит. Это позволит функции analogRead() возвращать значения в диапазоне от 0 до 4095.

Синтаксис

analogReadResolution(bits)

Параметры

bits: размерность (в битах) значения, возвращаемого функцией analogRead(). Может быть в пределах от 1 до 32. Допускается задавать размерность больше 12, но в этом случае значения, возвращаемые analogRead(), будут подвергаться аппроксимации. См. примечание ниже.

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

Нет.

Примечание

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

Например: при вызове analogReadResolution(16), Arduino Due будет выдавать аппроксимированное 16-битное число, первые 12 бит которого будут содержать фактические показания АЦП, а последние 4 бита будут заполнены нулями.

Если же размерность, указанная в функции analogReadResolution(), меньше максимально возможной, то младшие биты значений, возвращаемых АЦП, будут отбрасываться.

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

Пример

void setup() {
  // открываем последовательное соединение
  Serial.begin(9600); 
}
 
void loop() {
  // считываем напряжение со входа A0, размерность по умолчанию (10 бит)
  // и отправляем считанное значение через последовательный порт
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));
 
  // изменяем размерность на 12 бит и считываем A0
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));
 
  // изменяем размерность на 16 бит и считываем A0
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));
 
  // изменяем размерность на 8 бит и считываем A0
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));
 
  // небольшая задержка
  delay(100);
}