Многократный digitalWrite()

ArtHome
ArtHome аватар
Offline
Зарегистрирован: 19.05.2018

Есть ли минусы, если я каждый раз внутри loop() буду выполнять digitalWrite() с одним и тем же уровнем или же лучше озаботиться и завести логическую переменную для предотвращения повторных digitalWrite()?

Какой вариант предпочтительнее, 1 или 2?

// Вариант 1 ==================
void loop() 
{
    digitalWrite(9, HIGH);
}


// Вариант 2 ==================
bool isDone = false;
void loop() 
{
    if (!isDone) {
        isDone = true;
        digitalWrite(9, HIGH);
    }
}

 

bwn
Offline
Зарегистрирован: 25.08.2014

Это один из древнейших местных холиваров. 
В подавляющем большинстве случаев, без разницы. ИМХО.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017
if (!digitalRead(9)) digitalWrite(9, HIGH);

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

сам не проверял но утверждается, что иголок нет

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Если скорость выполнения куска кода по записи уровня куда-либо - примерно равна скорости выполнения проверки "надо ли писать уровень" - то без разницы. Но с точки зрения оптимизации (digitalWrite относительно медленный), а также учитывая тот нюанс, что не всегда надо именно digitalWrite (например, когда используются относительно медленные расширители портов на разных протоколах) - лично я предпочитаю иметь наличие флага.