今天我试着在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。
答案 0 :(得分:0)
NeoSWSerial是SoftwareSerial
的合适替代品。 NeoSWSerial
不会干扰伺服,因为它不会使用任何额外的资源,并且它不会长时间阻止中断。
它也可以从IDE库管理器中获得,菜单草图 - &gt;包含图书馆 - &gt; ManageLibraries 强>