当前位置: 首页 > 工具软件 > Servo > 使用案例 >

Arduino-舵机库(Servo)的使用

殳经略
2023-12-01

使用舵机库,可能会影响Arduino某些引脚的PWM功能,就UNO开发板而言,使用Servo库时,9脚10脚,PWM功能无法使用.


#include <Servo.h>
 
Servo base, fArm, rArm, claw;  //建立4个电机对象
 
int dataIndex = 0;
void setup() {
  base.attach(11);     // base 伺服电机连接引脚11 电机代号'b'
  rArm.attach(10);     // rArm 伺服电机连接引脚10 电机代号'r'
  fArm.attach(9);      // fArm 伺服电机连接引脚9  电机代号'f'
  claw.attach(6);      // claw 伺服电机连接引脚6  电机代号'c'
  Serial.begin(9600);
  Serial.println("Please input serial data.");
}
 
void loop() {
  if (Serial.available()) {  // 检查串口缓存是否有数据等待传输 
    char servoName = Serial.read();   //获取整数,电机指令中电机编号信息
 
    Serial.print("servoName = ");
    Serial.print(servoName);    
    Serial.print(" , ");      
    
    int data = Serial.parseInt();   //获取电机指令中电机角度信息
 
    switch(servoName){ //根据电机指令中电机信息决定对哪一个电机进行角度设置
      case 'b':   // 电机指令b,设置base电机角度
        base.write(data);
        Serial.print("Set base servo value: ");
        Serial.println(data);
        break;
      case 'r':  // 电机指令r,设置rArm电机角度  
        rArm.write(data);
        Serial.print("Set rArm servo value: ");
        Serial.println(data);
        break;
      case 'f':   // 电机指令f,设置fArm电机角度  
        fArm.write(data);
        Serial.print("Set fArm servo value: ");
        Serial.println(data);
        break;
      case 'c':   // 电机指令c,设置claw电机角度  
        claw.write(data);  
        Serial.print("Set claw servo value: ");
        Serial.println(data);
        break;
    }
  }
}

servo.read()获取当前角度信息
servo.attached(5)检查5脚上是否链接有点击,如果有返回true,否则返回false
servo.deattach(9)软件实现9脚的舵机断开,即可恢复该引脚的PWM功能

 类似资料: