串行和 Arduino 伺服库的问题

Issue with Serial and Arduino Servo Library

本文关键字:问题 伺服 Arduino      更新时间:2023-10-16

今天我尝试在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。

NeoSWSerial 是 SoftwareSerial 的合适替代品。 NeoSWSerial不会干扰 Servo,因为它不使用任何额外的资源,也不会长时间阻止中断。

它也可以在 IDE 库管理器的菜单 Sketch -> Include Library -> ManageLibraries 下获得。