Главная chevron_right Функции chevron_right Цифровой ввод/вывод chevron_right pinMode()

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() — например, если вывод попеременно используется как вход и выход.
  • Аналоговые выводы (A0A5 и т. д.) полностью совместимы с pinMode(), digitalWrite() и digitalRead(); их можно указывать по именам A0, A1 и т. д.
  • Если вывод сконфигурирован как OUTPUT и случайно замкнут на GND или питание, это может повредить микроконтроллер. Всегда используйте токоограничивающий резистор при подключении светодиодов.
  • При использовании INPUT_PULLUP помните об инверсии логики: не нажата кнопка — HIGH, нажата — LOW.
  • Если показания digitalRead() «прыгают» без видимой причины, скорее всего, вывод настроен как INPUT и физически «висит в воздухе». Переключитесь на INPUT_PULLUP или добавьте внешний подтягивающий резистор.