mirror of
https://github.com/m5stack/M5Stack.git
synced 2026-05-20 10:06:46 -07:00
60 lines
1.7 KiB
C++
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 |