1/3
2/3
3/3
带你撸一个不伤肝的写字机程序
科技迷001
2019年12月23日 10:50

        看广大网友对写字机的热情这么高,写了个入门级的DEMO,用你熟悉的51,单文件编程,读起来不费心,不伤肝,助你圆个写字机梦。

        硬件:两个步进电机共16元,一个舵机5块,两个4988模块共2块2,一颗STC芯片3块5,PCB打样找JLC,5块,咱大中华简直是DIY的天堂,幸福!

        电路简单,连线不多,心急的可马上用洞洞板搭起来开撸。

画线段算法的数学模型:直线插补,只是些逻辑关系,感兴趣的可以跟着捋一捋:

画圆弧算法的数学模型:把圆弧分成若干圆心角很小的线段,然后运用画线段算法。

程序核心算法就上面两个,代码加上注释还不到400行,够简单的吧:

总共才12个函数,大部分都是熟悉的面孔:

这是程序跑起来的效果,该有的动作都有了,电池供电,折腾一个当签名机用也不错。

下面是详细代码,之所以用截图,方便用手机打发无聊的厕所时光,顺便还能复习一下C。

舵机PWM脉冲占用一个定时器,第一次定时中断产生高电平脉宽,第二次定时中断补齐剩下的低电平脉宽,凑够20ms。

按键扫描函数放在大循环中,用计数器完成按键去抖,这个按键函数挺有实用价值。

按键手动控制XY轴前后左右移动,按住就走,松手就停:

按键键值响应:运行,抬笔下笔。steps_per_mm的值是由电机丝杆决定的,53.5步=1mm。

步进电机占用一个定时器,每次中断根据flag标志位决定是否产生XY脉冲。

画线段函数,第一步,判断电机旋转方向:

画线段函数,第二步,采用直线插补算法,输出电机运行flag标志:

画弧函数,把弧分成若干短线段,然后调用画线段函数。

小经验:在系统中加一个LED灯,方便程序调试。

程序代码结束。

能看到这里的你,帅到万里挑一!非常感谢!

具体制作请参考视频: