stM32f4小车行走距离和角度设置检测 案例代码学习02

void Distance_Check(void)
{
	s32 distance;
	distance=(s32)(CNT_10ms[0]+CNT_10ms[1]+CNT_10ms[2]+CNT_10ms[3]);
	car_distance+=distance;
	end_line_distance+=distance;
	set_go_step_distance+=distance;
	unloading_distance+=distance;
}
//设定车子行驶距离
void Set_Go_Step(float set_leg,float set_speed)
{
	Set_Go_Step_Pid_Parameter_Init(set_leg*pulse_per_millimeter,set_speed);//复位距离pid
	set_go_step_distance=0;
	set_go_step_flag=1;
}
u8 Check_Go_Step(float range)
{
	if(fabs(set_go_step_pid_point-set_go_step_distance)<range)
	{
		set_go_step_flag=0;
		car_speed_forward=0;
		return 1;
	} 
	return 0;
}
//设定车子旋转角度
void Set_Spin_Step(float set_angle,float set_speed)
{
	Set_Spin_Step_Pid_Parameter_Init(set_angle+yaw,set_speed);//复位距离pid
	set_spin_step_flag=1;
}
u8 Check_Spin_Step(float range)
{
	if(fabs(set_spin_step_pid_point-yaw)<range)
	{
		set_spin_step_flag=0;
		return 1;
	} 
	return 0;
}
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F4系列微控制器常用于制作自动化小车项目,其丰富的GPIO资源和强大的处理能力使其成为物联网(IoT)应用的理想选择。编写STM32F4小车代码主要包括以下几个步骤: 1. **硬件连接**: - 连接电机驱动电路、电源、编码器(如果需要速度反馈)等设备到STM32F4的GPIO口。 - 使用STM32CubeIDE这样的集成开发环境配置并烧录固件。 2. **软件初始化**: - 初始化GPIO功能,并设置为推挽输出模式驱动电机。 - 初始化定时器,用于控制电机的速度或步进频率。 3. **主函数控制**: - 创建函数来接收和解析输入指令,比如前进、后退、左转、右转等。 - 根据指令计算电机的PWM信号(脉宽调制),通过调整占空比改变电机速度。 - 考虑PID控制(如有必要)来保持车辆稳定行驶。 ```c // 示例代码片段 void motorControl(int direction, int speed) { float dutyCycle = (float)speed / MAX_SPEED * PWM_MAX; // 计算PWM duty cycle GPIO_SetPinOutputSpeed(LED_PIN, GPIO_Speed_50MHz); // 设置LED灯速度 if (direction == LEFT) { // 左转 GPIO_SetPinState(MOTOR_LEFT_FWD, !GPIO_GetPinState()); // 反相控制左电机 STM32F4_GPIO_SetPinOutput(MOTOR_RIGHT_FWD, dutyCycle); STM32F4_GPIO_SetPinOutput(MOTOR_LEFT_BWD, dutyCycle); } else { // 右转 // ...类似操作,但左右电机反转方向 } } int main(void) { // 硬件初始化 initHardware(); while (1) { // 接收用户输入并调用motorControl函数 motorControl(readUserInput(), getMotorSpeed()); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值