Как разделить и объединить два байта - PullRequest
0 голосов
/ 05 мая 2019

Я играю со светодиодной матрицей 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);
    }
  }
}
  }
}
...