Как я могу использовать один микроконтроллер для увеличения/уменьшения 4 наборов светодиодов с помощью 8 кнопочных входов?

Я хочу разработать очень маленький проект для портативного счетчика очков. Он состоит из использования одного микроконтроллера для управления 4 наборами/группами светодиодов на небольшой печатной плате. Это очень небольшой проект (3,5 х 1,5 дюйма). 2 из 4 наборов будут состоять из 4 светодиодов каждый, а остальные 2 будут состоять из 7 светодиодов каждый. Всего 22 светодиода, но мне нужно будет только 4 светодиода, чтобы они горели одновременно. Я хотел бы использовать кнопки для увеличения и уменьшения счета, который загорится светодиодом. Светодиоды будут помечены баллами. Меньший набор будет игровым счетом, а больший набор будет сетовым счетом.

Мне было интересно, возможно ли это и как мне это сделать? Есть ли достаточно маленький микроконтроллер, чтобы иметь 8 кнопочных входов для управления 4 отдельными наборами/группами из нескольких светодиодов?

На данный момент я планирую использовать обычные батарейки типа «таблетка» на 3 В, но рассмотрю небольшие перезаряжаемые блоки питания. Я сделал очень простой прототип DIP-переключателя, используя очень крошечные светодиоды для поверхностного монтажа на тонкой печатной плате с батарейкой типа «таблетка». DIP-переключатель был громоздким и занимал много места. Я хотел бы уменьшить его и сделать более гладким с меньшим количеством переключателей, реализовав эти идеи, если они возможны.

Любые слова совета и помощи будут оценены. Большое спасибо: Д

Ответы (2)

Оли дал хороший ответ, но подождите, мой будет лучше! :-)

Оли прокомментировал ограниченный ток от монетной ячейки, и это действительно то, за чем нужно следить. Эта ячейка CR2430 выдает максимальный непрерывный ток 5 мА. Посмотрим, сможем ли мы с этим справиться.

Хорошо, что вам нужен только один светодиод за раз, иначе я бы даже рассмотрел батарейку-таблетку. Это похоже на хороший светодиод: обычно 15 мкд при 2 мА.

Оли выбрал сдвиговый регистр SIPO (последовательный вход, параллельный выход) для светодиодов и PISO (параллельный вход, последовательный выход) для кнопок. Это экономит много операций ввода-вывода, но требует дополнительных компонентов. Разве мы не можем напрямую использовать ввод-вывод микроконтроллера? 22 светодиода и 8 кнопок — это 30 входов/выходов, это не проблема, но мы можем сделать это немного дешевле, если мультиплексируем светодиоды в матрицу 4 x 5. Обычно это уменьшает яркость светодиодов на 75 %, но, поскольку нам нужно зажечь только один светодиод за раз, мы можем статически выбрать одну строку и один столбец. Итак, нам нужно 4 + 5 + 8 = 17 операций ввода-вывода.

Обычными подозреваемыми для микроконтроллера являются Atmel AVR и Microchop PIC. Обычно я бы избегал PIC для управления светодиодами, потому что он не может подавать или потреблять 20 мА, но у нас низкий ток светодиода, поэтому проблем нет. PIC также дешевле, чем AVR. PIC16F57 имеет 20 входов /выходов, так что этого достаточно. В техническом описании указано, что максимум 22,5 мкА для тактовой частоты 32,768 кГц при 2 В, поэтому при 3 В это все равно будет ниже 50 мкА.

Вот и все. Микроконтроллер, дешевый кварц, 22 светодиода, 8 кнопок и 12 резисторов (4 для светодиодов и 8 для кнопок. У PIC16F57, похоже, нет внутренних подтяжек). Не нужны сдвиговые регистры.

Хе-хе, хороший ответ - я пошел по пути SR, чтобы попытаться сделать его простым, хотя, возможно, я ошибся, не уверен. Я подумал, что беспокойство об экономии энергии и мультиплексировании с использованием контактов может сделать прошивку более сложной для полного новичка, хотя, вероятно, с такой же вероятностью его смутят регистры сдвига :-) Я склоняюсь к 1 контакту на кнопку / светодиод. теперь (как упоминалось в моем втором комментарии), который по-прежнему будет легким с точки зрения пространства, но максимально простым с подключениями/прошивкой.
@Oli - я думаю, что сложность SR и мультиплексирования для новичка примерно одинакова.
да, я думаю, что вы, вероятно, правы. В любом случае, все хорошее обучение для ОП ...

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

Для 4 светодиодов плюс микро-таблетка на самом деле не годится, у них очень высокий внутренний импеданс, как правило, они могут подавать только несколько мА, прежде чем напряжение упадет ниже «полезного» уровня. Несколько AAA/AA/Li-Ion были бы более эффективны.
Если вы запустите светодиоды с очень низким током, а микро, например, с частотой 32 кГц, тогда его можно заставить работать, но если нет острой необходимости использовать батарейки-таблетки, я бы их избегал.

Что-то вроде 20-контактного PIC16F1828 , нескольких кнопок и нескольких регистров сдвига было бы дешевым и простым способом сделать это. Очевидно, что если вы предпочитаете другую марку микро, то есть много эквивалентов.

РЕДАКТИРОВАТЬ - некоторые детали:

Сдвиговые регистры

Сдвиговый регистр в основном превращает последовательные данные в параллельные данные или наоборот. Вам понадобится последовательно-параллельный сдвиговый регистр, такой как 74HC595. У вас есть 3 основных входа управления, вход часов, вход данных и вход защелки. 595 имеет 8 триггеров в цепочке (триггеры хранят 1 или 0), как показано на рисунке (показано 4):

ФФ

Когда часы переключаются, любое значение на контакте Data In (1 или 0) смещается в IC, а последнее значение смещается (либо забывается, либо отправляется на другой 595, если цепочка вместе). Таким образом, вы «сдвигаете» данные в один бит за раз, пока вы не установите все 8 триггеров на желаемое значение.
Затем, чтобы вывести эти данные, вы устанавливаете защелку, и данные появляются на 8 выходных контактах. Таким образом, 3 контакта можно использовать для управления 8 контактами (или 16, 24, 32 и т. д.)
. Вот изображение 2 595, соединенных вместе и управляемых Arduino:

Пример HC595

Существует множество учебных пособий, в которых содержится гораздо больше деталей, чем указано выше, погуглите «учебник по сдвиговым регистрам», и вы получите такие вещи, как:

Учебное пособие по сдвиговому регистру PIC Учебное пособие
по Arduino 74HC595
Еще одно учебное пособие по 74HC595

Кнопки

Вы можете использовать мультиплексор, как я упоминал выше (посмотрите на такие устройства, как 74HC4051 , 4052 и 4053), но, поскольку мы говорим о регистрах сдвига, стоит упомянуть, что мы можем использовать сдвиговый регистр с параллельным входом и последовательным выходом для считывания кнопок. Те же соединения, только наоборот — мы фиксируем состояния кнопок в триггерах, затем синхронизируем данные по битам на вывод вашего микроконтроллера (т.е. считываем на каждом такте и сохраняем, чтобы в итоге вы получили 8 двоичных значений).
Вот пример:

Кнопки Shift

Последние мысли

Судя по комментариям и имея некоторое время на размышления, я склоняюсь к тому, чтобы просто использовать микро с достаточным количеством контактов, чтобы иметь по 1 на светодиод и кнопку. Это займет меньше места, чем регистры сдвига, и потребует самой простой прошивки. Я бы пошел на это, по крайней мере, для начала во время прототипирования.

Стивен дал очень хороший ответ, и мультиплексирование с использованием выводов ввода-вывода является распространенным способом ведения дел (см. Чарлиплексирование для очень экономичного метода мультиплексирования), и, безусловно, его стоит изучить.
Как уже упоминалось, привод монетной ячейки, безусловно, возможен. Для приблизительного представления у меня есть прототип проекта, использующий один из упомянутых выше PIC16F1828, управляющий 7-сегментным дисплеем, 2 кнопками (у 16F1828 есть внутренние подтяжки, поэтому резисторы не нужны) и 2 светодиода, которые работают от монетоприемника и спит между операциями - ячейки хватает до года при нормальном использовании. Так что это, безусловно, возможно, просто добавляет сложности, которые вы, возможно, захотите сохранить на потом.

Итак, в целом, есть много способов сделать это - если у вас есть макет, почему бы не взять компоненты для опций, которые вы хотите попробовать (используйте версии с погружением, затем, если возможно, переключитесь на SMD для окончательной версии) и поэкспериментируйте на досуге.

Вау, круто! это звучит сложно :( Компьютерный трек никогда не был моей сильной стороной в электротехнике. Если бы вы могли, не могли бы вы уточнить, чтобы такой новичок, как я, мог понять, с чего начать и что делать в этом небольшом проекте. Я рад, что это возможно, ха-ха. Я совершенно не уверен, как сделать мультиплексирование или использовать регистр сдвига, а также какие части получить. Большое спасибо за вашу помощь: D
Я добавил дополнительную информацию, надеюсь, это немного поможет - просто дайте мне знать, если вам нужно что-то уточнить.
огромное спасибо. Я только что прочитал о том, как мультиплексировать. Я буду больше читать сегодня вечером, но мне любопытно, поместится ли это все еще на печатной плате 3,5 дюйма X 1,5 дюйма со всеми частями (светодиодами, кнопкой, переключателями, микро, блоком питания и проводкой / пайкой). Я запутался. о том, следует ли мне использовать как мультиплексирование, так и регистры сдвига. Мне нужно прочитать о том, как работают сменные регистры, ха-ха. Я помню, как делал лабораторные работы, я хотел бы уделять им больше внимания. до сих пор я имел в виду сделать 5 на 5, используя 10 контактов. но потом я читал, что его нужно было подключить к транзисторам и резисторам. Меня беспокоит место на печатной плате.
Вы можете просто использовать регистры сдвига для обеих кнопок/светодиодов, или вы можете использовать мультиплексор, если хотите - есть много разных ИС и способов сделать это, вышеописанный только один из способов. В зависимости от вашего микро, у вас может быть достаточно контактов, чтобы просто подключить кнопки напрямую (или даже светодиоды, если вы выберете, например, 48 или 64-контактный микро - может быть выходом, если вы хотите, чтобы это было просто и легко) Если вы используете материал SMD, вы должны вписать его в 3,5 дюйма x 1,5 дюйма.
спасибо за то, что вы были так полезны и терпеливы со мной !!! я действительно ценю это! я понимаю, что есть куча способов сделать это, и я бы не стал выбирать лучший или эффективный метод. В крайнем случае я, вероятно, попробую использовать 48- или 64-контактный микро, ха-ха. Но допустим, я хотел сделать мультиплексирование 5 на 5. Что конкретно мне нужно получить и понять, чтобы использовать этот метод? До сих пор я думал, что могу использовать одну кнопку для увеличения и уменьшения, нажимая или удерживая ее. Кнопок теперь меньше :) В таком случае, какие необходимые вещи мне нужно сделать и понять? еще раз большое спасибо
хм, извините меня, если я начинаю путать себя. Я думаю, мне нужно 6 контактов, чтобы иметь возможность управлять 30 светодиодами, верно? голова начинает болеть и кружиться :(
Вы можете использовать только 3 вывода, если соедините несколько сдвиговых регистров вместе. По сути, вы можете управлять любым количеством светодиодов с 3-контактным разъемом, если вы соедините множество регистров сдвига вместе - недостатком является то, что вы не сможете обновлять их так быстро, как если бы вы сдвигали каждый бит по одному за раз (так что в целом время равно периоду часов * количество битов в цепочке) Не беспокойтесь о том, что сначала это сбивает с толку, просто прочитайте примеры, на которые я ссылался несколько раз, и дайте им немного погрузиться. Взять несколько моделей 595 и поэкспериментировать с ними на макетной плате было бы лучшим способом научиться.
Обратите внимание, что 74HC595 может подавать только 70 мА (абсолютный максимум), поэтому вам понадобятся высокоэффективные светодиоды, потребляющие менее 10 мА.