Могу ли я с помощью аналогового контакта на Arduino Mega прочитать, есть ли высокое (5 В) напряжение на проводе от цифрового контакта другой платы?

Я создаю одноранговую сеть из инициирующих устройств и общего хаба , который контролирует большую часть оборудования. Он отправляет номер через Serial на Serial1 Mega (Serial Mega используется для связи с компьютером), но в качестве резерва он инициирует общий сигнал тревоги, отправив сигнал 5 В (с использованием digitalWrite(pin, HIGH)) на главную плату. Как мне это сделать, чтобы завершить схему и получить чтение?

Спасибо!

, 👍0

Обсуждение

то, что вы спрашиваете, - это назначение цифрового PIN-кода. прочитать состояние цифрового вывода какого-либо другого устройства, @Juraj

5В — это значение «напряжения», а не значения «тока».... пожалуйста, отредактируйте заголовок своего сообщения., @jsotola


1 ответ


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

1

Да, конечно, можно. Однако лучше использовать digitalRead(), чем analogRead().

Вам просто нужно соединить земли двух Arduino вместе и настроить контакт на Arduino, который вы хотите воспринимать вход как INPUT или INPUT_PULLUP. Затем выполните цифровое чтение на выводе. Он вернет LOW, если другой Arduino устанавливает на вывод LOW, и HIGH, если другой Arduino устанавливает его HIGH.

И, как отмечает Юрай в своем комментарии, КМОП-устройства, такие как Arduino, реагируют на напряжение, а не на ток. Их входы емкостные. Они реагируют на потенциал напряжения, а не на ток. (Когда вы изначально меняете вход КМОП из одного состояния в другое, через него протекает небольшой ток, чтобы изменить состояние конденсатора, и после этого единственный ток, который течет, — это очень небольшой ток утечки. через конденсатор на входе.)

,

Спасибо большое, сам бы об этом не подумал. Я бы отправился на край Земли, изобретая какой-то код для передачи сигналов с Луны и обратно, просто чтобы сказать «ЭЙ» другой доске, ммао., @SYGMAH

@duncan-c, вы не должны в ответе на Arduino SE утверждать, что LOW — ложь, а HIGH — правда., @Juraj

@Юрай, почему бы тебе не предложить это? По моему опыту, мы используем переключатели, которые в нормальном состоянии обычно разомкнуты, поэтому их закрытие и включение ВЫСОКОГО напряжения будет означать изменение., @SYGMAH

@WinterfromSYGMAH HIGH/true и LOW/false — это разные константы, и их не следует использовать как взаимозаменяемые. Хуарж прав. Я отредактировал свой пост., @Duncan C

@DuncanC и Юрай, спасибо за разъяснения и помощь, @SYGMAH

формально вы всегда должны писать digitalRead(pin) == LOW или digitalRead(pin) == HIGH, чтобы проверить состояние. нет никакой гарантии, что значение «LOW» равно 0 на всех архитектурах Arduino. где-то может быть какой-то странный пакет MCU :-), @Juraj