Использование вывода светодиода для ввода

led pins input pull-up

У меня есть устройство, похожее на Arduino, с несколькими контактами GPIO (клон DigiSpark). Он основан на 8-контактной микросхеме AtTiny85, поэтому есть питание, земля и шесть других контактов, два из этих шести используются для имитации USB-клавиатуры, что оставляет 4 GPIO, к которым я хочу подключить 4 кнопки с минимальной схемой. Обычный способ сделать это - включить внутренние подтяжки и заставить кнопки соединить контакт с землей. Это хорошо работает для большинства пинов.

Проблема аналогична контакту 13 (в данном случае контакту 1), который подключен через резистор и светодиод к земле. Внутренняя подтяжка слишком слаба, чтобы достаточно поднять напряжение. Следовательно, этот контакт всегда находится в состоянии «кнопка нажата».

Одно из решений — перерезать дорожки, соединяющие светодиод, но плата такая маленькая и тесная, что я сомневаюсь, что у меня хватит зрения и твердости рук, чтобы это сделать.

Плата DigiSpark
Проблемный резистор + светодиод в правом нижнем углу микросхемы AtTiny85

Мне приходит в голову, что я тоже мог

  1. Добавить к этому входу внешний подтягивающий элемент,
  2. Измените проводку кнопки, чтобы при нажатии она подключала контакт к 5 В. Измените код, чтобы он искал высокий, а не низкий уровень.

Есть ли проблемы с любым из этих подходов?

, 👍0

Обсуждение

Вы забыли пин-код сброса. Таким образом, у вас осталось только 3 контакта (8 контактов минус Vcc, земля, сброс и 2 контакта для USB = 3), @chrisl

@chrisl - я планирую отключить предохранитель сброса с помощью avrdude. У меня нет высоковольтного программатора, но мне не нужно использовать ICSP или менять загрузчик, так что все должно быть в порядке. Я рассматривал возможность добавления проблем с выводом 5 в качестве отдельного вопроса, если у меня возникнут проблемы., @RedGrittyBrick

PS [Исправление P5 на клонах DigiSpark](http://thetoivonen.blogspot.com/2015/12/fixing-pin-p5-or-6-on-digispark-clones.html), @RedGrittyBrick

Как вы планируете программировать digispark, если вы не можете сбросить чип? Загрузчик, который выполняет программирование по серийному номеру, активируется только при сбросе чипа., @chrisl

@chrisl - отключив USB-порт, нажав кнопку загрузки IDE, а затем дождавшись подсказки IDE («Подключите устройство сейчас... (тайм-аут истекает через 60 секунд)»*), затем снова подключите DigiSpark. Это обычный метод перепрограммирования DigisSpark. Насколько я знаю, это позволяет вам перепрограммировать Digispark, не переводя RESET в низкий уровень. Предположительно загрузчик "micronucleus" становится активным после первоначального включения питания, ожидает активности USB от IDE (uploader/avrdude) в течение n секунд и только после этого переходит к существующему пользовательскому коду ("sketch")., @RedGrittyBrick

Для меня это вариант 2. Никаких проблем я бы не ожидал., @the busybee

Я бы убрал светодиод. Занимает всего минуту с паяльником., @Majenko


1 ответ


Лучший ответ:

0

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

,