Files
M5Stack/examples/Modules/BaseX/BaseX.h
T
2020-03-30 16:45:02 +08:00

60 lines
1.7 KiB
C++

/*
* @Author: Sorzn
* @Date: 2019-12-12 14:33:50
* @LastEditTime: 2019-12-13 15:47:59
* @Description: M5Stack project
* @FilePath: /M5Stack/examples/Modules/BaseX/BaseX.h
*/
#ifndef __BASE_X_H__
#define __BASE_X_H__
#include "Arduino.h"
#define BASE_X_ADDR (0x22)
#define BASE_X_SERVO_ANGLE_ADDR (0x00)
#define BASE_X_SERVO_PULSE_ADDR (0x10)
#define BASE_X_PWM_DUTY_ADDR (0x20)
#define BASE_X_ENCODER_ADDR (0x30)
#define BASE_X_SPEED_ADDR (0x40)
/*
| 0 | 1 | 2 | 3 | 4, 5, 6, 7 | 8 | 9 | 10 | 11 | 12 |
| mod | position-p | position-i | position-d | position-point | position-max-speed | speed-p | speed-i | speed-d | speed-point |
*/
#define BASE_X_CONFIG_ADDR (0x50)
#define NORMAL_MODE (0x00)
#define POSITION_MODE (0x01)
#define SPEED_MODE (0x02)
class BASE_X
{
public:
void SetMode(uint8_t pos, uint8_t mode);
int32_t GetEncoderValue(uint8_t pos);
void SetEncoderValue(uint8_t pos, int32_t encode);
void SetMotorSpeed(uint8_t pos, int8_t duty);
int8_t GetMotorSpeed(uint8_t pos);
int8_t GetMotorSpeed20MS(uint8_t pos);
void SetPositionPID(uint8_t pos, uint8_t kp, uint8_t ki, uint8_t kd);
void SetPositionPoint(uint8_t pos, int32_t position_point);
void SetPostionPIDMaxSpeed(uint8_t pos, uint8_t max_pwm);
void SetSpeedPID(uint8_t pos, uint8_t kp, uint8_t ki, uint8_t kd);
void SetSpeedPoint(uint8_t pos, int8_t speed_point);
void SetServoAngle(uint8_t pos, uint8_t angle);
void SetServoPulseWidth(uint8_t pos, uint16_t width);
private:
uint8_t CheckPos(uint8_t pos);
};
#endif