прошивка ардуино
Привет, мне интересно, есть ли какой-нибудь способ решить следующую проблему.
Я разрабатываю собственную плату arduino на основе чипа mega32u4 и хочу, чтобы на плате arduino загорался светодиодный индикатор в зависимости от того, используется ли аналоговый вывод. Например, если пользователь загружает код, который использует определенный вывод, например, считывает напряжение с A0, arduino зажжет светодиод рядом с этим выводом.
Я подумал, что, возможно, я мог бы привязать аналоговый вывод к цифровому выводу в прошивке и сделать так, чтобы цифровой вывод становился ВЫСОКИМ каждый раз, когда используется аналоговый вывод (возможно ли это/может ли кто-нибудь указать мне хорошие примеры в сети)?
Пользователю необходимо знать, выводит ли на самом деле сигнал тот пин, который, по его мнению, пишет, и/или считывает ли сигнал тот пин, который, по его мнению, считывает. Это связано с тем, что они будут подключать выходы и входы к плате Arduino с помощью проводящих чернил, и если их схема не работает, индикаторные лампы дадут им знать, что их программное обеспечение работает, но, вероятно, в схеме, которую они нарисовали, есть разрыв.
@Chris, 👍1
Обсуждение2 ответа
Лучший ответ:
Когда вы загружаете код, который является прошивкой. Нет другой части прошивки (например, операционной системы), которая всегда там есть (за исключением загрузчика, который используется только для загрузки нового кода).
Возможно, вы могли бы подключить светодиод через операционный усилитель в качестве усилителя к аналоговому выводу, так что если появляется напряжение, то светодиод загорается. Однако он может быть «использован» и показывать ноль вольт, так что это не будет иметь большого значения.
Будет ли неразумно пытаться решить проблему так, как предложил Микаэль в комментариях?
Вы можете создать собственную функцию analogRead и рекомендовать ее пользователям (или сделать это с помощью #define), однако это будет работать только в том случае, если люди будут использовать вашу новую функцию или заголовочный файл.
Это также имело бы побочный эффект в виде того, что другие контакты станут недоступными (например, контакты, на которых вы включаете светодиод), что может сбить с толку пользователей, пытающихся использовать все доступные контакты.
Я предполагаю, что это какой-то обучающий гаджет? Может быть, лучше научить людей делать светодиодный индикатор самостоятельно, чем пытаться автоматизировать это для них.
Спасибо за разъяснения, Ник. Будет ли неразумно пытаться решить проблему так, как предложил Микаэль в комментариях?, @Chris
См. измененный ответ., @Nick Gammon
Создайте библиотеку. Пользователь включит ее, и файл h создаст один экземпляр объекта обработчика для ваших пар выводов. Обработчик зарегистрирует прерывание таймера, а прерывание проверит исходный вывод и установит целевой вывод.
- Считывание 10-контактного 7-сегментного (2 цифры) сингла Arduino 1
- Чтение аналогового значения при генерации сигнала ШИМ
- Красный светодиод не выключается на игровой площадке Adafruit Circuit Classic
- Почему светодиоды влияют на аналоговый вход?
- Как крутить светодиоды по показаниям напряжения?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Питание светодиодной ленты - Сколько ампер?
- Несколько условий оператора if
Похоже, вы хотели бы, чтобы светодиод на каждом выводе указывал использование, режим и т. д.? Вы можете сделать это с помощью сдвигового регистра или расширителя порта GPIO, а затем изменить ядро Arduino pinMode() и analogRead() так, чтобы статус отображался на соответствующем светодиоде. Если я правильно помню, у mega32u4 есть несколько дополнительных выводов, которые не используются ядром Arduino. Их можно использовать для управления светодиодом., @Mikael Patel
Сначала вам придется определить "используется". Вы имеете в виду активное использование
analogRead()
или просто то, что что-то подключено к пину?, @MajenkoНа считывание аналогового входа уходит около 100 микросекунд (0,0001 с). Поэтому я сомневаюсь, что вы можете увидеть, как светодиоды мигают так быстро., @Gerben
Микаэль, это звучит как возможное решение, но можно ли реализовать его за кулисами, так, чтобы пользователь не видел код? Я полагаю, что мне пришлось бы реализовать свое собственное модифицированное ядро, чтобы пользователь выбирал мою плату в меню инструменты>плата. Кажется, что это может быть плохой практикой — заставлять эти функции писать на другие пины (кто-нибудь хочет высказаться?), но это решение., @Chris
Majenko, я представлял, что пользователь будет иметь пин, упомянутый в своем коде где-то независимо от того, подключено ли что-либо или нет. Можно ли сделать так, чтобы индикатор загорался, если что-то подключено (даже если это устройство ввода)?, @Chris
возможно разработать аппаратное решение для включения светодиода при подключении чего-либо к контакту, @jsotola
Есть идеи, @Jsotola?, @Chris
с использованием специализированных разъемов, таких как 2,5-миллиметровые фоноразъемы ... один контакт будет использоваться для сигнала ... другой контакт будет для обнаружения вставки .........
контакт, упомянутый где-то в их коде
... это будет проблемой, поскольку наличие кода в программе и фактическое выполнение кода - это не одно и то же ....... вам придется использовать внешнюю программу для сканирования кода и поиска любых ссылок на любой из аналоговых контактов, @jsotolaя думаю, что вы недооцениваете уровень невнимания людей к деталям..... у вас могут быть все мигающие лампочки в мире, и они все равно подключат не тот контакт..... также есть это.... "Зачем вы подключили провод к контакту 5?" .... "Я не знаю почему, но лампочка сказала мне подключить его"., @jsotola
@Крис, ты видел мой ответ?, @Juraj