1. 智能小车:让小车动起来(360.64)
硬件接线
- B-2A – PB0
- B-1A – PB1
- A-1B – PB2
- A-1A – PB10
- 其余接线参考上官一号小车项目。
cubemx配置
- 代码(28.smartCar_project1/MDK-ARM)
2. 智能小车:串口控制小车(361.65)
- 在 smartCar_project1 的基础上:
- 代码(28.smartCar_project2/MDK-ARM)(拷贝 4g_led_project 中串口接收数据相关的代码)
3. 智能小车:点动控制小车(362.66)
- 提升滴答定时器的优先级,降低串口的优先级
- 代码(28.smartCar_project3/MDK-ARM)(添加延时函数)
4. 智能小车:硬件PWM调速(363.67)
硬件接线
- B-1A – PA0
- A-1A – PA1
- B-1A – PB1
- A-1A – PB10
- 代码(28.smartCar_project4/MDK-ARM)(修改arr即可调速)
- 将控制车轮的4个 GPIO 口配置修改如下,否则小车动不起来。
- 原因:L9110每个控制口需要一高一低才可以动起来,如果PWM有效电平为高电平,则另一个GPIO口则需要输出低电平才可以驱动轮子。
5. 智能小车:左右轮各自调速(364.68)
- 代码(28.smartCar_project5/MDK-ARM)
//main.c
while (1)
{
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1,80);
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2,150);
HAL_Delay(1000);
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1,150);
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2,80);
HAL_Delay(1000);
}
6. 智能小车:循迹小车基本实现(365.69)
硬件接线
- B-2A – PB0
- B-1A – PB1
- A-1B – PB2
- A-1A – PB10
- 循迹模块(左)DO – PB3
- 循迹模块(右)DO – PB4
代码实现
- 基于 smartCar_project1
- 代码(28.smartCar_project6/MDK-ARM)
//main.c
#define LeftWheel_Value HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3)
#define RightWheel_Value HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4)
while (1)
{
if (LeftWheel_Value == GPIO_PIN_RESET && RightWheel_Value == GPIO_PIN_RESET)
goForward();
if (LeftWheel_Value == GPIO_PIN_SET && RightWheel_Value == GPIO_PIN_RESET)
goLeft();
if (LeftWheel_Value == GPIO_PIN_RESET && RightWheel_Value == GPIO_PIN_SET)
goRight();
if (LeftWheel_Value == GPIO_PIN_SET && RightWheel_Value == GPIO_PIN_SET)
stop();
}
7. 智能小车:循迹小车解决转弯不平滑问题(366.70)
硬件接线
- B-1A – PA0
- A-1A – PA1
- B-1A – PB1
- A-1A – PB10
代码实现
- 基于smartCar_project5(因为用到pwm)
- 代码(28.smartCar_project7/MDK-ARM)
//main.c
#define LeftWheel_Value HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3)
#