pinMode()
pinMode() задаёт режим вывода Arduino: INPUT, OUTPUT или INPUT_PULLUP — обычно вызывается один раз в setup() перед работой с digitalWrite() или digitalRead().
Полная статья
Описание
pinMode() сообщает микроконтроллеру, как использовать конкретный вывод: читать с него сигнал или подавать напряжение. Без этого вызова вывод находится в неопределённом состоянии, и поведение скетча будет непредсказуемым.
Доступны три режима:
INPUT— вывод переходит в режим высокоимпедансного входа. Он «слушает» внешний сигнал и почти не потребляет ток. Если вывод физически ни к чему не подключён, он будет «плавать» и давать случайные показания — это нормально, но нужно учитывать при проектировании схемы.OUTPUT— вывод переходит в режим выхода и может управлять нагрузкой: светодиодом, реле, транзистором. Микроконтроллер активно удерживает на нёмHIGHилиLOW.INPUT_PULLUP— режим входа со встроенным подтягивающим резистором к питанию. Удобен для кнопок без внешних резисторов: когда кнопка не нажата, вывод читается какHIGH; при нажатии (замыкании на GND) — какLOW. Режим доступен начиная с Arduino IDE 1.0.1. Если переключить вывод вINPUT, внутренняя подтяжка будет явно отключена независимо от предыдущего состояния.
Синтаксис
pinMode(pin, mode)
Параметры
pin— номер вывода Arduino, для которого задаётся режим. Аналоговые выводы можно указывать какA0,A1и т. д.mode— один из трёх режимов:INPUT,OUTPUTилиINPUT_PULLUP.
Возвращает
Функция ничего не возвращает.
Пример кода
Следующий скетч настраивает вывод 13 Arduino (на большинстве плат к нему подключён встроенный светодиод) как OUTPUT и мигает им с интервалом в одну секунду, чередуя HIGH и LOW:
void setup() {
pinMode(13, OUTPUT); // Устанавливает цифровой вывод 13 как выход
}
void loop() {
digitalWrite(13, HIGH); // Включает цифровой вывод 13
delay(1000); // Ждёт одну секунду
digitalWrite(13, LOW); // Выключает цифровой вывод 13
delay(1000); // Ждёт одну секунду
}
Где применяется
- Мигание светодиодом — вывод в режиме
OUTPUT, управление черезdigitalWrite(). - Считывание состояния кнопки — вывод в режиме
INPUT_PULLUP, кнопка замыкает его на GND. - Управление реле или транзистором — вывод в режиме
OUTPUTподаёт сигнал на управляющий элемент. - Чтение цифрового датчика — вывод в режиме
INPUTпринимает сигнал от датчика с собственной логикой уровней.
Практические замечания
pinMode()обычно вызывается один раз вsetup(), но при необходимости её можно вызвать и вloop()— например, если вывод попеременно используется как вход и выход.- Аналоговые выводы (
A0–A5и т. д.) полностью совместимы сpinMode(),digitalWrite()иdigitalRead(); их можно указывать по именамA0,A1и т. д. - Если вывод сконфигурирован как
OUTPUTи случайно замкнут на GND или питание, это может повредить микроконтроллер. Всегда используйте токоограничивающий резистор при подключении светодиодов. - При использовании
INPUT_PULLUPпомните об инверсии логики: не нажата кнопка —HIGH, нажата —LOW. - Если показания
digitalRead()«прыгают» без видимой причины, скорее всего, вывод настроен какINPUTи физически «висит в воздухе». Переключитесь наINPUT_PULLUPили добавьте внешний подтягивающий резистор.