Описание функции 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;
}
}




