Использование Excel для связи с Arduino для включения 20 светодиодов

led

Я хочу продемонстрировать прогресс на стене с помощью светодиодов на основе данных, добавленных в таблицу скорости Excel.

Мне нужно около 20 разных светодиодов, а может, и больше. Можно ли это реализовать с помощью Arduino Uno?

, 👍-1

Обсуждение

Вам нужно выяснить, можно ли передавать данные через последовательный COM-порт в Excel с помощью его макроязыка. Я не знаю, и это выходит за рамки данной темы (поскольку мы эксперты по Arduino, а не по Excel). Если Excel на это способен, то почему бы ему не работать?, @chrisl

Только что гуглил: если пишешь код в Excel VBA, то можно использовать последовательный COM-порт. Так что да, это возможно., @chrisl

В дополнение к тому, что Крисл объяснил по поводу Excel, для Arduino вам понадобится скетч, который считывает данные с последовательного порта, получает данные из Excel, декодирует их и соответственно включает светодиоды. Если вы можете написать такой скетч, а затем столкнуться с проблемами, то можете задать более конкретный вопрос по коду Arduino. Однако, если не считать простого вопроса о том, *можно ли* это сделать (на что ответ — «да»), ваш вопрос слишком общий (если вы ещё и хотите знать, *как* это сделать)., @Greenonline

Кроме того, для включения 20 светодиодов может понадобиться мультиплексор или декодер, поскольку на Arduino Uno, вероятно, недостаточно контактов для решения с одним контактом на светодиод. Хотя можно использовать Arduino Mega, у которой *куча* контактов, так что можно подключить более 20 светодиодов (фактически 54) и всё равно использовать решение с одним контактом на светодиод., @Greenonline

@Greenonline У Uno 20 контактов: 0–13 и A0–A5. Более серьёзная проблема может быть в потреблении тока. И **гораздо лучше** было бы просто опубликовать ответ. Вы хотите, чтобы этот сайт был завален вопросами без ответов?, @Nick Gammon

Бот Stack Exchange донимает нас, если мы не отвечаем на вопросы. Поэтому @chrisl и Greenonline, пожалуйста, помогите нам, дав конкретные ответы., @Nick Gammon

@NickGammon — Я понимаю, что вы имеете в виду, но: D0 и D1 будут использоваться последовательным портом, который нужен пользователю; Каждый раз, когда я (или кто-либо другой) публикую ответ, он получает отрицательные голоса от (не очень) таинственного избирателя (мы все знаем, кто это); Вопрос вот-вот будет закрыт; Лимит голосов для закрытого голосования нужно увеличить с 3 до 5; Вопрос был расплывчатым и/или общим, поэтому ответ был бы длинным и бессвязным, поэтому показалось, что лучше дать *небольшие* частичные рекомендации в комментариях, чем вообще ничего не отвечать. Я люблю пытаться помочь, но, к сожалению, на этом сайте, похоже, есть некоторые проблемы., @Greenonline

@NickGammon - Если вы хотите повторно открыть вопрос (я только что проголосовал за повторное открытие), я с радостью оставлю свои комментарии в ответе (и потеряю 2 очка репутации). Я также мог бы добавить кое-что о текущем потреблении, если только вы не захотите опубликовать дополнительный ответ на эту тему (что, честно говоря, было бы лучше)., @Greenonline

@Greenonline Я снова открыл тему и проголосую за ваш ответ, чтобы хоть как-то компенсировать ущерб, сами знаете кому. Согласен, что последовательный порт нужен для загрузки скетчей, но это не мешает вам использовать его для других целей в дальнейшем. Я также согласен насчёт 5 голосов, я думал, мы что-то делаем в этом направлении. Вы могли бы упомянуть микросхему 74HC595 как альтернативный способ решения этой проблемы в своём ответе, если хотите., @Nick Gammon

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

@NickGammon — Хорошо, думаю, я раскрыл основные принципы в своём ответе, не углубляясь в дизайн (слишком обобщенно). Спасибо., @Greenonline

Привет, это мой первый вопрос, который я задал, и оказанная мне помощь была просто великолепна. Это дало мне массу пищи для размышлений и многому меня научило. Спасибо всем за вашу помощь, это действительно ценно. Всегда учусь., @Lee Taiani


1 ответ


1

Это действительно вопрос из двух частей:

  1. "Могу ли я общаться с Arduino с помощью Excel?" и;
  2. «Как зажечь 20 светодиодов с помощью Arduino Uno?»

Рассматривая каждый аспект по очереди...

Сторона Excel

Добавить к комментарию chrisl, который (частично) объяснил сторону Excel:

... если вы пишете код в Excel VBA, вы, безусловно, можете использовать последовательный COM-порт. Так что да, это возможно

Сторона Arduino

Соображения по питанию контактов

На стороне Arduino вам понадобится скетч1, который затем считывает последовательный порт и получает информацию, отправленную из Excel, декодирует эти данные и соответственно включает светодиоды.

Кроме того, чтобы зажечь 20 светодиодов, вам может понадобиться мультиплексор или декодер, поскольку на Arduino Uno, вероятно, недостаточно контактов для решения с одним контактом на светодиод. Их двадцать, но вы будете использовать два из них (D0 и D1) для последовательной связи через последовательный порт/монитор. Хотя, как отмечает Ник в своём комментарии, вы всё равно можете использовать контакты Tx и Rx для светодиодов, но они будут мерцать во время любой последовательной связи.

Что касается использования мультиплексора или декодера (есть много разных вариантов, которыми можно воспользоваться2), как также предложил Ник, вам, возможно, стоит рассмотреть использование сдвигового регистра (например, 74595).

Для получения дополнительной информации обратитесь к документу Преобразование последовательного интерфейса в параллельный с помощью 74HC595, откуда была взята приведенная ниже принципиальная схема:

Использование двух сдвиговых регистров 74595 для питания светодиодов

Текущие соображения

Использование дополнительных цепей также поможет решить другую, пока не рассмотренную проблему — потребление тока. Если вы не используете светодиоды с низким током, Arduino Uno может столкнуться с трудностями в подаче тока, достаточного для питания двадцати светодиодов.

Каждый вывод Arduino Uno может выдавать 20 мА. Однако общий потребляемый ток не должен превышать 200 мА! Учитывая, что один стандартный светодиод (что бы ни значил «стандарт») потребляет от 10 до 30 мА, то, используя низковольтный потенциал, вы можете/можете зажечь 20 светодиодов. Тем не менее, вы приближаетесь к пределу и можете превысить его в некоторых ситуациях. Использование внешней «буферной» схемы предотвратит нагрев и/или перегрев вашего Uno (и/или регулятора).

Альтернативное решение Arduino

Однако вы можете использовать Arduino Mega, у которой множество контактов, поэтому у вас может быть более 20 светодиодов (фактически 54) и при этом по-прежнему использоваться решение с одним контактом на светодиод.


Сноски

1 Если вы можете написать этот скетч, а потом столкнуться с проблемами, то можете задать более конкретный вопрос по коду Arduino. Однако, если не считать простого вопроса о том, возможно ли это сделать (на что ответ — «да»), ваш вопрос слишком общий (если вы ещё и хотите узнать, как это сделать).

2 Другие методы мультиплексирования включают:

  • Charlieplexing позволяет управлять (n2 - n) светодиодами с n контактами, практически без дополнительного оборудования или микросхем. С 18 контактами можно управлять 308 светодиодами, хотя, очевидно, возникнут проблемы с подачей тока, которые необходимо решить.
  • Использование 16-канального светодиодного драйвера TLC 5940 (с возможностью последовательного подключения)

См. также Как эффективно управлять несколькими светодиодами с помощью мультиплексирования?

,

Светодиодные матрицы, I2C-ленты, неопиксели?, @Juraj

Комментарии были [перенесены в чат](https://chat.stackexchange.com/rooms/154122/discussion-on-answer-by-greenonline-using-excel-to-communicate-to-an-arduino-to), @Juraj