Перейти к содержанию

Функция digitalRead() и analogRead() в Ардуино

Функция digitalRead и analogRead в Ардуино

Рассмотрим использование команд digitalRead() и analogRead() в языке программирования Ардуино, которые используются для опроса цифровых и аналоговых датчиков соответственно. Рассмотрим эти функции на примере подключения цифрового датчика движения через цифровой вход микроконтроллера и аналогового датчика воды через аналоговый вход. Вместо этих датчиков можно использовать любые другие сенсоры.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • светодиоды и резисторы
  • PIR датчик движения
  • датчик уровня воды
  • макетная плата
  • коннекторы

Дополнительные материалы на эту тему:

  1. Функция digitalWrite() и analogWrite() в Ардуино
  2. Включение и выключение светодиода от кнопки Ардуино
  3. Игра со светодиодами «Повтори последовательность»

Для подключения цифровых датчиков к микроконтроллеру с использованием команды 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, Как подключить к Ардуино фоторезистор, Как подключить кнопку к Ардуино.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

newzaym
➜