Как остановить свечение дополнительных светодиодов в светодиодном кубе

Итак, я строю светодиодные кубы, и я программирую их так: я использую аналоговый вывод для слоев земли и устанавливаю их на высокий уровень, когда хочу, чтобы светодиод на этом слое загорелся. Допустим, я хочу, чтобы загорелись следующие светодиоды

Желаемое поведение светодиода

Но на самом деле светодиоды загораются во всех слоях, которые, очевидно, установлены на высокий уровень, так что это то, что на самом деле загорается

Фактическое поведение светодиода

Что мне следует включить, чтобы этого не произошло. Я использую Arduino Nano, нужно ли мне редактировать код или это аппаратное обеспечение?

, 👍0

Обсуждение

Вы включаете один, выключаете его, затем включаете следующий и выключаете его. Делайте это очень быстро, и будет казаться, что они оба горят., @Majenko

Не работает, потому что я быстро вращаю куб, поэтому 1 миллисекунда заметна., @Reese Houseknecht

Тогда вам нужно будет изменить схему так, чтобы каждый светодиод был подключен напрямую, а не в матрице. Если вы не можете использовать матричное мультиплексирование, то вы не можете использовать матрицу. Просто., @Majenko

Должен быть лучший способ, с помощью которого я могу контролировать части светодиодов и при этом иметь прочную конструкцию, которая представляет собой куб., @Reese Houseknecht

У вас не куб, у вас квадрат. И если вы его вращаете, то мультиплексирование, как вы заметили, не будет работать хорошо. У вас есть выбор между мультиплексированием (мерцание, мало проводов) и немультиплексированием (без мерцания, много-много проводов)., @Majenko

Возможно, вам придется вернуться к чертежной доске. Возможно, способ, которым вы проектируете то, что вы проектируете, неправильный., @Majenko

Я знаю лучший способ проектирования того, что я делаю, но это требует гораздо больше работы. Я просто хотел узнать, есть ли особый способ управления каждым светодиодом, но спасибо за помощь, чтобы я не тратил больше времени на поиск метода, который не работает haha, @Reese Houseknecht

Единственный способ использовать мультиплексирование — это иметь очень-очень высокую частоту. Я говорю о диапазоне МГц. Возможно, вам удастся найти чип драйвера, который это делает., @Majenko

Вы хотите превратить эти комментарии в ответ и я дам вам дубляж?, @Reese Houseknecht

Я придумал другой вариант — я подробно опишу его в своем ответе., @Majenko


1 ответ


Лучший ответ:

2

Ваша схема должна использоваться с мультиплексированием. Мультиплексирование вносит мерцание. Поскольку вы, похоже, хотите быстро перемещать сетку светодиодов, это мерцание приведет к очень нежелательному эффекту.

Итак, у вас есть несколько вариантов:

  1. Перепроектируйте свою систему так, чтобы не использовать мультиплексирование. При прямом управлении каждым светодиодом вы получите нулевое мерцание, но в итоге вам понадобится столько проводов и контактов GPIO, сколько у вас светодиодов (хотя сдвиговые регистры можно использовать для перемещения основной массы проводов ближе к светодиодам). Это непрактично.
  2. Используйте мультиплексирование, но сделайте частоту настолько высокой, чтобы мерцание было не заметно. Мы говорим о тысячах или миллионах циклов в секунду, чтобы все выглядело гладко (в зависимости от того, как быстро вы вращаете сетку). Для этого вам понадобится высокоскоростной чип драйвера мультиплексирования.
  3. Синхронизируйте мультиплексирование с вращением сетки.

Третий вариант опирается на довольно высокую скорость вращения, поскольку ваше мультиплексирование увеличивает один столбец или строку за каждый оборот. При обработке 5 столбцов потребуется 5 оборотов, чтобы обработать всю сетку.

Вам нужен какой-то способ определения начала каждого оборота (например, датчик Холла), и каждый раз, когда вы начинаете новый оборот, вы зажигаете только один столбец светодиодов. Чем быстрее вы вращаетесь, тем плавнее будет эффект.

Если вы хотите, чтобы светодиоды включались или выключались только для части революции, то вам придется решать, когда их включать или выключать для этой конкретной колонки. Вот тогда и начинается действительно веселье.

,

Проголосовал за. Просто замечание по поводу 1: вы можете использовать, например, 74HC595 (в режиме последовательного соединения) для 32 светодиодов с несколькими контактами. Хотя вам нужно проложить провода от этих 74HC595 к каждому светодиоду (много проводов)., @Michel Keijzers

@MichelKeijzers Действительно. Плюс, конечно, вы, вероятно, тогда бы их тоже очень быстро вращали, что добавляет нестабильности всей этой штуке. Не идеально., @Majenko

Да, не идеально :-), @Michel Keijzers