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




