单片机代码写得非常精简和奇妙

2020-11-19 14:37:24

在上一期免费51单片机和舵机开源项目中:最简单DIY基于51单片机的舵机控制器,我简述了舵机的控制原理和分享一个舵机控制的程序当时的源码还是借鉴了网上一些相关的资源。所以就直接免费了。

那么这次源码进行了大幅度的升级,用52单片机定时器0输出两路PWM波来控制两个自由度的舵机,用定时器1组成波特率发生器控制串口蓝牙,加上镭射激光模块,代码写得非常精简和奇妙,最终研制成功了钢铁爱国者机关枪控制器。下面是设备的全家福照。

图片说明:最左边的是两个sg90舵机组成的云台上面搭载了一个激光模块,激光模块可以通过IO口控制的,激光模块发出红色的激光照到纸上;左边第二个是52单片机最小核心板,左边第三个是HC05串口蓝牙模块,左边第四个是舵机电源模块(我是为了方便连接舵机使用的,因为舵机的三个口都是连起来的,提供5V和GND,还有两排联通的S接口接舵机数据线的,非常方便,强烈推荐使),左边第五个是总供电模块(买家如果有其他电源扩展模块可以忽略,也可以参考使用面包板电源模块,建议电压要稳定,电流要2A输出,这样保证舵机能正常工作)。下面是舵机云台散件和拼装展示。

功能描述:手机蓝牙调试助手发送指令通过蓝牙无线传输到串口蓝牙模块,模块将控制信息通过串口返回给单片机,单片机解析控制指令,最后控制二自由度舵机转动,最终控制激光点打到目标,可玩性相当高,其实除了可以用蓝牙调试助手控制之外,也可以用有线的串口调试助手来控制,只不过无线变成有线了而已,串口蓝牙的功能无非就是让有线串口变成无线串口而已。

技术描述:如果用stm32来控制舵机,一般人都觉得没有问题,因为有现成的库函数可以调用,但是用51单片机定时器0通过两个IO口同时输出两路不相互干扰的PWM波来控制舵机就不是那么容易了,同时又要使用定时器1作为波特率发生器实现串口蓝牙通信。原来的开源舵机程序0到180度一共有五档,现在有10档,也就是最小翻转角度达到18度,那是因为修改了定时器中断。本次设计绝对是单片机串口编程和PWM编程最好的学习资料。

扩展描述:本次设计专门编写了开源安卓手机app,由于不是一个专题,并且加进去价格贵,买家可能不愿意接受,所以把开源app留在下一个专题,敬请期待!这里可以给出一个app的截图作为宣传。用手机重力传感器和手机方向键两种方式控制钢铁爱国者机关枪绝对是一种享受!

关闭