Arduino int в байт

Я делаю 7-сегментную систему отображения, и я хочу, чтобы при включении и выключении маленький шарик в конце цифры, когда я нажимаю кнопку, я знаю, что из byte seven _seg_digits[10] = {B11111100 // means number 1, ...} последнее число означает маленький шарик, но мне нужно изменить значение последнего числа на 1, поэтому я попробовал это:

int repeatDigit; // 0 or 1
byte digit;
byte seven_seg_digits[10] = {
B1111110 + repeatDigit,  // = 0
B0110000 + repeatDigit,  // = 1
B1101101 + repeatDigit,  // = 2
B1111001 + repeatDigit,  // = 3
B0110011 + repeatDigit,  // = 4
B1011011 + repeatDigit,  // = 5
B1011111 + repeatDigit,  // = 6
B1110000 + repeatDigit,  // = 7
B1111111 + repeatDigit,  // = 8
B1110011 + repeatDigit   // = 9
};

Я удалил последнее число 0 и заменил его на int «repeatDigit», это не дает мне ошибку компиляции, но 7-сегментный дисплей не отображает правильно номер

0

Решение

Я предлагаю вам прочитать о побитовых операциях. В то же время, если вы хотите установить последнюю двоичную цифру в 0 или 1, на основе repeatDigitсначала вы должны указать 8-битное значение, а не 7-битное: b1111110**0**не b1111110, Так как b1111110 действительно b01111110что не то, что вы хотите.

Далее, не используйте int, Вам нужно 8-разрядное целое число без знака и только его младший бит. Итак, вы хотите:

uint8_t repeatDigit;

Теперь вы можете сделать:

b10110110 | (repeatDigit & 0b00000001), // = 5

Это добавляет младший бит repeatDigit в LSB из b10110110, Так что если repeatDigit это 0, b10110110 останется прежним, и если оно будет равно 1, оно станет b10110111,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]