循迹小车
智能小车2-循迹小车-CSDN博客
接线
B-1A -- PB0 B-1B -- PB1A-1A -- PB2A-1B -- PB10循迹模块(左) -- PB3循迹模块(右) -- PB4
CubeMx
在CubeMx配置,并重定义,在main.h会自动生成
#define B_1A_Pin GPIO_PIN_0
#define B_1A_GPIO_Port GPIOB
#define B_1B_Pin GPIO_PIN_1
#define B_1B_GPIO_Port GPIOB
#define A_1A_Pin GPIO_PIN_2
#define A_1A_GPIO_Port GPIOB
#define A_1B_Pin GPIO_PIN_10
#define A_1B_GPIO_Port GPIOB
#define Left_Sensor_Pin GPIO_PIN_3
#define Left_Sensor_GPIO_Port GPIOB
#define Right_Sensor_Pin GPIO_PIN_4
#define Right_Sensor_GPIO_Port GPIOB
/* USER CODE BEGIN Private defines */#define Left_Sensor HAL_GPIO_ReadPin(Left_Sensor_GPIO_Port,Left_Sensor_Pin)#define Right_Sensor HAL_GPIO_ReadPin(Right_Sensor_GPIO_Port,Right_Sensor_Pin)
keil
route_sensor.c:
- 如果要使用PWM调速就必须全部是PWM调速,因为一旦使用PWM调速之后又使用其他motor.c中的前后左右,就会重置PB1和PB10的值,而如果要使用调速,PB1和PB10就必须一直为HIGH,使用PWM调速的优点是转弯平滑,缺点是电机很容易因为PWM波的有效电平持续时间过低而转不动。
- 如果不想用PWM调速,不仅不能调用PWM调速的函数,在main中也记得将PWM使能关闭,在Cube中要把PA1和PA2改回GPIO,不使用PWM调速的优点是电机动力充足,缺点是转弯不太平滑。
#include "route_sensor.h"
#include "main.h"
#include "motor.h"void route_sensor_1(void)
{// 下方小车两个模块都能反射回来红外,输出低电平,灯亮,直走
// 上方小车左模块遇到黑线,红外被吸收&#