1. Программирование Arduino — введение
2. Программирование Arduino — структура программы, константы
3. Программирование Arduino — цифровой ввод/вывод
4. Аналоговый ввод/вывод сигнала
теперь рассмотрим специфичные функции Arduino для аналогового ввода-вывода.
int analogRead(uint8_t);
Вызов:
value = analogRead(порт);
Описание:
Считывает значение с указанного аналогового порта. Arduino/Freeduino содержит 6 каналов аналого-цифрового преобразователя на 10 битов каждый. Это означает, что входное напряжения от 0 до 5В преобразовывается в целочисленное значение от 0 до 1023. Разрешающая способность считывания составляет: 5V/1024 значений = 0,004883 В/значение (4,883 мВ). Требуется приблизительно 100 нсек (0.0001 сек), чтобы считать значение аналогового ввода, так что максимальная скорость считывания — приблизительно 10000 раз в секунду.
Параметры:
порт: номер опрашиваемого аналогового входа
Возвращаемое значение: возвращает число типа int в диапазоне от 0 до 1023, считанное с указанного порта.
Пример:
int val; val = analogRead(0); // считываем значение на 0м аналоговом входе
Примечание:
Аналоговые порты, по-умолчанию, определенны на ввод сигнала и в отличие от цифровых портов их не требуется конфигурировать с помощью вызова функции pinMode.
void analogWrite(uint8_t, int);
Вызов:
analogWrite(порт, значение);
Описание:
Выводит на порт аналоговое значение. Эта функция работает на: 3, 5, 6, 9, 10, и 11 цифровых портах Arduino/Freeduino/CraftDuino. На старых версиях плат Arduino на основе микроконтроллера ATmega8 функция analogWrite() работает только на портах 9, 10 и 11.
Может применяться для изменения яркости светодиода, для управления двигателем и т.д. После вызова функции analogWrite, соответствующий порт начинает работать в режиме ШИМ (Широтно-Импульсная Модуляция) напряжения до тех пор, пока не будет следующего вызова функции analogWrite (или функций digitalRead / digitalWrite на том же самом порте).
Параметры:
порт: номер опрашиваемого аналогового входа
значение: целочисленное между 0 и 255. Значение 0 генерирует 0 В на указанном порте; значение 255 генерирует +5В на указанном порте. Для значений между 0 и 255, порт начинает быстро чередовать уровень напряжения 0 и +5 В — чем выше значение, тем, более часто порт генерирует уровень HIGH (5 В).
Пример:
analogWrite(9, 128); // устанавливаем на 9 контакте значение эквивалентное 2,5В
Примечание:
Нет необходимости вызвать функцию pinMode, чтобы установить порт на вывод сигналов перед вызовом функции analogWrite.
Частота генерирования сигнала – приблизительно 490 Гц.
void analogReference(uint8_t mode);
Описание:
Определяет Источник Опорного Напряжения (ИОН) для АЦП.
Функция analogRead()вернёт 1023 для Опорного Напряжения.
Параметры:
DEFAULT: по-умолчанию 5V
INTERNAL: внутренний — используется внутренний источник в МК: 1.1V на ATmega168 и 2.56V на ATmega8.
EXTERNAL: внешний – использует, источник, подключённый к порту AREF.
По-умолчанию используется 5V (DEFAULT) см. код.
Код
( функция объявлена в \hardware\cores\arduino\wiring.h
, а реализована в \hardware\cores\arduino\wiring_analog.c):
uint8_t analog_reference = DEFAULT; void analogReference(uint8_t mode) { // can't actually set the register here because the default setting // will connect AVCC and the AREF pin, which would cause a short if // there's something connected to AREF. analog_reference = mode; }
Вызов:
analogReference(DEFAULT);
Возвращаемое значение:
Ничего
Примечание:
Внешний ИОН, нужно подключать к порту AREF через резистор в 5k, чтобы избежать повреждения МК.
читать далее: 5. дополнительные функции ввода/вывода
Ссылки
http://arduino.cc/en/Reference/HomePage (или же в каталоге ArduinoIDE \reference\HomePage.html )
http://www.arduino.cc/en/Reference/AnalogReference
http://freeduino.ru/arduino/lang.html
0 комментариев на «“Программирование Arduino — аналоговый ввод/вывод”»
А на AREF можно 12V подать?
угу но только один раз…
нельзя вобщем — сгорит.
А с каким минимальным внешним опорным напряжением работают АЦП в ATmega168?
датащит говорит 1В.
Чтоб замерить напряжение больше 5В?резисторный делитель , и состоит из двух резисторов.транзисторный ключ , состоит из транзистора (можно полевого, можно биполярного) и пары резисторов (можно и один, можно и без них — нюансы)
Подходящий преобразователь называется —
Чтоб выдать больше 0…5в?
Такой преобразователь называется —
Пардоньте, но эти «преобразователи» на костыль не тянут, так, максимум стелька=)))