Функция pinMode() в Arduino

arduino-logo

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

Загрузки

Где купить

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии