4

我正在尝试让 Arduino Uno 板控制由伺服电机驱动的夹具。伺服器试图低于 134°,这在机械上是不可能的。我能做些什么来解决这个问题?

我试图将电机限制在 180°,当它不是所需按钮的读数时,它会保持主要位置(关闭,180)

#include <Servo.h>

Servo myservo;

char reading;
int pos;

void setup() {
  // put your setup code here, to run once:
  myservo.attach(9);
  Serial.begin(9600);
}

void loop() {

  if (Serial.available() > 0) {

    reading = Serial.read();
    Serial.print(reading);
    if (reading == 'W' || reading == 'w') {
      pos = 134;
      myservo.write(pos);
      Serial.println("Open");
    }
    else if (reading == 'C' || reading == 'c') {
      pos = 180;
      myservo.write(pos);
      Serial.println("Close");
    }
    else if (reading != 'W' || reading != 'C') {
      myservo.write(180);
    }
  }
}
4

1 回答 1

2

在您的代码中,您只调用attach()传递密码。

伺服库要求您在调用时指定伺服轴的最小和最大位置attach()。如果你不这样做,你最终可能会遇到调用有效位置的情况,但伺服系统要么走得不够远,要么试图走得比机械上可能的更远。

该库需要知道最小和最大信号脉冲宽度,以便在您调用Servo.write()轴角传递时,它可以计算出相应的占空比。

于 2019-06-22T16:46:06.603 回答