0

今天我试图在 Arduino 上设置一个与这个草图一起运行的伺服电机。由于某种原因,当我为舵机添加设置线时,软件串口无法正常接收数据。我试图将软件串行更改为 Arduino 上的普通串行端口,但同样的事情发生了。

#include<SoftwareSerial.h>
#include<Servo.h>

Servo myServo;
SoftwareSerial BT1(3,2); // TX, RX 

int val;
int servoPin = 7;
int ledPin = 10;

void setup() {
  pinMode(ledPin,OUTPUT);
  BT1.begin(9600);

  myServo.attach(servoPin);
  myServo.writeMicroseconds(2000); //2 ms for Tower Pro SG 90 Servo
  myServo.write(90); //Initialize at servo's middle point

}

void loop() {

  if (BT1.available()) {
    int i = (int)BT1.read();
    setIntensity(i);
  }

}

void setIntensity(int value) {
  if (value >= 0 && value <= 110) {
    analogWrite(ledPin, value);
  }
}

当我注释掉 myServo 的设置行时,Arduino 就像一个魅力。我该如何解决这个问题?我正在使用 Arduino Duemilanove。

4

1 回答 1

0

NeoSWSerialSoftwareSerial. NeoSWSerial不会干扰 Servo,因为它不使用任何额外的资源,也不会长时间阻塞中断。

它也可以从 IDE 库管理器中获得,位于菜单Sketch -> Include Library -> ManageLibraries 下

于 2017-05-18T18:23:19.080 回答