Описание функции pinMode
Устанавливает режим работы указанного пина (входа/выхода) как вход, вход с подтяжкой к питанию или как выход.
Синтаксис
pinMode(pin, mode)
Параметры
- pin: номер входа/выхода, который нужно сконфигурировать;
- mode: режимы.
OUTPUT
— выход,INPUT
— вход,INPUT_PULLUP
— вход, подтянутый через внутренний резистором к питанию.
Что возвращает
Ничего
Пример
void setup() { pinMode(13, OUTPUT); // Установка 13 пина на выход pinMode(2, INPUT); // Установка 2 пина на вход pinMode(3, INPUT_PULLUP); // Установка 3 пина на вход, подтянутый к питанию } void loop() { if( digitalRead(2) ) { // Если на 2 пине логическая "1" digitalWrite(13, HIGH); // то установить логическую "1" на 13 пине } else if( !digitalRead(3) ) { // Если на 3 пине логический "0" digitalWrite(13, LOW); // то установить логический "0" на 13 пине } delay(100); // Подождать 100 милисекунд }
Выполнение скетча в протеусе:
Код функции pinMode
(hardware/arduino/avr/cores/arduino/wiring_digital.c Arduino IDE 1.8.10)
void pinMode(uint8_t pin, uint8_t mode) { uint8_t bit = digitalPinToBitMask(pin); uint8_t port = digitalPinToPort(pin); volatile uint8_t *reg, *out; if (port == NOT_A_PIN) return; // JWS: can I let the optimizer do this? reg = portModeRegister(port); out = portOutputRegister(port); if (mode == INPUT) { uint8_t oldSREG = SREG; cli(); *reg &= ~bit; *out &= ~bit; SREG = oldSREG; } else if (mode == INPUT_PULLUP) { uint8_t oldSREG = SREG; cli(); *reg &= ~bit; *out |= bit; SREG = oldSREG; } else { uint8_t oldSREG = SREG; cli(); *reg |= bit; SREG = oldSREG; } }