我在 Arduino One 中使用attachInterrupt()
功能来识别执行器的极限。通常我将其测试为if()
,但执行器周期非常快,因此识别变得复杂。因此我选择使用attachInterrupt()
,但我不知道在中断的情况下,我必须在输入端使用下拉电阻。有人可以告诉我这是否需要?
目前系统如下所示:
一段代码:
attachInterrupt(digitalPinToInterrupt(interruptPin2), EndCourse2, FALLING);
attachInterrupt(digitalPinToInterrupt(interruptPin3), EndCourse3, FALLING);
void EndCourse2() {
digitalWrite(12,LOW);
btnpressed2=0;
}
void EndCourse3() {
if(btnpressed2==0) {
digitalWrite(12,HIGH);
CounterAT2++;
}
btnpressed2=1;
}
答案 0 :(得分:2)
在这种情况下你需要一个下拉电阻。
Arduino的数字输入具有高阻抗,可以是绝缘输入。如果省略电阻并考虑开关打开时的情况,则Arduino的输入为浮动。这意味着数字输入未连接到任何电位。电磁干扰会在电路中产生电流。基本上,由于这种干扰,输入端的电压可以从低变为高。
要定义输入状态,当开关打开时,应添加电阻,确保输入电压低,不受电磁干扰。
如果镜像电路,使开关接地并且电阻连接到Vcc
,则可以通过将输入模式设置为INPUT_PULLUP
将上拉电阻移动到Arduoin中。 。从那时起,使用内部电阻,可以将电阻器放在外面。