Функция arduino pinMode

pinMode в Arduino помогает установить режим работы пина для выполнения операций считывания или записи. Как правило, эта функция используется внутри метода setup () и выполняется один раз при запуске программы. Неправильное выставление режима  входов и выходов ардуино может сказать на работоспособности проекта и платы. В этой статье мы узнаем, как пользоваться pinMode, в каких случаях ее можно опустить, а в каких она обязательна.

Синтаксис функции

pinMode(<номер пина>, <тип>)

Функция не возвращает значения.

Описание параметров

В параметре <номер пина> указываем порт, который хотим сконфигурировать. Как правило, функция используется для установки цифровых пинов, т.к. аналоговые пины ардуино чаще всего используются как входные, а входной режим используется Arduino по умолчанию.

В параметре <тип> указываем тип режима работы пина (более подробно о возможных режимах мы поговорим чуть позже).

Константы INPUT, OUTPUT и INPUT_PULLUP

В Ardino предусмотрены константы, обозначающие варианты типов:

  • INPUT (значение по умолчанию);
  • OUPUT;
  • INPUT_PULLUP.

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

  • pinMode(13, OUTPUT); // Установили 13 пин как выход
  • pinMode(2, INPUT);      // Так делать не надо. По умолчанию, все пины работают в режиме входа.

Зачем нужна функция pinMode

Режимы работы портов и функция pinMode входят в число первых вопросов, возникающих у начинающих ардуинщиков. Действительно, зачем нам нужно определять самим тип порта и почему микроконтроллер не может это сделать самостоятельно?

Для ответа на вопрос нам нужно немного окунуться в электронику. Вспомните, что мы пишем программу не для абстрактного компьютера, а для вполне конкретного устройства, схема которого может кардинально отличаться от проекта к проекту. Вы можете подключить к плате Arduino огромное количество разнообразных устройств с совершенно разными характеристиками (сопротивление, емкость и т.п.). Присоединив их к Arduino,  вы создаете совершенно новую электрическую схему, в которой  должны быть уже учтены параметры, как самой платы, так и внешних устройств. Так, например, подключение двигателя, который потребляет высокий ток (особенно в момент старта и остановки) будет сильно отличаться по схеме от подключения какого-либо датчика. В некоторых случаях Ардуино становится источником питания, в некоторых — просто  вольтметром, а это совершенно разные режимы работы: в первом случае нужно по возможности снизить внутреннее сопротивление (можно придумать такую аналогию — мы громко говорим, нужно чтобы ничего не мешало) а во втором — наоборот, максимально поднять (мы слушаем, рот можно закрыть).

Электрическое сопряжение – очень непростое дело и самостоятельно новичку разобраться во всех нюансах было бы очень не просто. Тем более, что для работы с каждым типом устройств желательно создавать свою уникальную схему подключения и подбирать радиоэлементы (резисторы, конденсаторы), обеспечивающие наиболее безопасный и энергоэффективный режим работы. К счастью, в некоторых случаях Arduino берет часть работы на себя, подключая или отключая необходимый способ сопряжения, если вы укажете ему прямо в программе, в каком режиме работы должны находиться пины. Именно это и делается с помощью функции ардуино pinMode. Указав номер порта и тип подключения, вы тем самым заставляете Arduino задействовать или отключать необходимые элементы платы. Полученный результат в большинстве случаев достаточно хорошо решает проблему сопряжения нескольких электронных компонентов.

Режимы работы пинов Arduino

Как правило, каждый пин платы Arduino работает в двух возможных режимах: или в качестве входа или в качестве выхода.  Для установки режима работы Arduino в основном используется два варианта параметров: INPUT и OUTPUT. Но иногда при работе с датчиками нужно выставить пин в режим с неявно подключенным внутренним резистором, поэтому  в нашем арсенале есть еще одна константа, определяющая тип пина: INPUT_PULLUP.

Pin INPUT

Режим INPUT определяет высокоимпедансное состояние пина для работы с внешними источниками сигналов (как правило, это различные варианты датчиков, от которых поступают показания, отсюда слово INPUT). Другими словами, в этом состоянии вы можете подключить практически любую нагрузку, потому что к входу неявным образом подключается высокоомный (десяток мегаом) резистор.

Для установки режима INPUT нужно использовать следующую команду:

pinMode(<номер порта>, INPUT);

По умолчанию, все пины Arduino установлены в режим INPUT, поэтому указывать это явно не требуется и команда с такой константной практически не встречается в реальных проектах.

Pin OUTPUT

В режиме OUTPUT Arduino поддерживает пин в низкоимпедансном состоянии, при котором на внешнее устройство выдается максимально возможный ток (плата, по сути, становится  источником тока). В этом режиме обычно работают пины Arduino с подключенными светодиодами, сервоприводами (маломощными), пьезоизлучателями,  реле, драйверами двигателей и другими внешними устройствами, являющимися для Arduino внешними (отсюда слово OUTPUT).  Для установки пина в режим OUTPUT нужно использовать следующую команду:

pinMode(<номер порта>, OUTPUT);

Pin INPUT_PULLUP

Функция arduino pinModeВ режиме INPUT_PULLUP пин работает в режиме входа, но Arduino неявно для нас подключает к входной цепи внутренний подтягивающий резистор. При этом поступление сигнала с датчика будет «инвертироваться», т.е. высокий уровень будет приводить к нулю на входе, низкий, наоборот, оставит на пине высокое напряжение.

Режим INPUT_PULLUP широко используется при работе с кнопками в Ардуино. В не нажатом состоянии подключенная к пину кнопка создает неопределенное состояние (а провод, ведущий к Arduino выступает в роли своеобразной антены, усиливающей все наводки). Для исправления ситуации в схему добавляют подтягивающий резистор. Использование команды pinMode с параметром INPUT_PULLUP позволяет обойтись без дополнительного внешнего сопротивления, используя внутренний резистор Arduino.Функция arduino pinMode

Альтернативным способом использования INPUT_PULLUP является подача высокого уровня напряжения на вход, находящийся в режиме INPUT. Команда digitalWrite(10, HIGH) для пина 10, установленного в режим INPUT, включит внутренний резистор так же, как это сделала бы команда pinMode(10, INPUT_PULLUP).

Теперь для вас должно стать понятно, почему даже в простых схемах ваши светодиоды иногда светились очень тускло: вы просто забывали установить для них тип OUTPUT, а когда включали c помощью команды digitalWrite, вы подсоединяли встроенный резистор, тем самым ограничивая ток и степень свечения светодиода.

ПОДЕЛИТЬСЯ

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

Please enter your comment!
Please enter your name here