Arduino:Основы/Входные аналоговые контакты: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
 
Нет описания правки
Строка 17: Строка 17:
Аналоговые контакты используются идентично цифровым контактам – при помощи псевдонимов '''A0''' (входной аналоговый контакт номер '''«0»'''), '''A1''' и т.д. К примеру, чтобы выставить аналоговый контакт в режим [[Arduino:Справочник языка Arduino/Константы/OUTPUT|OUTPUT]] и задать ему значение [[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]], нужно будет написать в коде следующее:
Аналоговые контакты используются идентично цифровым контактам – при помощи псевдонимов '''A0''' (входной аналоговый контакт номер '''«0»'''), '''A1''' и т.д. К примеру, чтобы выставить аналоговый контакт в режим [[Arduino:Справочник языка Arduino/Константы/OUTPUT|OUTPUT]] и задать ему значение [[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]], нужно будет написать в коде следующее:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
pinMode(A0, OUTPUT);
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
digitalWrite(A0, HIGH);
Строка 26: Строка 26:
Аналоговые контакты также оснащены подтягивающими резисторами, которые работают аналогично подтягивающим резисторам на цифровых контактах. Они включаются следующей командой...
Аналоговые контакты также оснащены подтягивающими резисторами, которые работают аналогично подтягивающим резисторам на цифровых контактах. Они включаются следующей командой...


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
digitalWrite(A0, HIGH);  // включаем подтягивающий резистор на аналоговом контакте 0  
digitalWrite(A0, HIGH);  // включаем подтягивающий резистор на аналоговом контакте 0  
</syntaxhighlight>
</syntaxhighlight>

Версия от 18:17, 14 мая 2023

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


Входные аналоговые контакты[1]

Здесь рассказывается о входных аналоговых контактах на микроконтроллерах, которыми оснащаются платы Arduino (ATmega8, ATmega168, ATmega328 и ATmega1280).

Аналогово-цифровой преобразователь

Микроконтроллеры ATmega для плат Arduino содержат встроенный 6-канальный аналогово-цифровой преобразователь (АЦП). Этот конвертер имеет 10-битное разрешение, т.е. возвращает целочисленные значения в диапазоне от «0» до «1023». Хотя главная функция входных аналоговых контактов на Arduino – это считывание данных с аналоговых датчиков, они также оснащены всем необходимым функционалом для GPIO-контакта (т.е. для входного/выходного контакта общего пользования), коим являются цифровые контакты с 0 по 13.

Следовательно, если пользователю нужно больше GPIO-контактов, а входные аналоговые контакты не используются, то их можно спокойно использовать в качестве GPIO-контактов.

Распиновка

Аналоговые контакты используются идентично цифровым контактам – при помощи псевдонимов A0 (входной аналоговый контакт номер «0»), A1 и т.д. К примеру, чтобы выставить аналоговый контакт в режим OUTPUT и задать ему значение HIGH, нужно будет написать в коде следующее:

pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);

Подтягивающие резисторы

Аналоговые контакты также оснащены подтягивающими резисторами, которые работают аналогично подтягивающим резисторам на цифровых контактах. Они включаются следующей командой...

digitalWrite(A0, HIGH);  // включаем подтягивающий резистор на аналоговом контакте 0

...но в это время контакт должен находиться в режиме INPUT.

Однако стоит иметь в виду, что включение подтягивающего резистора повлияет на данные, возвращаемые функцией analogRead().

Возможные проблемы

Функция analogRead() будет работать некорректно, если ранее контакт, данные с которого она считывает, был выставлен в режим OUTPUT. В таком случае перед использованием analogRead() выставьте этот контакт в режим INPUT. Аналогично, если контакту были заданы режим OUTPUT и значение HIGH, то при переключении обратно в режим INPUT будет включен подтягивающий резистор.

Даташит ATmega также предостерегает против быстрого переключения между аналоговыми контактами, чтобы прочитать с них данные при помощи analogRead(). Это может стать причиной электрического шума, из-за чего в аналоговой системе может появиться так называемый «дребезг». Исправить это можно небольшой задержкой, которую нужно вставить после манипуляции с аналоговыми контактами (в цифровом режиме) и до использования функции analogRead(), считывающей данные с других аналоговых контактов.

См.также

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