Может ли вывод быть нейтральным, а не высоким или низким?
Я пытаюсь найти способ управления мини-mp3-плеером DFplayer с помощью ADkeys.
Поскольку у меня есть только два или три файла для воспроизведения с фиксированной громкостью, мне проще использовать ADkeys. https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299#target_4
Допустим, я хочу использовать сегмент 1 — сегмент 3 (файл MP3 1 — файл MP3 3). Затем я подключал резистор (или не подключал его в сегменте 1) между ними и к трем контактам на Arduino.
Но как сделать пин нейтральным, чтобы он не срабатывал все сразу?
Насколько я могу прочитать, контакты заземлены в Arduino, если не «высоко».
@Andreas, 👍0
Обсуждение2 ответа
Лучший ответ:
В данном случае вы говорите об «открытом сливе». Обычно, как вы правильно заметили, с выходами у вас есть либо ВЫСОКИЙ, либо НИЗКИЙ, что эффективно соединяет выходной контакт с +5 В или GND соответственно.
Вместо этого вы запрашиваете Open Drain. В этом случае контакт либо «активен», и в этом случае он соединяет его с GND, либо «неактивен», и в этом случае он отключен (почти) от чего бы то ни было.
Большинство 8-разрядных плат Arduino не имеют возможности Open Drain на своих выводах ввода-вывода (хотя некоторые более продвинутые 32-разрядные платы имеют), но ее достаточно легко эмулировать в программном обеспечении.
Вы можете эмулировать его, используя логику "Tri-State". Это логика, в которой, наряду с ВЫСОКИМ и НИЗКИМ, у вас есть «Высокий импеданс» или «HI-Z». HI-Z почти такой же, как «неактивный» Open Drain. На Arduino HI-Z — это то же самое, что и INPUT.
Итак, вы можете подражать ему:
- Чтобы активировать пин, установите его в положение OUTPUT и LOW
- Чтобы деактивировать пин, установите для него значение INPUT.
Например, чтобы "нажать" одну из ваших кнопок на 100 мс, вы можете:
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
delay(100);
pinMode(4, INPUT);
Я понимаю! Таким образом, установка вывода на ввод означает, что он ожидает ввода, поэтому это не так. Это умно!, @Andreas
@Andreas На самом деле технически контакт *всегда* «ждет» ввода. Установка его в режим INPUT просто отключает схему драйвера вывода и позволяет ему «видеть» внешний мир., @Majenko
Ваш рисунок, похоже, пытается обеспечить аналоговые уровни для мини-плеера DF.
В этом случае вы можете использовать два выхода ШИМ от Arduino с RC-фильтром нижних частот, чтобы сгладить ШИМ до уровня постоянного тока. (вывод Arduino к резистору 10K, конденсатор 4,7 мкФ к заземлению, после этого соединение конденсатора и резистора идет к миниплееру DF).
Затем
analogWrite(pin, 128); // с выводом 3,5,6,9,10,11 на Uno, например
для вывода 2,5 В на DF Miniplayer. Точно так же 64 будет около 1,25 В, а 192 — около 3,75 В. Другие уровни легко получить.
Спасибо за ваш ответ, но я думаю, что вы что-то упустили. Цепь подключена к земле, а не к положительному концу. Или я вас неправильно понял?, @Andreas
В DF Miniplayer есть внутренний подтягивающий резистор, да? Таким образом, подключение резисторов разного номинала от вывода к Gnd через переключатель создает делитель напряжения и приводит к разным напряжениям на выводе. Чем это отличается от непосредственного управления контактом напряжением? Установите несколько резисторов, измерьте напряжение при нажатии. См. 3.5 Руководства, чтобы узнать, что делают кнопки https://github.com/Arduinolibrary/DFPlayer_Mini_mp3/raw/master/DFPlayer%20Mini%20Manual.pdf, @CrossRoads
Честно говоря, я не знаю. Я понятия не имею, что такое внутренности и чем они отличаются. У меня нет знаний. Я вижу преимущество вашего ответа, если он работает, но поскольку мне нужно только два или три, я могу просто использовать отдельные контакты., @Andreas
- NodeMCU - Vin контакт как выход 5V?
- Использовать все контакты как цифровые входы/выходы
- Что такое ICSP pin (разъём)?
- Сколько датчиков может поддерживать один модуль Arduino?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Какой тип разъема использует система GROVE?
- Неиспользуемые контакты в Arduino L293D motor shield?
- Как выбрать вывод передачи в библиотеке IRremote для Arduino Uno?
Вы имеете в виду "высокий импеданс"?, @Edgar Bonet
@EdgarBonet Я думал, что максимум 5 вольт, а минимум заземлен. Извините за путаницу., @Andreas