您现在的位置是:网站首页> 硬件

不用Arduino库控制舵机

  • 硬件
  • 2021-10-17
  • 770人已阅读
摘要

#define ServoPin 9


void ServoControl(int servoAngle)

{

  double thisAngle = map(servoAngle, 0, 180, 500, 2500);//等比例角度值范围转换高电平持续时间范围

  unsigned char i = 50;//50Hz 每秒的周期次数(周期/秒) 即1S 50 个周期 每个周期20ms

  while (i--)

  {

    digitalWrite(ServoPin, HIGH); 

    delayMicroseconds(thisAngle); //高电平时间

    digitalWrite(ServoPin, LOW); 

    delayMicroseconds(20000 - thisAngle);//每个周期20ms减去高电平持续时间

  }

}


void setup() {

  Serial.begin(115200);

  pinMode(ServoPin, OUTPUT);

  digitalWrite(ServoPin, LOW);//先保证拉低

  

}


void loop()

{

  for (int i = 0; i <= 180 ; i += 1)

  {

    delay(500);

    Serial.println(i);

    ServoControl(i);

  }

}



Top