Рассмотрим использование команд digitalRead() и analogRead() в языке программирования Ардуино, которые используются для опроса цифровых и аналоговых датчиков соответственно. Рассмотрим эти функции на примере подключения цифрового датчика движения через цифровой вход микроконтроллера и аналогового датчика воды через аналоговый вход. Вместо этих датчиков можно использовать любые другие сенсоры.
СОДЕРЖАНИЕ ►
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- светодиоды и резисторы
- PIR датчик движения
- датчик уровня воды
- макетная плата
- коннекторы
Дополнительные материалы на эту тему:
Для подключения цифровых датчиков к микроконтроллеру с использованием команды digitalRead() можно использовать любые входы, в том числе аналоговые пины A0-A5, обозначенные, как Analog In. Для подключения аналоговых датчиков к Arduino (например, датчик уровня воды или датчик температуры LM35) с командой analogRead() необходимо использовать только аналоговые входы A0-A5, использующие АЦП микроконтроллера.
Что такое функция digitalRead() Arduino, описание

Функция digitalRead считывает значение HIGH или LOW с заданного входа. Если к входу не подключен сенсор, то команда digitalRead может возвращать значения HIGH или LOW случайным образом. Аналоговые входы микроконтроллера также могут быть использованы, как цифровые вход/выходы. В этом примере цифровой датчик движения подключен к аналоговому входу A1, но можно использовать и любые другие пины Arduino.
Синтаксис функции digitalRead() в Arduino IDE
digitalRead(pin);
- pin — номер входа с которого производится считывание
Так как датчик движения HC-SR501 является цифровым, то при обнаружении движения на его выходе будет логическая единица (сигнал 5 Вольт), при отсутствии движения на выходе будет логический ноль (сигнал 0 вольт). В следующей программе, в зависимости от сигнала с датчика движения, переменная value будет принимать значения 1 (HIGH) или 0 (LOW). В зависимости от этого будет включаться или выключаться светодиод на 12 пине.
Скетч с использованием команды digitalRead()
#define PIR A1
#define LED 12
byte value;
void setup() {
pinMode(PIR, INPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
value = digitalRead(PIR);
Serial.print("PIR sensor - ");
Serial.println(value);
if (value == HIGH) { digitalWrite(LED, HIGH); }
else { digitalWrite(LED, LOW); }
delay(1000);
}
Что такое функция analogRead() Arduino, описание

Функция analogRead считывает значение с аналогового входа микроконтроллера. Большинство плат Arduino имеют 6 аналоговых входов (16 аналоговых входов у Arduino Mega) c 10-битным аналого-цифровым преобразователем (АЦП). Напряжение поданное с датчика на аналоговый вход микроконтроллера с АЦП (обычно от 0 до 5 Вольт) будет преобразовано в значение от 0 до 1023, это 1024 шага с разрешением 0.0049 Вольт.
Синтаксис функции analogRead() в Arduino IDE
analogRead(pin);
- pin — номер входа с которого производится считывание
Если к аналоговому входу не будет подключен сенсор, то значения возвращаемые функцией analogRead() будут принимать случайные значения. В следующем примере к пину A1 будет подключен аналоговый датчик воды, сигнал с которого будет меняться от 0 до 5 Вольт. Микроконтроллер с помощью АЦП будет преобразовывать напряжение в Вольтах в диапазон значений 0 до 1023 и сохранять их в переменной value.
Скетч с использованием команды analogRead()
#define LED 13
#define WTR A1
int value;
void setup() {
pinMode(LED, OUTPUT);
pinMode(WTR, INPUT);
Serial.begin(9600);
}
void loop() {
value = analogRead(WTR);
Serial.print("Water sensor - ");
Serial.println(value);
if (value > 100) { digitalWrite(LED, HIGH); }
if (value < 100) { digitalWrite(LED, LOW); }
delay(1000);
}
Заключение. Мы рассмотрели синтаксис функций analogRead() и digitalRead() в языке Arduino IDE, а также привели пример программ с использованием этих команд. Рекомендуем вам ознакомиться с другими статьями — Цифровые и аналоговые пины Arduino, Как подключить к Ардуино фоторезистор, Как подключить кнопку к Ардуино.
