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