根据蓝牙输入改变伺服角度

时间:2017-12-04 04:59:28

标签: bluetooth arduino servo

我使用应用程序打开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;

1 个答案:

答案 0 :(得分:0)

cannot使用数字引脚01作为输入:

  

如上所述,这些是串行发送和接收引脚。如果您通过USB为计算机供电,如果您尝试使用它可能会产生干扰,因为它正在从USB到串行和引脚读取。当你尝试编程时,你也遇到了连接问题(好吧,没有任何东西,但只是为了安全而删除)。如果按预期使用引脚,然后编程然后将其从电池上运行,则应该没有问题。

     

我们大多数人都远离它,因为这有点麻烦

根据您的Arduino型号,servo.attach仅支持9引脚和10

  

请注意,在Arduino 0016及更早版本中,伺服库仅支持两个引脚上的伺服:9和10。

或者你也可以使用其中一种。