+38 (093) 990-30-70 Новости
|
|
Arduino pinMode: функция изменения типа пинаОпубликовано: 01.09.2018 pinMode в Arduino помогает установить режим работы пина для выполнения операций считывания или записи. Как правило, эта функция используется внутри метода setup () и выполняется один раз при запуске программы. Неправильное выставление режима входов и выходов ардуино может сказать на работоспособности проекта и платы. В этой статье мы узнаем, как пользоваться pinMode, в каких случаях ее можно опустить, а в каких она обязательна. Подключаем нагрузку к Arduino Синтаксис функции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В режиме INPUT_PULLUP пин работает в режиме входа, но Arduino неявно для нас подключает к входной цепи внутренний подтягивающий резистор. При этом поступление сигнала с датчика будет «инвертироваться», т.е. высокий уровень будет приводить к нулю на входе, низкий, наоборот, оставит на пине высокое напряжение. Режим INPUT_PULLUP широко используется при работе с кнопками в Ардуино . В не нажатом состоянии подключенная к пину кнопка создает неопределенное состояние (а провод, ведущий к Arduino выступает в роли своеобразной антены, усиливающей все наводки). Для исправления ситуации в схему добавляют подтягивающий резистор. Использование команды pinMode с параметром INPUT_PULLUP позволяет обойтись без дополнительного внешнего сопротивления, используя внутренний резистор Arduino. Альтернативным способом использования INPUT_PULLUP является подача высокого уровня напряжения на вход, находящийся в режиме INPUT. Команда digitalWrite (10, HIGH) для пина 10, установленного в режим INPUT, включит внутренний резистор так же, как это сделала бы команда pinMode(10, INPUT_PULLUP). Теперь для вас должно стать понятно, почему даже в простых схемах ваши светодиоды иногда светились очень тускло: вы просто забывали установить для них тип OUTPUT, а когда включали c помощью команды digitalWrite , вы подсоединяли встроенный резистор, тем самым ограничивая ток и степень свечения светодиода. |
||||
|
|