У меня есть микроконтроллер с одним доступным цифровым контактом.
Как я могу контролировать 25 светодиодов?
microcontroller
led
multiplexer
archgoon
источник
источник
Ответы:
I2C IO Expander : - Некоторые издержки протокола, но они должны быть расширены до очень большого (тысячи) светодиодов.
Простой сдвиговый регистр - Dead Simple интерфейс, светодиоды могут мигать при обновлении, если часы сдвигового регистра не достаточно быстрые. Использование сдвигового регистра с двойной буферизацией исправит это.
источник
Shift Register и I2C это хорошо, но только если есть хотя бы 2 свободных контакта. Я предлагаю Dallas 1-проводной удлинитель порта DS2408 будет оптимальным решением. Код для доступа к 1-проводному устройству в Далласе не так сложен, и в Интернете есть множество примеров.
Вы можете использовать несколько DS2408, подключенных к одному выводу, или реализовать больше логики после одного DS2408, в зависимости от того, что вам нужно.
источник
Имея только 1 вывод IO, вы можете использовать 1-проводной регистр расширения / сдвига или добавить другое устройство к вашей шине I2C, как уже указывалось. Единственное, что еще не было упомянуто, - это возможность добавить еще одно ведомое устройство к вашему порту SPI.
SPI называется 4-проводным протоколом - у вас есть две линии данных, линия синхронизации и линия выбора (а также общее заземление, но это обычно не считается). Тем не менее, первые три являются общими для всех устройств на шине, поэтому каждое устройство после первого берет только еще одну трассировку / провод. SPI также увеличивает вашу шину до полного дуплекса, но это не имеет значения для этого приложения.
источник
Я просто собрал несколько сдвиговых регистров. (Это уменьшает частоту, с которой вы можете переключать светодиоды, конечно ..)
источник
Если у вас на самом деле есть только один контакт, то однопроводная шина Далласа выглядит наиболее очевидной вещью. Однако, поскольку это только для вывода, существуют более дешевые решения. Последовательная шина PWM, которая передает и данные, и часы, проста в настройке; см., например , страницу Романа Блэка, также упоминаемую Дэвидкари. Вам нужны только сдвиговые регистры с последовательным входом и параллельным выходом, такие как 74VHC164 , которые можно каскадировать для любого количества выходов (один '164 имеет 8 выходов).
В этом решении светодиоды работают статически.
Если у вас есть другие входы / выходы, которыми вы можете поделиться, например, SPI I2C, вы можете пойти на более роскошные решения, такие как Maxim MAX6950 . MAX6950 имеет мерцание и регулировку яркости, а также ограничение скорости нарастания, чтобы назвать несколько функций. Светодиоды мультиплексированы, что означает, что вам нужен только один 16-контактный драйвер.
источник
Ответ, вероятно, «серия сменных регистров», но можете ли вы быть более конкретным в своем вопросе? Какой микроконтроллер? Что вы подразумеваете под «цифровым портом»? Один пин?
источник
25 светодиодов в зависимости от размера могут потреблять много энергии для одного цифрового вывода ввода-вывода на микроконтроллере. Вместо того, чтобы управлять ими напрямую, вам, вероятно, следует использовать простой переключатель FET (чтобы ввод-вывод был привязан к шлюзу) для управления питанием цепи светодиодов.
В зависимости от вашего приложения, есть и другие, более надежные способы сделать это. Но если вы добавите фета, вы, вероятно, будете работать быстрее всех.
Например, если вы хотите управлять переменным сигналом, есть более сложные устройства, иногда называемые цифровыми реле, которые дают вам возможность его цифрового переключения.
Что касается индивидуального управления 25 светодиодами с одним портом ввода-вывода. Как и предполагали другие, вы можете использовать несколько сменных регистров. Существуют более сложные решения, включающие связь с другой микросхемой с использованием последовательного протокола (например, I2C).
источник
Роман Блэк описывает систему shift1, которая позволяет независимо управлять любым количеством светодиодов с одного вывода микроконтроллера.
@Fake Name, @Tim, @pingswept все предлагают объединить несколько сдвиговых регистров, вывод вывода данных DO на один, а на следующий ввод ввода данных DI. 74HC595 будет работать нормально. (Возможно, какой-то другой чип будет работать чуть лучше ).
(@reemrevnivek, с этим видом SPI с последовательным подключением, каждое устройство после первого не требует больше контактов на микроконтроллере, в отличие от того, что многие утверждают - почему вы их слушаете? :-).
Обычно для этого требуется 4 контакта на микроконтроллере - MISO, MOSI, SCLK и защелка. Поскольку вы только делаете вывод, вам не нужен входной контакт MISO.
Роман Блэк выяснил, что при некоторой очень тщательной синхронизации на одном выходе микроконтроллера и при некоторой осторожной настройке аналоговой цепи один вывод микроконтроллера может управлять простой на вид аналоговой схемой, которая отделяет общий SCLK, DI контакт первой микросхемы в цепи (MOSI) и общий сигнал защелки.
Затем этот микроконтроллер может управлять 25 светодиодами с одного контакта.
источник
Вы можете подключить другой микроконтроллер через этот единственный контакт и общаться с ним через 1wire (или ваш собственный протокол, если вам нужна высокая скорость). Тогда этот другой микроконтроллер имеет дело со светодиодами.
источник