Arduino伺服没有响应按钮按
我很确定这里有一个愚蠢的错误,但我恐怕我不能为我的生活工作了!Arduino伺服没有响应按钮按
简单的测试程序,它会取得错误:
#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语句按预期工作。
欢迎任何意见/建议!
编辑 - 对不起误差伺服完全不
EDIT 2移动 - 这是一个有点奇怪的是怎么回事。如果我将扫描循环复制/粘贴到if子句中,则伺服器按预期作出反应(即,输入=高电平使得伺服运行一个扫描循环,直到达到预期结束时才扫描循环)。我的直接想法是需要延迟,但无论他们多长时间或在if/else子句中添加它们的位置,它们似乎都没有区别。
我不知道你有哪个arduino板,但是在arduino uno上,我很确定引脚8不是PWM输出。而且您无法在非PWM输出上运行伺服。
见欧诺板的这个形象,并注意没有波浪(一个端口支持PWM指示)引脚8:
谢谢,但伺服器与“扫描”程序正常工作,只是为了确保我只是在第7针上尝试了它,并更改了代码,没有运气。 – user2056166 2013-05-13 14:50:24
@unwind感谢您的编辑。 – Bastien 2013-05-13 14:52:34
啊,我明白你的意思了 - 我使用的是Arduino Mega2560,在任何引脚上都没有tildas。 – user2056166 2013-05-13 14:54:13
你链接到的扫描程序是使用引脚9,这是一个uno上的PWM。您的代码使用引脚8,而不是PWM输出。将伺服器切换到第9针,并将代码中的附件更改为第9针,假设这是您唯一的问题,那么您的代码应该可以工作。
你是什么意思,你不能控制引脚8上的伺服? – AGS 2013-05-14 11:40:35
这是一些Arduino板的问题,如上所述。 – user2056166 2013-05-14 19:52:39
正如评论中所建议的,我刚写了一个缓慢移动伺服的功能。不是一个优雅的解决方案,但伺服响应时间不是问题,所以它的伎俩。
感谢您的所有帮助和建议,并感谢@ praks411的包装功能。
什么是错误? – Mushy 2013-05-13 14:25:44
对不起!往上看。谢谢 – user2056166 2013-05-13 14:27:12
在现场你已经提到伺服器在第9针,在你的代码中它连接到第8针......只是一个疯狂的猜测。 – Archie 2013-05-13 14:31:55