Я экспериментировал с 8x8 светодиодной матрицей, управляемой Arduino Uno. Как я думаю, типично, матрица использует общий анод для каждой строки и общий катод для каждого столбца.
На данный момент у меня есть все выводы матрицы, подключенные непосредственно к выводам ввода-вывода на Uno, и у меня не было никаких проблем с одновременным включением светодиодов. Прохождение всей матрицы таким образом делает обновления немного медленными, а это означает, что светодиоды не такие яркие, как хотелось бы.
Насколько я знаю, я не могу безопасно зажечь весь ряд сразу, потому что отдельный вывод на Uno не способен подавать достаточный ток для одновременного управления 8 отдельными светодиодами (требуется по крайней мере 10 мА для каждого быть достаточно ярким).
Мне пришло в голову, что обратное может быть безопаснее. Если я зажигаю целый столбец за раз, то каждый вывод должен иметь достаточный ток только для одного светодиода, что не должно быть проблемой. Тем не менее, он опирается на один вывод, потенциально пропускающий ток из всех 8, в сумме не менее 80 мА.
Это возможно, или я собираюсь жарить свою доску?
источник
Ответы:
Довольно вероятный результат. Вот почему:
Arduino Uno использует микроконтроллер atMEGA328, который имеет абсолютный максимальный рейтинг источника или приемника 40 мА на GPIO. Кроме того, суммарный ток через питающие или заземляющие рельсы (т. Е. Сумма всех токов OP требует, чтобы выводы GPIO поглотили или источник) была максимально
150200 мА.Реально, текущие графики в таблице данных atMEGA328 даже не доходят до 40 мА, поэтому безопаснее всего ограничить ток до 20 мА на GPIO.
Другими словами, независимо от того, используется ли GPIO в качестве источника или приемника, пределы остаются довольно низкими, и на практике их следует поддерживать намного ниже абсолютных максимальных значений. Даже ниже абсолютного максимума использование микроконтроллера при слишком высокой температуре сокращает срок его службы.
Решение :
Используйте либо BJT, MOSFET, либо какую-либо микросхему драйвера, такую как ULN2003, чтобы фактически пропустить ток через светодиоды.
источник
Я собираюсь украсть мой ответ с того момента, когда я ответил на этот вопрос при последней попытке arduino SE.
Это немного сложно. По сути, существует ряд ограничивающих факторов:
Линии ввода-вывода от микроконтроллера (то есть аналоговых и цифровых выводов) имеют как совокупный (например, общий) предел тока, так и предел на вывод:
Из таблицы данных ATmega328P .
Однако, в зависимости от того, как вы определяете «булавки» Arduino, это не вся история.
5-контактный вывод Arduino не подключен через микроконтроллер . Таким образом, он может значительно увеличить мощность. Когда вы питаете Arduino от USB, интерфейс USB ограничивает общее энергопотребление до 500 мА. Это используется для устройств на плате Arduino, поэтому доступная мощность будет несколько меньше.
При использовании внешнего источника питания, через разъем питания ствола, вы ограничены местным регулятором 5V, который оценен в течение максимум 1 ампер . Тем не менее, это также термически ограничено , а это означает, что при потреблении мощности регулятор нагревается. Когда он перегревается, он временно отключается.
Регулируемый выход 3,3 В способен выдавать максимум 150 мА, что является пределом регулятора 3,3 В.
В итоге
Примечание: это не относится к Arduino Due, и, вероятно, есть некоторые различия для Arduino Mega. Скорее всего, это верно для любого Arduino на базе микроконтроллера ATmega328.
источник