1.舵机控制,SG90舵机通过PWM波的占空比控制转动角度
2.红外循迹,前面的路线如果是黑色的则输出高电平,其他则为低电平。 即我们应该初始化IO口为下拉输入,当被上拉则说明检测到了黑色。
这里有4个红外对管,做4个输入读取。
3.超声波
可以根据返回的高电平的时间测算距离
4.超声波跟随
检测距离小于预设值就后退,大于预测值就前进,否则就不动
5.超声波加舵机避障,通过舵机左右扭转判断前方是否有障碍物,逻辑:前方没有则直行,前方有障碍则尝试右转舵机,否则左转舵机,都不行则后退
6.定时器的编码器功能
电机通过码盘输出A 相和B相,当A相下降沿时,B相为高电平为正向,B相为低电平为方向
我们可以使用定时器来对编码信号进行测量,CNT寄存器和DIR寄存器 , CNT寄存器用于记录脉冲数量,DIR用于表示计数方向
计算时间变化量:计数器变化量 = 当前计数器的值(每一次检测到值后,会清零当前的值)
根据电机的参数可以算出电机旋转一周会产生多少个脉冲,如图,该电机的减速比为1:9.6即旋转一圈会旋转9.6圈,又一圈会产生11个脉冲 ,又单片机计数时设置为4倍频,所以单片机会接收到9.6*11*4个脉冲,此时我们仅需根据一个单位时间内单片机共收到了几个脉冲即可算出电机旋转了多少圈。
7.hal库的使用
选择芯片,选择引脚,时钟设置,project设置名称,code 勾选和 选择ARM开发,generate code完成编写
初始化配置就已经写好了,我们只需要自己写逻辑配置
最简单的点灯,HAL_Delay是一个毫秒级的延时函数,HAL_GPIO_WritePin用于给IO设置高低电平。
可以通过这个地方对IO口的初始模式进行设置
如图PC5被设置成了上拉模式
HAL_GPIO_ReadPin读取电平