From a61ce72cd0a91f0ac8b5b2d9b04e03e5e59e204a Mon Sep 17 00:00:00 2001 From: "lxbpxylps@126.com" Date: Sun, 14 Feb 2021 12:40:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20servo=20=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TaiChi/servoTaiChi.cpp | 17 +++++++++-------- TaiChi/servoTaiChi.h | 14 +++++++------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/TaiChi/servoTaiChi.cpp b/TaiChi/servoTaiChi.cpp index aa47c2c..d100538 100644 --- a/TaiChi/servoTaiChi.cpp +++ b/TaiChi/servoTaiChi.cpp @@ -71,16 +71,17 @@ void Servo::StopActionGroup(void) * Return: 无返回 * Others: *********************************************************************************/ -void Servo::SetActionGroupSpeed(uint8_t action_num, uint16_t speed) +void Servo::SetActionGroupSpeed(uint8_t action_num, double speed) { + uint16_t speed_int = (uint16_t)speed; uint8_t buf[7]; buf[0] = FRAME_HEADER; //填充帧头 buf[1] = FRAME_HEADER; buf[2] = 5; //数据长度,数据帧除帧头部分数据字节数,此命令固定为5 buf[3] = CMD_ACTION_GROUP_SPEED; //填充设置动作组速度命令 buf[4] = action_num; //填充要设置的动作组号 - buf[5] = GET_LOW_BYTE(speed); //获得目标速度的低八位 - buf[6] = GET_HIGH_BYTE(speed); //获得目标熟读的高八位 + buf[5] = GET_LOW_BYTE(speed_int); //获得目标速度的低八位 + buf[6] = GET_HIGH_BYTE(speed_int); //获得目标熟读的高八位 SerialX->write(buf, 7); //发送数据帧 } @@ -93,14 +94,14 @@ void Servo::SetActionGroupSpeed(uint8_t action_num, uint16_t speed) * Return: 无返回 * Others: *********************************************************************************/ -void Servo::SetAllActionGroupSpeed(uint16_t speed) +void Servo::SetAllActionGroupSpeed(double speed) { SetActionGroupSpeed(0xFF, speed); //调用动作组速度设定,组号为0xFF时设置所有组的速度 } //恢复初始状态,指定速度 -void Servo::Reset(uint16_t speed) +void Servo::Reset(double speed) { SetActionGroupSpeed(ACTION_RESET_NUM, speed); RunActionGroup(ACTION_RESET_NUM, 1); @@ -109,7 +110,7 @@ void Servo::Reset(uint16_t speed) //抓取,指定速度 -void Servo::Catch(uint16_t speed) +void Servo::Catch(double speed) { SetActionGroupSpeed(ACTION_CATCH_NUM, speed); RunActionGroup(ACTION_CATCH_NUM, 1); @@ -118,7 +119,7 @@ void Servo::Catch(uint16_t speed) //释放,指定速度 -void Servo::Release(uint16_t speed) +void Servo::Release(double speed) { SetActionGroupSpeed(ACTION_RELEASE_NUM, speed); RunActionGroup(ACTION_RELEASE_NUM, 1); @@ -127,7 +128,7 @@ void Servo::Release(uint16_t speed) //停止舵机并恢复初始状态,指定速度 -void Servo::StopAndReset(uint16_t speed) +void Servo::StopAndReset(double speed) { StopActionGroup(); Reset(speed); diff --git a/TaiChi/servoTaiChi.h b/TaiChi/servoTaiChi.h index 7561ffe..f4a3077 100644 --- a/TaiChi/servoTaiChi.h +++ b/TaiChi/servoTaiChi.h @@ -22,7 +22,7 @@ //默认动作组速度 -#define SERVO_NORMAL_SPEED 100 +#define SERVO_NORMAL_SPEED 1.0 class Servo @@ -33,13 +33,13 @@ public: void RunActionGroup(uint8_t action_num, uint16_t times); void StopActionGroup(void); - void SetActionGroupSpeed(uint8_t action_num, uint16_t speed); - void SetAllActionGroupSpeed(uint16_t speed); + void SetActionGroupSpeed(uint8_t action_num, double speed); + void SetAllActionGroupSpeed(double speed); - void Reset(uint16_t speed = SERVO_NORMAL_SPEED); //恢复初始状态,指定速度 - void Catch(uint16_t speed = SERVO_NORMAL_SPEED); //抓取,指定速度 - void Release(uint16_t speed = SERVO_NORMAL_SPEED); //释放,指定速度 - void StopAndReset(uint16_t speed = SERVO_NORMAL_SPEED); //停止舵机并恢复初始状态,指定速度 + void Reset(double speed = SERVO_NORMAL_SPEED); //恢复初始状态,指定速度 + void Catch(double speed = SERVO_NORMAL_SPEED); //抓取,指定速度 + void Release(double speed = SERVO_NORMAL_SPEED); //释放,指定速度 + void StopAndReset(double speed = SERVO_NORMAL_SPEED); //停止舵机并恢复初始状态,指定速度 private: HardwareSerial *SerialX;