Car/TaiChi/servoTaiChi.h

80 lines
2.5 KiB
C
Raw Normal View History

2021-02-13 12:29:42 +08:00
#ifndef SERVOTAICHI_H
#define SERVOTAICHI_H
2021-02-10 20:13:28 +08:00
#include <Arduino.h>
//注释以关闭调试功能
2021-02-15 12:28:14 +08:00
#define SERVO_DEBUG
2021-03-21 23:31:43 +08:00
//与舵机控制板连接串口
//使用 Mega 板 18 19 作为串口通信端口
#define SERVO_SERIAL_NUM NeoSerial1
//与舵机控制板串口通信波特率
2021-02-15 11:08:34 +08:00
#define SERVO_BAUD_RATE 9600
2021-02-10 20:13:28 +08:00
//爪子舵机 id
#define CLAW_SERVO_ID 15
//爪子打开时舵机位置
#define CLAW_OPEN_POSITION 500
//爪子打开用时
#define CLAW_OPEN_USE_TIME 1000
2021-02-10 20:13:28 +08:00
//发送部分的指令
#define FRAME_HEADER 0x55 //帧头
#define CMD_SERVO_MOVE 0x03 //舵机移动指令
2021-02-10 20:13:28 +08:00
#define CMD_ACTION_GROUP_RUN 0x06 //运行动作组指令
#define CMD_ACTION_GROUP_STOP 0x07 //停止动作组运行指令
#define CMD_ACTION_GROUP_SPEED 0x0B //设置动作组运行速度指令
//动作组
#define ACTION_RESET_NUM 99
2021-03-10 23:35:09 +08:00
#define ACTION_DOWN_NUM 100
#define ACTION_CATCH_NUM 101
#define ACTION_RELEASE_NUM 102
#define ACTION_GAINDOWN_NUM 103
#define ACTION_GAINCATCH_NUM 104
2021-03-16 09:05:20 +08:00
#define ACTION_GAINUP_NUM 105
2021-02-10 20:13:28 +08:00
//默认动作组速度
2021-02-14 12:40:39 +08:00
#define SERVO_NORMAL_SPEED 1.0
2021-02-10 20:13:28 +08:00
class Servo
{
public:
Servo();
2021-03-21 23:31:43 +08:00
2021-03-22 12:18:27 +08:00
static void BeginTransmit(unsigned long baud_rate = SERVO_BAUD_RATE); //打开串口
2021-02-10 20:13:28 +08:00
2021-03-22 12:18:27 +08:00
static void MoveServo(uint8_t servo_id, uint16_t position, uint16_t time); //控制单个舵机转动
2021-03-22 12:18:27 +08:00
static void RunActionGroup(uint8_t action_num, uint16_t times); //运行指定动作组
static void StopActionGroup(void); //停止动作组运行
static void SetActionGroupSpeed(uint8_t action_num, float speed); //设定指定动作组的运行速度
static void SetAllActionGroupSpeed(float speed); //设置所有动作组的运行速度
2021-02-10 20:13:28 +08:00
2021-03-22 12:18:27 +08:00
static void OpenClaw(void); //打开爪子
2021-03-22 12:18:27 +08:00
static void Reset(float speed = SERVO_NORMAL_SPEED); //恢复初始状态,指定速度
static void Down(float speed = SERVO_NORMAL_SPEED); //放下爪子,指定速度
static void Catch(float speed = SERVO_NORMAL_SPEED); //抓取,指定速度
static void Release(float speed = SERVO_NORMAL_SPEED); //释放,指定速度
static void GainDown(float speed = SERVO_NORMAL_SPEED); //增益点放下爪子,指定速度
static void GainCatch(float speed = SERVO_NORMAL_SPEED); //增益点抓取,指定速度
static void GainUp(float speed = SERVO_NORMAL_SPEED); //增益点抬升,指定速度
static void StopAndReset(float speed = SERVO_NORMAL_SPEED); //停止舵机并恢复初始状态,指定速度
2021-02-10 20:13:28 +08:00
private:
2021-03-22 12:18:27 +08:00
static NeoHWSerial* NeoSerialX;
2021-02-10 20:13:28 +08:00
};
#endif