如何读取Arduino上的输出引脚实际值?

如何读取Arduino上的输出引脚实际值?,arduino,arduino-uno,Arduino,Arduino Uno,我们已经设置了一个Arduino uno控制一个中继板。继电器在设置为低时被激发,在接收到高信号时不执行任何操作。这种继电器用于打开/关闭门,我们面临一个大问题,因为门是“自己打开”的,可能每天打开一次,也可能在2天或3天内打开一次(随机方式) 我们已经看到,我们的系统没有发送(AT)命令来开门,我们怀疑Arduino高输出电压可能会下降几毫秒,然后继电器板检测到这是一个信号,继电器被激发 所以,现在的软件问题 如何读取实际引脚输出,并检查在这些输出引脚设置为高电平时是否有电压变低的时刻?为此,

我们已经设置了一个Arduino uno控制一个中继板。继电器在设置为低时被激发,在接收到高信号时不执行任何操作。这种继电器用于打开/关闭门,我们面临一个大问题,因为门是“自己打开”的,可能每天打开一次,也可能在2天或3天内打开一次(随机方式)

我们已经看到,我们的系统没有发送(AT)命令来开门,我们怀疑Arduino高输出电压可能会下降几毫秒,然后继电器板检测到这是一个信号,继电器被激发

所以,现在的软件问题

如何读取实际引脚输出,并检查在这些输出引脚设置为高电平时是否有电压变低的时刻?为此,我阅读了其他相关内容,并完成了以下操作:

const int PIN_GARAGE = 3;

void setup() {
  Serial.begin(9600);
  pinMode(PIN_GARAGE, OUTPUT);
  digitalWrite(PIN_GARAGE, HIGH);
}

void loop() {
  // Ommited code that processes commands sent to the Arduino
  if (!digitalRead(PIN_GARAGE)) {
    Serial.print(millis());
    Serial.print(" LOW VOLTAGE ON PIN ");
    Serial.println(PIN_GARAGE);
  }
}
我不确定在
输出上执行
digitalRead()
时,设置为高的
引脚是否总是返回
1
,而不是当前实际值,这正是我所需要的。

来自您链接的问题

你为什么要这么做?如果您这样做是为了验证管脚是否真的很高,这不会向您确认,因为可能外部电路的高管脚上存在短路,最好的方法是通过另一个管脚创建反馈;将另一个管脚配置为输入,将输出管脚连接到新的输入管脚,并读取其值。读取内部寄存器将始终为您返回控制器试图输入管脚的内容,而不是实际管脚值

如果有备用管脚,请将其设置为输入管脚,并将一根导线从输出导线拼接到输入导线中,然后读取输入值


如果可能的话,我也会考虑改变你的电路,所以ARDUINO拉高信号来激活你的信号,因为它可能会更可靠。

< P>你检查过你的ARDUINO没有因为任何其他原因而重新启动,这是你看到的奇怪行为吗?
您可以通过串口打印millis(),查看Arduino运行了多长时间。

谢谢您的回答!在所有答案中,我跳过了那一个。。。(我想知道为什么它只有+2…)注:我在输入引脚上加了一个1K的电阻来限制电流。让我们看看会发生什么!