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