analogReadResolution()

analogReadResolution() — это расширение аналогового API для семейств Zero, Due, MKR, Nano 33 (BLE и IoT) и Portenta.

Задает размер (в битах) значения, возвращаемого analogRead(). По умолчанию оно равно 10 битам (возвращает значения в диапазоне 0-1023) для обеспечения обратной совместимости с платами на базе AVR.

Платы семейства Zero, Due, MKR и Nano 33 (BLE и IoT) имеют 12-разрядный АЦП, доступ к которому можно получить, изменив разрешение на 12. Это вернет значения из analogRead() в диапазоне от 0 до 4095.

Portenta H7 оснащен 16-разрядным АЦП, который допускает значения в диапазоне от 0 до 65535.

Синтаксис

analogReadResolution( bits )

Параметры

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

Возвращает

Ничего не возвращает

Пример

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

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

Примечание

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

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

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

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

Тип функции

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *