Я играю со светодиодной матрицей 8х8, и мне удалось получить различные формы и буквы для отображения и прокрутки. В настоящее время я работаю над кодом для прокрутки текста с использованием 595 сдвиговых регистров, мне удалось получить каждую букву в слове для прокрутки матрицы и обратно, но я пытаюсь выяснить, как убрать пробел между буквами. Пробел исходит от меня, сдвигая биты с помощью << и >>, чтобы переместить букву в матрицу и выйти из нее, чтобы создать эффект прокрутки.
Есть ли какая-нибудь битовая математика, которую я могу сделать, чтобы разделить байты, когда они сдвинуты, и конкатенировать следующий байт? Это то, что я считаю решением, но не знаю, как это сделать.
Прошу прощения за мой ужас программирования, я все еще учусь и открыт для конструктивной критики.
// Entire for loop block first moves each letter in from the right then scrolls it out the left
for(int numOfLetters = 0; numOfLetters < 2; numOfLetters++){
// This for loop block scrolls the each letter in from the right to the middle of the matrix
for(int z = 8; z > 0; z--){
for(int speedOfScroll = 0; speedOfScroll < 5; speedOfScroll++){
for(int i = 0; i < 8; i++){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, row[i]); // Rows
shiftOut(dataPin, clockPin, LSBFIRST, column1[numOfLetters][i] >> z); // Columms
digitalWrite(latchPin, HIGH);
delay(2);
}
}
}
// This for loop block scrolls each letter from the middle of the matrix to the left
for(int y = 0; y < 8; y++){
for(int speedOfScroll = 0; speedOfScroll < 5; speedOfScroll++){
for(int i = 0; i < 8; i++){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, row[i]); // Rows
shiftOut(dataPin, clockPin, LSBFIRST, column1[numOfLetters][i] << y); // Columms
digitalWrite(latchPin, HIGH);
delay(2);
}
}
}
}
}