Как объединить значения int в массиве в байтовую (unit8_t) переменную - PullRequest
0 голосов
/ 05 марта 2020

Я только что начал использовать 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 должна быть даже рассмотрена.

Если существует лучший / упрощенный метод, пожалуйста, не стесняйтесь обучить меня этому.

С уважением, Тино

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...