pinMode в Arduino помогает установить режим работы пина для выполнения операций считывания или Pin-Up Как правило, эта функция используется внутри методаsetup() и выполняется один раз при запуске программы. Pin-Up выставление режима входов и выходов ардуино может сказать на работоспособности проекта и платы. В этой статье мы узнаем, как пользоваться pinMode, в каких случаях ее можно опустить, а в каких она обязательна.
Содержание
Синтаксис функции
pinMode(<номер пина>, <тип>)
Функция не возвращает значения.
Описание параметров
В параметре <номер пина> указываем порт, который хотим сконфигурировать. Как правило, Pin-Up используется для установки цифровых пинов, т.к. аналоговые пины ардуино чаще всего используются как входные, а входной режим используется Arduino по умолчанию.
В параметре Pin-Up указываем тип режима работы пина (более подробно о возможных режимах мы поговорим чуть позже).
Константы INPUT, OUTPUT и INPUT_PULLUP
В Ardino предусмотрены константы, Pin-Up варианты типов:
- INPUT (значение по умолчанию);
- OUPUT;
- INPUT_PULLUP.
Примеры использования
- pinMode(13, Pin-Up // Установили 13 пин как выход
- pinMode(2, Pin-Up / По умолчанию, все пины работают в режиме входа.
Зачем нужна функция pinMode
Режимы работы портов и функция pinMode входят в число первых вопросов, возникающих у начинающих ардуинщиков. Действительно, зачем нам нужно определять самим тип порта и почему Pin-Up не может это сделать самостоятельно?
Для ответа на вопрос нам нужно немного окунуться в электронику. Вспомните, что мы пишем программу не для абстрактного компьютера, а для вполне конкретного устройства, схема которого может кардинально отличаться от проекта к проекту. Вы можете подключить к плате Arduino огромное количество разнообразных устройств с совершенно разными характеристиками (сопротивление, емкость и т.п.). Присоединив их к Arduino, вы создаете совершенно новую электрическую схему, в которой должны быть уже учтены параметры, как самой платы, так и внешних устройств. Так, например, подключение двигателя, который потребляет высокий ток (особенно в момент старта и остановки) будет сильно отличаться по схеме от подключения какого-либо датчика. В некоторых случаях Ардуино становится источником питания, в некоторых - просто вольтметром, а это совершенно разные режимы работы: в первом случае нужно по возможности снизить внутреннее сопротивление (можно придумать такую аналогию - мы громко говорим, нужно чтобы ничего не мешало) а во Pin-Up - наоборот, максимально поднять (мы слушаем, рот можно закрыть).
Электрическое сопряжение - очень непростое дело и самостоятельно новичку разобраться во всех нюансах Pin-Up бы очень не просто. Тем более, что для работы с каждым типом устройств желательно создавать свою уникальную схему подключения и подбирать радиоэлементы (резисторы, конденсаторы), обеспечивающие наиболее безопасный и энергоэффективный режим работы. К счастью, в некоторых случаях Arduino берет часть работы на себя, подключая или отключая необходимый способ сопряжения, если вы укажете ему прямо в программе, в каком режиме работы должны находиться пины. Именно это и делается с помощью функции ардуино pinMode. Указав номер порта и тип подключения, вы тем самым заставляете Arduino задействовать или отключать необходимые элементы платы. Полученный результат в большинстве случаев достаточно хорошо решает проблему сопряжения нескольких электронных компонентов.
Режимы работы пинов Arduino
Как правило, каждый пин платы Arduino работает в двух возможных режимах: или в качестве входа или в качестве выхода. Для установки режима работы Arduino в основном используется два варианта параметров: INPUT и OUTPUT. Но иногда при работе с Pin-Up нужно выставить пин в режим с неявно подключенным внутренним резистором, поэтому в нашем арсенале есть еще одна константа, определяющая тип пина: INPUT_PULLUP.
Pin INPUT
Режим INPUT определяет высокоимпедансное состояние пина для работы с внешними источниками сигналов (как правило, это Pin-Up варианты датчиков, от которых поступают показания, отсюда слово INPUT). Другими словами, в этом состоянии вы можете подключить практически любую нагрузку, потому что к входу неявным образом подключается высокоомный (десяток мегаом) резистор.
Для установки режима INPUT Pin-Up использовать следующую команду:
pinMode(<номер порта>, INPUT);
По умолчанию, все пины Arduino установлены в режим INPUT, Pin-Up указывать это явно не требуется и команда с такой константной практически не встречается в реальных проектах.
Pin OUTPUT
В режиме OUTPUT Arduino поддерживает пин в низкоимпедансном состоянии, при котором на внешнее устройство выдается максимально возможный ток (плата, по сути, становится источником тока). В этом режиме обычно работают пины Arduino с подключенными светодиодами, сервоприводами (маломощными), пьезоизлучателями, реле, драйверами двигателей и другими внешними устройствами, являющимися для Arduino внешними (отсюда слово OUTPUT). Для установки Pin-Up в режим OUTPUT нужно использовать следующую команду:
pinMode(<номер порта>, OUTPUT);
Pin INPUT_PULLUP

Режим INPUT_PULLUP широко используется приработе с кнопками в Ардуино. В не нажатом состоянии подключенная к пину кнопка создает неопределенное состояние (а провод, ведущий к Arduino выступает в роли своеобразной антены, усиливающей все наводки). Для исправления ситуации в схему добавляют Pin-Up резистор. Использование команды pinMode с параметром INPUT_PULLUP позволяет обойтись без дополнительного внешнего сопротивления, используя внутренний резистор Arduino.
Альтернативным способом использования INPUT_PULLUP является подача высокого уровня напряжения на вход, находящийся в Pin-Up INPUT. КомандаdigitalWrite(10, HIGH) для пина 10, установленного в режим INPUT, включит Pin-Up резистор так же, как это сделала бы команда pinMode(10, INPUT_PULLUP).
Теперь для вас должно стать понятно, почему даже в простых схемах ваши светодиоды Pin-Up светились очень тускло: вы просто забывали установить для них тип OUTPUT, а когда включали c помощью командыdigitalWrite, вы подсоединяли встроенный резистор, тем самым ограничивая ток и Pin-Up свечения светодиода.












