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); }