Я работаю над программой для Arduino, которая отправляет данные в некоторые сдвиговые регистры для управления большим матричным дисплеем. Мне нужно, чтобы текст прокручивался, и здесь я сталкиваюсь с проблемами. Предположим, например, что на дисплее отображается «HI». Первый набор данных по всему экрану будет «10001 11111». Это будет представлять столбцы, которые освещены в первой фазе. Если я соберу это вместе и добавлю пробел, я получу «10001011111». Я понял, что число в двоичном формате можно сдвинуть на один столбец, разделив его на 2.
Так, например, «11111»/2 = 01111. Следующее деление — 00111, затем 00011, 00001 и т. д. Проблема в том, что я передаю данные в два отдельных сдвиговых регистра, по одному на каждую цифру. Итак, сначала я отправляю «11111», а затем перевожу «10001». Когда они прокручиваются, данные должны передаваться с одного дисплея на другой. Ниже приведена диаграмма, чтобы попытаться лучше понять это: Для работы «HI»
ПЛОХО
H | I
10001 0 11111
01000 0 01111
00100 0 00111
00010 0 00011
00001 0 00001
00000 0 00000
Что мне нужно
H | I
10001 0 11111
01000 1 01111
00100 0 10111
00010 0 01011
00001 0 00101
00000 1 00010
00000 0 10001
00000 0 01000
00000 0 00100
00000 0 00010
00000 0 00001
00000 0 00000
Я действительно пробовал все, что мог придумать. Каково решение?