Один контакт GPIO для светодиода, кнопки и зуммера через фильтр верхних частот?

Есть ли контакт как вход (для переключателя) и выход (для светодиода) с ATmega32U4? но мне также нужен один из шести таких контактов, чтобы управлять пьезозуммером. Из-за его емкостной природы я решил, что его можно подключить и к GPIO (не влияет на сигналы постоянного тока):

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Идея состояла в том, чтобы подавить шум, который, вероятно, возникнет при переключении GPIO с низкого уровня вывода (для управления светодиодом) на подтяжку входа (для выборки кнопки), используя фильтр верхних частот с «нечетным» значением 1,5. кГц или около того, поэтому выборка с частотой 100 Гц или около того не так сильно влияет на пьезосигнал 4 кГц.

Недостатки (приемлемы оба):

  • нажатие кнопки зажигает светодиод (и сбрасывает заряд C1 на землю; может быть, добавить последовательный резистор?)
  • управление пьезоэлементом с прямоугольной волной 4 кГц зажигает светодиод на 50% (может быть, это может быть более низкий рабочий цикл из-за фильтра?)

Работает ли это и можно ли это улучшить?

как быстро вам нужно, чтобы светодиод включался или выключался?
@MarcusMüller Это просто светодиод состояния для людей: видимая частота мигания будет в диапазоне 1 Гц, поэтому переход не должен занимать больше времени, чем 0,1 с.
См. Мультиплексирование светодиодной и кнопочной матрицы? для другого подхода, чтобы, возможно, обойти слишком мало контактов в той же ситуации.

Ответы (1)

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

                                     +3.3V
                                       |
                                       R
                                       |
                                      LED
     +----High Pass----Piezo---GND     |
GPIO-+----------------Switch---GND   |/
     +----R_large---+----------------| 
                    |                |\
                    C                  v
                    |                  |
                   GND                GND