10#include <SoftwareSerial.h>
12#define MR4_DEBUG_ENABLE false
13#define MR4_DEBUG_SERIAL Serial
15# define MR4_DEBUG_HEADER() MR4_DEBUG_SERIAL.println(F("\nBMR4\n"))
16# define MR4_DEBUG_TAIL() MR4_DEBUG_SERIAL.println(F("\nEMR4\n"))
17# define MR4_DEBUG_PRINT(...) MR4_DEBUG_SERIAL.print(__VA_ARGS__)
18# define MR4_DEBUG_PRINTLN(...) MR4_DEBUG_SERIAL.println(__VA_ARGS__)
19# define MR4_DEBUG_PRINT_HEADER(...) \
22 MR4_DEBUG_SERIAL.println(__VA_ARGS__); \
24# define MR4_DEBUG_PRINT_TAIL(...) \
26 MR4_DEBUG_SERIAL.println(__VA_ARGS__); \
30# define MR4_DEBUG_HEADER()
31# define MR4_DEBUG_TAIL()
32# define MR4_DEBUG_PRINT_HEADER(...)
33# define MR4_DEBUG_PRINT_TAIL(...)
34# define MR4_DEBUG_PRINT(...)
35# define MR4_DEBUG_PRINTLN(...)
38#define MatrixR4_COMM_LEAD 0x7B
40#define MatrixR4_SERVO_NUM 4
41#define MatrixR4_DC_MOTOR_NUM 4
42#define MatrixR4_ENCODER_NUM 4
43#define MatrixR4_BUTTON_NUM 2
45#define DIR_REVERSE (MatrixMiniR4::DIR::REVERSE)
46#define DIR_FORWARD (MatrixMiniR4::DIR::FORWARD)
54 MMLower(uint8_t rx, uint8_t tx, uint32_t baudrate);
342 SoftwareSerial* commSerial;
345 void CommSendData(
COMM_CMD cmd, uint8_t* data = NULL, uint16_t size = 0);
346 void CommSendData(
COMM_CMD cmd, uint8_t data);
347 bool CommReadData(uint8_t* data, uint16_t size = 1, uint32_t timeout_ms = 10);
349 void HandleCommand(uint8_t cmd);
#define MatrixR4_ENCODER_NUM
Handling the Lower MCU (STM32) communication.
RESULT SetAllServoAngle(uint16_t angle1, uint16_t angle2, uint16_t angle3, uint16_t angle4)
RESULT GetAllInfo(AllInfo_t &info)
RESULT GetRotateState(uint8_t num, bool &isEnd)
RESULT SetEncoderDir(uint8_t num, DIR dir)
RESULT SetStateLED(uint8_t brightness, uint32_t colorRGB)
RESULT SetServoAngleRange(uint8_t num, uint16_t min, uint16_t max)
RESULT SetServoPulseRange(uint8_t num, uint16_t min, uint16_t max)
RESULT SetDCMotorPower(uint8_t num, int16_t power)
@ SET_ENCODER_RESET_COUNTER
@ AUTO_SEND_ENCODER_COUNTER
@ GET_ALL_ENCODER_COUNTER
@ SET_DC_MOTOR_SPEED_RANGE
void(*) BtnChgCallback(uint8_t num, BTN_STATE newState)
int32_t enCounter[MatrixR4_ENCODER_NUM]
RESULT SetDCMotorRotate(uint8_t num, int16_t maxSpeed, uint16_t degree)
RESULT GetIMUGyro(double &x, double &y, double &z)
RESULT SetServoAngle(uint8_t num, uint16_t angle)
RESULT GetFWVersion(String &version)
RESULT GetFWBuildDay(String &date)
RESULT Init(uint32_t timeout_ms=1000)
RESULT GetFWDescriptor(String &descriptor)
RESULT GetEncoderCounter(uint8_t num, int32_t &enCounter)
RESULT SetDCMotorSpeed(uint8_t num, int16_t speed)
RESULT GetPowerInfo(float &curVolt, float &curVoltPerc)
RESULT GetButtonState(uint8_t num, bool &btnState)
RESULT SetEncoderResetCounter(uint8_t num)
RESULT GetIMUAcc(double &x, double &y, double &z)
RESULT SetIMUEchoMode(IMU_ECHO_MODE mode, uint16_t echoIntervalMs)
RESULT GetModelIndex(uint8_t &index)
RESULT SetAllDCMotorSpeed(Motors_Param_t param)
void onBtnChg(BtnChgCallback callback)
RESULT SetServoDir(uint8_t num, DIR dir)
RESULT SetMoveDistance(MOVE_TYPE type, MOVE_ACTION action, uint16_t speed, uint16_t enCounter)
RESULT GetIMUEuler(int16_t &roll, int16_t &pitch, int16_t &yaw)
RESULT GetAllEncoderCounter(int32_t *enCounter)
RESULT SetPIDParam(uint8_t num, uint8_t pidNum, float kp, float ki, float kd)
RESULT SetIMUToZero(void)
MMLower(uint8_t rx, uint8_t tx, uint32_t baudrate)
RESULT SetDCMotorSpeedRange(uint8_t num, uint16_t min, uint16_t max)
RESULT GetButtonsState(bool *btnsState)
RESULT SetDCBrake(uint8_t num)
RESULT SetIMUInit(IMU_ACC_FSR accFSR, IMU_GYRO_FSR gyroFSR, IMU_ODR odr, IMU_FIFO fifo)
RESULT SetDCMotorDir(uint8_t num, DIR dir)
RESULT SetPowerParam(float fullVolt, float cutOffVolt, float alarmVolt)