Управление bluetooth hw-425 аудиомодулем с помощью arduino nano

)_NEO_(

✩✩✩✩✩✩✩
30 Янв 2022
11
0
Имею данный аудио модуль который подключен к аудио системе с использованием arduino, хотелось бы спросить, возможно ли к пину KEY подключится средствами arduino nano с использованием всего одного пина (так как все остальные заняты на периферию) эмулировать нажатия клавиш? Использовал 3 пин с генерацией шима, но как бы я не старался ничего не получается, по умолчанию на KEY выводе модуля 3.22v которые нужно замыкать на землю, на ардуине выставлял примерно такое же напряжение и пытался дергать это напряжение к земле не полностью (согласно резисторам) с разными задержками но безрезультатно, реакции никакой нет, при этом на резистор по прежнему реагирует согласно картинке. Использовал даже транзистор что бы инвертировать сигнал ардуины и уже без эмуляции замыкать вывод на землю, но мне кажется я делал что попало. Поправьте меня если я где то ошибся в попытках заставить модуль реагировать на нажатия. Хотелось бы сделать управления мультмедией с пульта (что уже реализованно на схеме и в коде) но вот заставить как то модуль реагировать на уже принятую команду не получается.
1644686422698.png1644686730465.png

Добавлю что я не рассматривал вариант с использованием digipot так как нету возможности достать его сейчас, поэтому хотелось бы узнать есть ли другие способы
 

)_NEO_(

✩✩✩✩✩✩✩
30 Янв 2022
11
0
@IamNikolay, Я это понимаю, поэтому и писал что не уверен вправильности своих действий, выставлял примерное через analogWrite(3, 167)
 

poty

★★★★★★✩
19 Фев 2020
2,999
896
Любой выход из этой ситуации - костыльный. Если используете PWM, то нужно делать интегрирование (R+RC), но точность будет невысокой и фронты/срезы будут размытыми. Есть возможность использовать любой однопроводной интерфейс для связи с внешним МК, который уже будет управлять HW-425, но это довольно серьёзный код в обоих процессорах.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
@)_NEO_(,
Все это ерунда, то что вы делаете.

Прижатие клавиши к земле с помощью ардуино делается элементарно.

В setup
pinMode(key0, OUTPUT);
digitalWrite(key0, 0);
pinMode(key0, INPUT);

pinMode(key1, OUTPUT);
digitalWrite(key1, 0);
pinMode(key1, INPUT);
---- // ---
pinMode(keyN, OUTPUT);
digitalWrite(keyN, 0);
pinMode(keyN, INPUT);

C++:
void pressKey(uint8_t key) {     // нажать кнопку, прижать к земле пин
  pinMode(key, OUTPUT);
}

void realiseKey(uint8_t key) {      // отпустить кнопку
  pinMode(key, INPUT);
}
Суть в чем, - вы в setup объявляете вывод выходом и в соответствующий регистр записывается атрибут "пин прижат к земле", состояние этого регистра запоминается контроллером.
Потом, тот же вывод вы конфигурируете как вход. В этом состоянии этот вывод переключается на другие цепи внутри контроллера, и на нем НЕ ФОРМИРУЕТСЯ никакого напряжение, а входное сопротивление равняется нескольким мегаОм.

Потом, вам достаточно просто менять pinMode туда сюда. Все.
 

bort707

★★★★★★✩
21 Сен 2020
2,902
863
@kostyamat, читайте тз, нужно использовать всего один пин.
Так, как вы написали, через 4 пина - это банально, неужели вы думаете никто не догадался.

А ТС я бы посоветовал внимательно изучить другие, занятые пины мк на предмет высвобождения еще трех пинов.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
@bort707, да, про "один пин" я пропустил. Но в данном случае могу сказать, что когда я делал свой проект выше, мне пришла та же идея, что и ТС - эмулировать напряжение. Лучшее, что мне удалось - задействовать операционный усилитель. Но "нажатия" все равно читались очень не четко. Предлагаю ТС просто взять Мегу, и не мучать себя.