feat: 增加置物平台接口
This commit is contained in:
@@ -17,11 +17,11 @@ void by_servo_set_claw_arm(int16_t angle)
|
|||||||
|
|
||||||
if (angle < 0) {
|
if (angle < 0) {
|
||||||
angle = 0;
|
angle = 0;
|
||||||
} else if (angle > 180) {
|
} else if (angle > 270) {
|
||||||
angle = 180;
|
angle = 270;
|
||||||
}
|
}
|
||||||
|
|
||||||
ch_val = (uint32_t)(((float)angle / 180.0f * (PULSE_WIDTH_MAX - PULSE_WIDTH_MIN) + PULSE_WIDTH_MIN) / 20.0f * 9999.0f);
|
ch_val = (uint32_t)(((float)angle / 270.0f * (PULSE_WIDTH_MAX - PULSE_WIDTH_MIN) + PULSE_WIDTH_MIN) / 20.0f * 9999.0f);
|
||||||
|
|
||||||
tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_2, ch_val);
|
tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_2, ch_val);
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ void by_servo_set_claw_arm(int16_t angle)
|
|||||||
*/
|
*/
|
||||||
void by_servo_set_claw(int16_t angle)
|
void by_servo_set_claw(int16_t angle)
|
||||||
{
|
{
|
||||||
#define PULSE_WIDTH_MIN 1.5f
|
#define PULSE_WIDTH_MIN 0.5f
|
||||||
#define PULSE_WIDTH_MAX 2.5f
|
#define PULSE_WIDTH_MAX 2.5f
|
||||||
|
|
||||||
uint32_t ch_val = 0;
|
uint32_t ch_val = 0;
|
||||||
@@ -62,18 +62,18 @@ void by_servo_set_claw(int16_t angle)
|
|||||||
*/
|
*/
|
||||||
void by_servo_set_camera(int16_t angle)
|
void by_servo_set_camera(int16_t angle)
|
||||||
{
|
{
|
||||||
#define PULSE_WIDTH_MIN 1.5f
|
#define PULSE_WIDTH_MIN 0.5f
|
||||||
#define PULSE_WIDTH_MAX 2.5f
|
#define PULSE_WIDTH_MAX 2.5f
|
||||||
|
|
||||||
uint32_t ch_val = 0;
|
uint32_t ch_val = 0;
|
||||||
|
|
||||||
if (angle < 0) {
|
if (angle < 0) {
|
||||||
angle = 0;
|
angle = 0;
|
||||||
} else if (angle > 180) {
|
} else if (angle > 270) {
|
||||||
angle = 180;
|
angle = 270;
|
||||||
}
|
}
|
||||||
|
|
||||||
ch_val = (uint32_t)(((float)angle / 180.0f * (PULSE_WIDTH_MAX - PULSE_WIDTH_MIN) + PULSE_WIDTH_MIN) / 20.0f * 9999.0f);
|
ch_val = (uint32_t)(((float)angle / 270.0f * (PULSE_WIDTH_MAX - PULSE_WIDTH_MIN) + PULSE_WIDTH_MIN) / 20.0f * 9999.0f);
|
||||||
|
|
||||||
tmr_channel_value_set(TMR3, TMR_SELECT_CHANNEL_4, ch_val);
|
tmr_channel_value_set(TMR3, TMR_SELECT_CHANNEL_4, ch_val);
|
||||||
|
|
||||||
@@ -82,13 +82,13 @@ void by_servo_set_camera(int16_t angle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 设置云台摇臂
|
* @brief 设置顶端抓取机构
|
||||||
*
|
*
|
||||||
* @param angle 角度 (0-180)
|
* @param angle 角度 (0-180)
|
||||||
*/
|
*/
|
||||||
void by_servo_set_scoop(int16_t angle)
|
void by_servo_set_scoop(int16_t angle)
|
||||||
{
|
{
|
||||||
#define PULSE_WIDTH_MIN 1.5f
|
#define PULSE_WIDTH_MIN 0.5f
|
||||||
#define PULSE_WIDTH_MAX 2.5f
|
#define PULSE_WIDTH_MAX 2.5f
|
||||||
|
|
||||||
uint32_t ch_val = 0;
|
uint32_t ch_val = 0;
|
||||||
@@ -107,13 +107,40 @@ void by_servo_set_scoop(int16_t angle)
|
|||||||
#undef PULSE_WIDTH_MAX
|
#undef PULSE_WIDTH_MAX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 设置置物平台
|
||||||
|
*
|
||||||
|
* @param angle 角度 (0-180)
|
||||||
|
*/
|
||||||
|
void by_servo_set_storage(int16_t angle)
|
||||||
|
{
|
||||||
|
#define PULSE_WIDTH_MIN 0.5f
|
||||||
|
#define PULSE_WIDTH_MAX 2.5f
|
||||||
|
|
||||||
|
uint32_t ch_val = 0;
|
||||||
|
|
||||||
|
if (angle < 0) {
|
||||||
|
angle = 0;
|
||||||
|
} else if (angle > 180) {
|
||||||
|
angle = 180;
|
||||||
|
}
|
||||||
|
|
||||||
|
ch_val = (uint32_t)(((float)angle / 180.0f * (PULSE_WIDTH_MAX - PULSE_WIDTH_MIN) + PULSE_WIDTH_MIN) / 20.0f * 9999.0f);
|
||||||
|
|
||||||
|
tmr_channel_value_set(TMR3, TMR_SELECT_CHANNEL_2, ch_val);
|
||||||
|
|
||||||
|
#undef PULSE_WIDTH_MIN
|
||||||
|
#undef PULSE_WIDTH_MAX
|
||||||
|
}
|
||||||
|
|
||||||
void by_servo_init(void)
|
void by_servo_init(void)
|
||||||
{
|
{
|
||||||
// 后续要不全初始化为空值,由主控按顺序初始化
|
// 后续要不全初始化为空值,由主控按顺序初始化
|
||||||
by_servo_set_claw_arm(0);
|
by_servo_set_claw_arm(220); // 36-220
|
||||||
by_servo_set_claw(0);
|
by_servo_set_claw(25); // 25-90
|
||||||
by_servo_set_camera(0);
|
by_servo_set_camera(45);
|
||||||
by_servo_set_scoop(0);
|
by_servo_set_scoop(0);
|
||||||
|
by_servo_set_storage(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void by_servo_can_handle(uint16_t stdd_id, const uint8_t *data, uint8_t len)
|
void by_servo_can_handle(uint16_t stdd_id, const uint8_t *data, uint8_t len)
|
||||||
@@ -136,6 +163,9 @@ void by_servo_can_handle(uint16_t stdd_id, const uint8_t *data, uint8_t len)
|
|||||||
case 0x00C:
|
case 0x00C:
|
||||||
by_servo_set_scoop(angle);
|
by_servo_set_scoop(angle);
|
||||||
break;
|
break;
|
||||||
|
case 0x00D:
|
||||||
|
by_servo_set_storage(angle);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ extern void by_servo_set_claw_arm(int16_t angle);
|
|||||||
extern void by_servo_set_claw(int16_t angle);
|
extern void by_servo_set_claw(int16_t angle);
|
||||||
extern void by_servo_set_camera(int16_t angle);
|
extern void by_servo_set_camera(int16_t angle);
|
||||||
extern void by_servo_set_scoop(int16_t angle);
|
extern void by_servo_set_scoop(int16_t angle);
|
||||||
|
extern void by_servo_set_storage(int16_t angle);
|
||||||
extern void by_servo_init(void);
|
extern void by_servo_init(void);
|
||||||
extern void by_servo_can_handle(uint16_t stdd_id, const uint8_t *data, uint8_t len);
|
extern void by_servo_can_handle(uint16_t stdd_id, const uint8_t *data, uint8_t len);
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
/* add user code begin 1 */
|
/* add user code begin 1 */
|
||||||
|
by_debug_init();
|
||||||
/* add user code end 1 */
|
/* add user code end 1 */
|
||||||
|
|
||||||
/* system clock config. */
|
/* system clock config. */
|
||||||
@@ -108,7 +108,7 @@ int main(void)
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
gpio_bits_write(GPIOA, GPIO_PINS_10, !gpio_output_data_bit_read(GPIOA, GPIO_PINS_10));
|
gpio_bits_write(GPIOA, GPIO_PINS_10, !gpio_output_data_bit_read(GPIOA, GPIO_PINS_10));
|
||||||
delay_ms(1000);
|
delay_ms(500);
|
||||||
/* add user code end 3 */
|
/* add user code end 3 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user