Точечная матрица arduino выключить прерывистый светодиод
Я сделал точечную матрицу, содержащую 10 строк и 12 столбцов, всего 120 светодиодов.
Я хочу включить светодиоды, как показано на рисунке, но когда я размыкаю землю 1, 2 и контакты 0, 1, 2
6 светодиодов загораются вместе. Какую конструкцию мне построить?
Схема:
Я попробовал построчно вот так:
clear_cube();
regWrite(cube[0][0], HIGH);
set_array(4);
// задержка (10);
clear_cube();
regWrite(cube[1][0], HIGH);
set_array(3);
// задержка (10);
clear_cube();
regWrite(cube[0][0], HIGH);
set_array(2);
// задержка (10); Когда я уменьшаю задержку, мигают 5 светодиодов.
100 50 10 0 задержка Youtube
@johnny003, 👍0
2 ответа
Вы не можете просто включить их вот так.
Вместо этого вам нужно включить одну строку. Потом следующий ряд. Потом следующий. Очень быстро.
Итак, вы сначала отображаете:
O@OO
OOOO
OOOO
Затем вы показываете
OOOO
OO@O
OOOO
Затем вы показываете
OOOO
OOOO
O@OO
И вы проходите через это очень быстро. Обычно для запуска всего этого используется таймер. Тот факт, что вы используете '595, замедляет работу и затрудняет достаточно быстрое обновление, чтобы оно не мерцало.
Вы хотите мультиплексировать их по строкам или столбцам. Если вы делаете это столбцами, то сделайте следующее: Установите все столбцы на разомкнутую цепь. (все выключено.)
Установите выводы значений строки для первого столбца, затем активируйте вывод столбца для первого столбца. Загорятся светодиоды первой колонки.
Теперь задержитесь на короткий период (скажем, 20 мс) и перейдите к следующему столбцу. (Очевидно, что для этого нужно использовать цикл.) Повторите.
Вам следует писать свой код как конечный автомат с использованием millis()
, а не с задержкой, иначе вы загоните себя в угол и напишете код, который полностью блокирует машину только для отображения светодиодная сетка. Если вы используете millis()
и автомат для обработки сигналов, вы сможете делать другие вещи одновременно с циклическим переключением светодиодов
- Питание светодиодной ленты - Сколько ампер?
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
- Как управлять встроенными светодиодами Arduino Nano 33 BLE Sense?
- Есть ли функция Adafruit для инвертирования цветов моего экрана для языка Arduino?
- 74HC595 регистр сдвига не работает
- Почему некоторые контакты Arduino Nano (D3, D4, A3, A4, A6, A7) не могут быть установлены на высокий уровень?
- Более 4 MCP23S17 на 1 шине SPI
- Мигающий светодиод при движении сервопривода
я попробую это, @johnny003
Я пытался, но это не работает. Я обновляю код, как указано выше @Majenko♦, @johnny003
Этот код совершенно бессмыслен., @Majenko
Нет. regWrite включаю плюс и ставлю массив включаю землю. Заливаю видео 100 50 10 и 0 задержка, @johnny003
Похоже, это работает. Но, как я уже сказал, при использовании 595-го будет сложно сделать его не мерцающим. Вам нужно обновить *очень* быстро. В идеале сотни раз в секунду, хотя допустимы и десятки раз в секунду., @Majenko