Arduino analogRead ()

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

Синтаксис

analogRead(<номер порта>)

  • номер порта — номер аналогового порта, с которого мы будем считывать значение

Возвращаемое значение: число типа int в диапазоне от 0 до 1023.

Описание analogRead

Принцип работы

Функция используется для считывания сигналов с аналоговых пинов платы arduino. На выходе мы получаем число, пропорциональное реальному значению входного напряжения (но не само напряжение). По своей сути, с помощью analogRead мы создаем вольтметр и можем использовать его показания для анализа информации с датчиков и выработки каких-либо действий.

Почему мы получаем некоторое абстрактное число, а не реальное значение напряжения? Все дело в том, что наша программа может запускаться на разных платах arduino с разными подключенными датчиками, с разными рабочими напряжениями. И мы бы должны изменять программу при каждом изменении типа платы или датчика, что крайне не удобно.

Почему функция возвращает значение от 0 до 1023? Все очень просто: аналогово-цифровой преобразователь, преобразующий значение напряжения в его цифровое значение, в ардуино имеет 10 разрядов, а 2 в 10 степени равно 1024. Таким образом, диапазон значений от 0 до 1023 дает нам 1024 варианта уровня сигнала. Мы просто сравниваем полученное число с границами диапазона и принимаем решение о том, что делать.

Примеры использования

  • analogRead(A0); // считать сигнал с аналогового порта A0
  • analogRead(15); // аналогично, порт 15 и A0 — это одно и то же

Преобразование значения с помощью функции map()

В арудино есть специальная функция, упрощающая преобразование диапазонов значений. Вы передаете ей значение и два диапазона (исходный и требуемый), а функция возвращает новое значение, которое будет также относиться к границам требуемого диапазона как и к границам исходного. Например, значение 5 в диапазоне от 0 до 10 преобразуется в значение 10 в диапазоне от 0 до 20. Значение 500 из диапазона от 0 до 1000 преобразуется в значение 5 из диапазона от 0 до 10.

Пример использования функции map совместно с функцией analogRead ():

int val = map(analogRead(A0), 0, 1023, 1, 10); //Вернет значение аналогового порта в диапазоне от 0 до 10. При этом 0 будет соответствовать 0, а 10 — 1023.

Пример использования analogRead с платой Arduino Uno

пример analogRead подключение потенциометра

Рассмотрим простой пример работы с функцией analogRead. Мы присоединяем напрямую к ардуино потенциометр, подключив его к аналоговому порту A0. В скетче мы считываем значение и выводит его в монитор порта. Загрузите скетч в плату и откройте окно монитора последовательного порта. Вы увидите длинную вереницу чисел, выводящихся с помощью функции Serial.println().

void setup() {
Serial.begin(9600); // Инициализируем общение c компьютером на скорости 9600
}

void loop() {
// Считываем значение с аналогового порта
int sensorValue = analogRead(A0);
// Печатаем значение в мониторе порта
Serial.println(sensorValue);
// Небольшая задержка, чтобы бать ардуино слегка отдышаться
delay(1);
}

Выводы

С помощью функции analogRead мы считываем значение с аналоговых портов Arduino. Использовать функцию очень просто —  мы указываем номер порта и получаем на выходе значение от 0 до 1023, пропорциональное уровню входного сигнала. Затем мы можем преобразовать число в нужный нам диапазон с помощью функции map и выполнить какие-то полезные действия.

ПОДЕЛИТЬСЯ

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here