analogReadResolution() - это функция, расширяющая API для работы с аналоговыми величинами для Arduino Due.
Функция устанавливает размерность (в битах) значения, возвращаемого функцией analogRead(). Для обратной совместимости с платами на базе AVR-микроконтроллеров эта размерность, по умолчанию, составляет 10 бит (диапазон чисел 0-1023).
В состав Due входит 12-битный АЦП, задействовать возможности которого можно путем изменения размерности на 12 бит. Это позволит функции analogRead() возвращать значения в диапазоне от 0 до 4095.
analogReadResolution(bits);
Нет.
Если размерность, указанная в функции 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. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.