analogReadResolution()

Описание

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


Смотрите также

Расскажи о нас

Сообщение

Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.