Описание функции digitalWrite
Устанавливает логическую «1» (HIGH) или логический «0» (LOW) на цифровом входе/выходе.
Если цифровой вход/выход настроен на выход (OUTPUT)
функцией pinMode, то при установке значения HIGH
напряжение составит +5В (либо +3.3В, в зависимости от платы) и 0В при установке значения в LOW
. Если пин настроен на вход (INPUT)
, то значение HIGH
активирует внутренний подтягивающий резистор.
Синтаксис
digitalWrite(pin, value)
Параметры
- pin — цифровой вход/выход.
- value — принимает одно из двух значений HIGH (1) — высокий уровень или LOW (0) — низкий уровень.
Что возвращает
Ничего
Пример использования функции digitalWrite
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 милисекунд }
Симуляция в протеусе выглядит так:
Код функции digitalWrite
(hardware/arduino/avr/cores/arduino/wiring_digital.c 1.8.10)
void digitalWrite(uint8_t pin, uint8_t val) { uint8_t timer = digitalPinToTimer(pin); uint8_t bit = digitalPinToBitMask(pin); uint8_t port = digitalPinToPort(pin); volatile uint8_t *out; if (port == NOT_A_PIN) return; // If the pin that support PWM output, we need to turn it off // before doing a digital write. if (timer != NOT_ON_TIMER) turnOffPWM(timer); out = portOutputRegister(port); uint8_t oldSREG = SREG; cli(); if (val == LOW) { *out &= ~bit; } else { *out |= bit; } SREG = oldSREG; }