Наилучший способ назначить контакты светодиодному кубу?

Я сделал светодиодный куб размером 3x3x3, и мне было интересно, есть ли способ создать функцию в среде IDE Arduino, в которой каждый слой светодиодов может быть представлен списком, в котором 1 включен, а 0 выключен: {1, 0, 1, 0, 1, 0, 0, 1, 0} с первым номером списка, являющимся первым столбцом, затем вторым столбцом и т. Д., И то же самое для строк, которые были бы чем-то вроде {0, 1, 0}. Имеет ли это смысл? Если да, то есть ли идея для функции, которая могла бы принимать эти входные данные и преобразовывать их в цифровые выходные данные? Для этого я использую Arduino Nano с выводами 2, 3, 4, 5, 6, 7, 8, 9, и 11 используется для столбцов, в которых A0, A1 и A2 являются строками куба.

, 👍1


1 ответ


1

Что ж, изучение битовых манипуляций и использование трех uint16_t (так как 9 бит не поместятся в uint8_t) для хранения состояния для всего куба намного лучше. Затем вам нужно настроить таймер ISR, и каждый раз, когда он срабатывает, отображается только один "этаж". Мультиплексирование можно выполнять даже в цикле, но оно обычно мерцает, так как вы не можете выполнить почти идеальное время, как в ISR.

И, например, я использовал два сегмента 2x4x4 для создания куба 4x4x4 и один MAX7219 для его управления, так что мне не нужно обрабатывать все мультиплексирование и так далее.

Еще один мой подход заключался в использовании индивидуально адресуемых светодиодов, таких как WS2812B, поэтому мне нужен был только один вывод, чтобы управлять всем этим. Или, используя передачи ARM и DMA, я мог бы управлять 8 или 16 линиями одновременно.

,