我使用应用程序打开LED或根据按下的按钮改变微伺服的角度(使用Arduino)。我的代码适用于LED(按下按钮时,LED亮起)但按下按钮意味着将伺服角度更改为40时没有任何反应。
// Bluetooth serial:
#include <SoftwareSerial.h> // import the serial library
// setup the bluetooth coms
SoftwareSerial BTSerial(8,7);
#include <Servo.h>
int servoPin = 0;
Servo servo;
int angle = 0; // servo position in degrees
int input = 0;
int led2 = 13;
void setup() {
// put your setup code here, to run once:
servo.attach(servoPin);
Serial.begin(9600); // coms w/ computer
BTSerial.begin(9600); // coms w/ Bluetooth
pinMode(led2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (BTSerial.available())
{
input = BTSerial.read();
digitalWrite(led2, LOW);
switch(input) {
case 'E':
angle = 40;
break;
case 'C':
digitalWrite(led2, HIGH);
break;
}
servo.write(angle);
}
}
输入是正确的,因为我检查时也打开LED,以便E&#39; E&#39;它正常工作的地方。我也尝试在case函数中使用servo.write(),但这也没有用。
case 'E':
servo.write(40);
break;
答案 0 :(得分:0)
您cannot使用数字引脚0
或1
作为输入:
如上所述,这些是串行发送和接收引脚。如果您通过USB为计算机供电,如果您尝试使用它可能会产生干扰,因为它正在从USB到串行和引脚读取。当你尝试编程时,你也遇到了连接问题(好吧,没有任何东西,但只是为了安全而删除)。如果按预期使用引脚,然后编程然后将其从电池上运行,则应该没有问题。
我们大多数人都远离它,因为这有点麻烦
根据您的Arduino型号,servo.attach
仅支持9
引脚和10
:
请注意,在Arduino 0016及更早版本中,伺服库仅支持两个引脚上的伺服:9和10。
或者你也可以使用其中一种。