伺服电机一直试图达到134°以下,出了什么问题?

Servo motor keeps trying to reach beneath 134°, what is wrong?

本文关键字:什么 问题 以下 一直 伺服电机      更新时间:2023-10-16

我正在尝试让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);
    }
  }
}

在代码中,仅在传入引脚号时调用attach()

伺服

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

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