Функция analogRead()
Описание
Считывает значение из указанного аналогового пина.
На большинстве плат содержится многоканальный 10-битный аналого-цифровой преобразователь, поэтому результатом будет значение в приделах от 0 до 1023. На платах Arduino Due и Arduino Zero преобразователь 12-битный, но результат по-умолчанию все равно отдается в 10 битах для совместимости с другими платами. Чтобы использовать 12 бит, нужно явно указать это через вызов analogReadResolution(), тогда результат будет в пределах 0-4095.
Синтаксис
analogRead(pin)
Параметры
pin - номера аналогового пина. Для большинства плат - значение от A0 до A5, для Arduino Mini и Nano - от A0 до A7, для arduino mega - от A0 до A15
Возвращаемое значение
Целое значение в приделах от 0 до 1023 или от 0 до 4095 для плат Arduino Duo и Arduino Zero (нужна настройка)
Пример
void setup()
{
Serial.begin(9600);
int val = analogRead(A0);
Serial.println(val);
}
void loop()
{
}
Примечания
Аналоговые пины работают не так, как цифровые, и для работы с ними не нужно устанавливать режим работы. Вызывать для них pinMode() нужно только если вы хотите использовать их в качестве цифровых.
Функция analogReference()
Описание
Функция задает опорное напряжение, относительно которого происходят изменения значений аналоговых пинов. Те значения, которые возвращает функция analogRead(), как раз зависят от опорного напряжение, а также пропорционально входному напряжению.
Синтаксис
analogReference(type)
Параметры
type - используемое опорное напряжение (DEFAULT, INTERNAL, EXTERNAL)
Возвращаемое значение
нет
Пример
void setup()
{
analogReference(EXTERNAL);
}
Примечания
Значения параметра для Arduino AVR плат (Uno, Mega и др.):
- DEFAULT - стандартное опорное напряжение 5 В (на платформах с напряжением 5 В) или 3.3 В (на платформах с напряжением 3.3 В);
- INTERNAL - встроенное опорное напряжение 1.1 В на микроконтроллерах ATmega168 и ATmega328 и 2.56 В на ATmega8 (не доступно на Arduino Mega);
- EXTERNAL - внешний источник опорного напряжение, подключенный к выводу AREF (возможно от 0 В до 5 В);
- INTERNAL1V1 - напряжение в 1.1 В (только для Arduino Mega);
- INTERNAL2V56 - напряжение в 2.56 В (только для Arduino Mega);
Значения параметра для Arduino SAMD плат (Zero и тд.):
- AR_DEFAULT - стандартное опорное напряжение 3.3 В;
- AR_INTERNAL - встроенное опорное напряжение 2.23 В;
- AR_INTERNAL1V0 - встроенное опорное напряжение 1.0 В;
- AR_INTERNAL1V65 - встроенное опорное напряжение 1.65 В;
- AR_INTERNAL2V23 - встроенное опорное напряжение 2.23 В;
- AR_EXTERNAL - внешний источник опорного напряжение, подключенный к выводу AREF.
Значения параметра для Arduino SAM плат (Duo):
- AR_DEFAULT - стандартное опорное напряжение 3.3 В. Для Arduino Duo доступно только это значение.
Функция analogWrite()
Описание
Функция выдает на пин аналоговую величину (ШИМ-сигнала или ШИМ-волну). Это может быть полезно например для управления яркостью светодиода или для задания скорости вращения мотора.
Могут использоваться только пины, помеченные символом "~". На Arduino Uno и на других платах на микроконтроллерах ATmega168 и ATmega328P это пины 3, 5, 6, 9, 10 и 11. На пинах 5 и 6 частота ШИМ-сигнала составляет около 980 Гц, а на остальных пинах - примерно 490 Гц. На плате Arduino Mega можно использовать пины 2–13 и 44–46. На Arduino DUE - пины 2–13, а также контакты DAC0 и DAC1. Причем DAC0 и DAC1 являются цифро-аналоговыми преобразователями и действуют как настоящие аналоговые выходы.
Перед использованием не требует вызова функции pinMode().
Синтаксис
analogWrite(pin, value)
Параметры
pin - номер пина, на который следует подать ШИМ-сигнал
value - период рабочего цикла от 0 (сигнал всегда выключен) до 255 (сигнал подан постоянно)
Возвращаемое значение
нет
Пример
Плавное мигание светодиодом:
const int ledPin = 3;
const int delayTime = 10;
void setup()
{
}
void loop()
{
for (int i = 0; i <= 255; i++) {
analogWrite(ledPin, i);
delay(delayTime);
}
for (int i = 255; i >= 0; i--) {
analogWrite(ledPin, i);
delay(delayTime);
}
}