Один из способов взглянуть на это состоит в том, что ребята из Arduino изобрели счетчики HIGH
и LOW
(макросы?), Чтобы скрыть тот факт, что, возможно, хотя и маловероятно, будет процессор, который не использует 1 дляHIGH
и 0 для LOW
.Если вы хотите написать переносимый, ориентированный на будущее код, то вам, вероятно, следует придерживаться HIGH
и LOW
.
Еще один способ взглянуть на это состоит в том, что вам (вероятно) действительно не важно, чтофактическое состояние вывода:вас волнует, что это значит: кнопка нажата, датчик движения обнаружил кого-то, стержни управления были опущены и т. д. Вы можете сохранить значение в любой форме, которая вам подходит, например, bool
, и конвертировать между своими концептуальнымитип и состояние вывода, где бы вы ни пересекали границу:
bool button_pressed = digitalRead(button_pin) == LOW;
...
digitalWrite(led_pin, button_pressed ? HIGH : LOW);
Не беспокойтесь о дополнительном коде здесь, так как компилятор собирается его оптимизировать, если все имеет «очевидные» значения итипы.
Опять же, это встроенная система, в которой общность часто является второстепенной задачей для размера и скорости.Со встроенной системой вы обычно точно знаете, для какого оборудования вы пишете.Если вам нужно извлечь из этого максимум производительности, вам, вероятно, придется отказаться от использования хороших API digitalRead
/ digitalWrite
и работать непосредственно с регистрами процессора.И это тоже нормально.