feat: 增加转塔电机接口
This commit is contained in:
@@ -134,6 +134,29 @@ void by_servo_set_storage(int16_t angle)
|
|||||||
#undef PULSE_WIDTH_MAX
|
#undef PULSE_WIDTH_MAX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void by_servo_set_zhuan(int16_t angle)
|
||||||
|
{
|
||||||
|
#define PULSE_WIDTH_MIN 0.5f
|
||||||
|
#define PULSE_WIDTH_MAX 2.5f
|
||||||
|
|
||||||
|
uint32_t ch_val = 0;
|
||||||
|
|
||||||
|
if (angle < -10) {
|
||||||
|
angle = -10;
|
||||||
|
} else if (angle > 10) {
|
||||||
|
angle = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
angle += 10;
|
||||||
|
|
||||||
|
ch_val = (uint32_t)(((float)angle / 20.0f * (PULSE_WIDTH_MAX - PULSE_WIDTH_MIN) + PULSE_WIDTH_MIN) / 20.0f * 9999.0f);
|
||||||
|
|
||||||
|
tmr_channel_value_set(TMR3, TMR_SELECT_CHANNEL_1, ch_val);
|
||||||
|
|
||||||
|
#undef PULSE_WIDTH_MIN
|
||||||
|
#undef PULSE_WIDTH_MAX
|
||||||
|
}
|
||||||
|
|
||||||
void by_servo_init(void)
|
void by_servo_init(void)
|
||||||
{
|
{
|
||||||
// 后续要不全初始化为空值,由主控按顺序初始化
|
// 后续要不全初始化为空值,由主控按顺序初始化
|
||||||
@@ -143,6 +166,7 @@ void by_servo_init(void)
|
|||||||
by_servo_set_storage(0);
|
by_servo_set_storage(0);
|
||||||
delay_sec(4);
|
delay_sec(4);
|
||||||
by_servo_set_claw_arm(220); // 36-220
|
by_servo_set_claw_arm(220); // 36-220
|
||||||
|
by_servo_set_zhuan(0); //-10-10
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
@@ -168,6 +192,9 @@ void by_servo_can_handle(uint16_t stdd_id, const uint8_t *data, uint8_t len)
|
|||||||
case 0x00D:
|
case 0x00D:
|
||||||
by_servo_set_storage(angle);
|
by_servo_set_storage(angle);
|
||||||
break;
|
break;
|
||||||
|
case 0x00E:
|
||||||
|
by_servo_set_zhuan(angle);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user