Я только что начал использовать 74HC595 I C и хочу иметь возможность изменять одно значение (бит) байтового значения без изменения какого-либо другого значения в байте, например:
const uint8_t LED_0 = 0b00000001;
Это включит все светодиоды, кроме СИД 0 (в зависимости от порядка наибольшего / наименьшего значащего бита).
То, что я думал о том, чтобы сохранить каждое значение бита, это поместить каждое значение бита в например, массив:
int seq[] = {0b,0,0,0,0,0,0,0,1};
Если и когда контакт на 74HC595 изменится, я могу легко изменить значение в массиве на 1 или 0.
Следующая процедура записывает байт в I C:
void updateShiftRegister( const uint8_t value )
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, value );
digitalWrite(latchPin, HIGH);
}
Затем функция вызывается следующим образом:
updateShiftRegister( LED_0 ); // led 0 on, other leds off
Как я могу объединить массив seq выше, чтобы иметь возможность передавать все значения в массиве моей процедуры?
Я посмотрел на sprintf и String.concat, но я не совсем уверен, что это путь к go. Я искренне сомневаюсь, что функция sprintf должна быть даже рассмотрена.
Если существует лучший / упрощенный метод, пожалуйста, не стесняйтесь обучить меня этому.
С уважением, Тино