CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Программирование Arduino - аналоговый ввод/вывод

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
  • +1
  • 2 июля 2009, 12:13
  • admin

Комментарии (7)

RSS свернуть / развернуть
+
0
А на AREF можно 12V подать?
avatar

version

  • 8 декабря 2010, 19:52
+
+3
угу но только один раз…
нельзя вобщем — сгорит.
avatar

Zoltberg

  • 8 декабря 2010, 23:21
+
0
А с каким минимальным внешним опорным напряжением работают АЦП в ATmega168?
avatar

Nosferatu

  • 15 июля 2011, 05:34
+
+2
датащит говорит 1В.
avatar

Zoltberg

  • 15 июля 2011, 22:45
комментарий был удален


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.