我很确定这里有一个愚蠢的错误,但恐怕我这辈子都无法解决!
得到错误的简单测试程序:
#include <Servo.h>
Servo myservo;
int testPIN = 13;
int inputPIN = 5;
void setup()
{
myservo.attach(8);
pinMode(testPIN, OUTPUT);
pinMode(inputPIN, INPUT);
}
void loop()
{
if (digitalRead(inputPIN) == HIGH)
{
digitalWrite(testPIN, HIGH);
myservo.write(90);
}
else
{
digitalWrite(testPIN, LOW);
myservo.write(0);
}
}
arduino 扫描示例(http://arduino.cc/en/Tutorial/Sweep)有效,所以我对电子设备的工作很有信心。
testPIN 也按预期打开和关闭,因此 if 语句按预期工作。
欢迎任何想法/建议!
编辑 - 对不起,错误是伺服根本不动
编辑 2 - 这里发生了一些奇怪的事情。如果我将扫描循环复制/粘贴到 if 子句中,伺服将按预期做出反应(即,输入 = 高使伺服运行扫描循环,它不会中断,直到它达到预期的结尾)。我的直接想法是需要延迟,但无论它们有多长或在 if/else 子句中添加的位置,它们似乎都没有任何区别。