Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogReadResolution(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c">» на «<syntaxhighlight lang="c" enclose="div">»)
 
Нет описания правки
 
(не показано 6 промежуточных версий 1 участника)
Строка 1: Строка 1:
{{#setlogo:ArduinoCommunityLogo.png}}
{{Arduino панель перехода}}
{{Arduino панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
Строка 8: Строка 7:
==Описание==
==Описание==


Эта функция — расширение '''Analog API''' для '''Arduino Due и Zero'''.
Эта функция — расширение [[Analog API]] для [[Arduino:Продукты/Продукты Arduino/Плата Arduino Due|Arduino Due]] и [[Arduino:Продукты/Продукты Arduino/Плата Arduino Zero|Zero]].


Она задает размер (в битах) значения, возвращаемого функцией analogRead(). По умолчанию оно равно 10 битам (возвращает значения '''в диапазоне 0-1023''') — для обратной совместимости с платами на базе '''AVR'''.
Она задает размер (в битах) значения, возвращаемого функцией [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]]. По умолчанию оно равно 10 [[бит]]ам (возвращает значения в диапазоне 0-1023) — для обратной совместимости с платами на базе [[AVR]].


Платы '''Due и Zero''' способны осуществлять '''12-битное аналогово-цифровое преобразование''', доступ к которому можно получить, поменяв разрешение на '''«12»'''. В результате значения от analogRead() будут варьироваться в диапазоне 0-4095.
Платы [[Arduino:Продукты/Продукты Arduino/Плата Arduino Due|Due]] и [[Arduino:Продукты/Продукты Arduino/Плата Arduino Zero|Zero]] способны осуществлять 12-битное аналогово-цифровое преобразование, доступ к которому можно получить, поменяв разрешение на «12». В результате значения от [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]] будут варьироваться в диапазоне 0-4095.


==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
analogReadResolution(bits)
analogReadResolution(bits)
</syntaxhighlight>
</syntaxhighlight>
Строка 22: Строка 21:
==Параметры==
==Параметры==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
bits — разрешение (в битах) значения, возвращаемого функцией analogRead(). Может варьироваться от 1 до 32. Впрочем, если выставить в этом значении больше 12, то возвращенное значение будет не точным, а приблизительным. Более подробно об этом читайте в приложении ниже.
bits — разрешение (в битах) значения, возвращаемого функцией analogRead(). Может варьироваться от 1 до 32. Впрочем, если выставить в этом значении больше 12, то возвращенное значение будет не точным, а приблизительным. Более подробно об этом читайте в приложении ниже.
</syntaxhighlight>
</syntaxhighlight>
Строка 28: Строка 27:
==Что возвращает==
==Что возвращает==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Ничего.
Ничего.
</syntaxhighlight>
</syntaxhighlight>
Строка 34: Строка 33:
==Примечание==
==Примечание==


Если задать в analogReadResolution() значение, превышающее возможности платы, '''Arduino''' в ответ отправит значение, где '''«лишние»''' биты будут заполнены нулями.  
Если задать в '''analogReadResolution()''' значение, превышающее возможности платы, [[Arduino]] в ответ отправит значение, где «лишние» [[бит]]ы будут заполнены нулями.  


Например, если вы пользуетесь '''Due или Zero''', а в функции analogReadResolution() решили указать '''«16»''', то в итоге получите '''16-битное число''', в котором '''первые 12 бит''' будут содержать реальную информацию об аналогово-цифровом преобразовании, а '''4 оставшихся бита''' будут содержать '''нули'''.  
Например, если вы пользуетесь [[Arduino:Продукты/Продукты Arduino/Плата Arduino Due|Due]] или [[Arduino:Продукты/Продукты Arduino/Плата Arduino Zero|Zero]], а в функции '''analogReadResolution()''' решили указать «16», то в итоге получите 16-битное число, в котором первые 12 бит будут содержать реальную информацию об аналогово-цифровом преобразовании, а 4 оставшихся бита будут содержать нули.  


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


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


==Пример==
==Пример==


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
void setup() {
void setup() {
   // Запускаем последовательную передачу данных:
   // Запускаем последовательную передачу данных:
Строка 82: Строка 81:


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}


[[Категория:Справочник языка Arduino]]
[[Категория:Справочник языка Arduino]]
[[Категория:Функция]]
[[Категория:Функция]]

Текущая версия от 11:28, 8 июля 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция analogReadResolution()[1]

Описание

Эта функция — расширение Analog API для Arduino Due и Zero.

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

Платы Due и Zero способны осуществлять 12-битное аналогово-цифровое преобразование, доступ к которому можно получить, поменяв разрешение на «12». В результате значения от analogRead() будут варьироваться в диапазоне 0-4095.

Синтаксис

analogReadResolution(bits)

Параметры

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

Что возвращает

Ничего.

Примечание

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

Например, если вы пользуетесь Due или Zero, а в функции analogReadResolution() решили указать «16», то в итоге получите 16-битное число, в котором первые 12 бит будут содержать реальную информацию об аналогово-цифровом преобразовании, а 4 оставшихся бита будут содержать нули.

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

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

Пример

void setup() {
  // Запускаем последовательную передачу данных:
  Serial.begin(9600); 
}

void loop() {
  // Считываем с контакта A0 входящие данные (в дефолтном 10-битном разрешении),
  // а затем отправляем их через последовательное соединение:
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");  //  "АЦП-данные в 10-битном (дефолтном) разрешении : "
  Serial.print(analogRead(A0));

  // меняем разрешение на «12» и снова считываем данные с A0:
  analogReadResolution(12);
  Serial.print(", 12-bit : ");  //  ", в 12-битном разрешении : "
  Serial.print(analogRead(A0));

  // меняем разрешение на «16» и снова считываем данные с A0:
  analogReadResolution(16);
  Serial.print(", 16-bit : ");  //  ", в 16-битном разрешении : "
  Serial.print(analogRead(A0));

  // меняем разрешение на «8» и снова считываем данные с A0:
  analogReadResolution(8);
  Serial.print(", 8-bit : ");  //  ", в 8-битном разрешении : "
  Serial.println(analogRead(A0)); 

  // небольшая задержка, чтобы не перегружать Serial Monitor:
  delay(100);
}

См.также

Внешние ссылки