- #define SET_A GPIO_SetBits(GPIOB, GPIO_Pin_7)
- #define RESET_A GPIO_ResetBits(GPIOB, GPIO_Pin_7)
- #define SET_B GPIO_SetBits(GPIOB, GPIO_Pin_9)
- #define RESET_B GPIO_ResetBits(GPIOB, GPIO_Pin_9)
- void smallGo(int n, bool left)
- {
- int i;
- if(left == TRUE)
- {
- for(i = 0; i < n; i++)
- {
- SET_A;
- RESET_B;
- OSTimeDlyHMSM(0, 0, 0, DelaySmall);
- SET_A;
- SET_B;
- OSTimeDlyHMSM(0, 0, 0, DelaySmall);
- RESET_A;
- SET_B;
- OSTimeDlyHMSM(0, 0, 0, DelaySmall);
- RESET_A;
- RESET_B;
- OSTimeDlyHMSM(0, 0, 0, DelaySmall);
- }
- }
- else
- {
- for(i = 0; i < n; i++)
- {
- RESET_A;
- SET_B;
- OSTimeDlyHMSM(0, 0, 0, DelaySmall);
- SET_A;
- SET_B;
- OSTimeDlyHMSM(0, 0, 0, DelaySmall);
- SET_A;
- RESET_B;
- OSTimeDlyHMSM(0, 0, 0, DelaySmall);
- RESET_A;
- RESET_B;
- OSTimeDlyHMSM(0, 0, 0, DelaySmall);
- }
- }
- }
作者: functions 时间: 2019-12-20 16:07
由于这里我们采用下面的步进电机,其每转步数为48,也就是说上面函数调用中n=12即可实现步进电机旋转一周的目的,也因此最小可控转角为360/12=30°。再通过计算求出旋转一步连接螺母可以移动的距离就能实现精确的距离控制,从而做一些机器人手臂、3D打印、喷墨、光盘托盘等机械部件的精确驱动模块。不过这里每步30°精度不太高,我在该项目中用的另一个商业版的步进电机驱动可以支持每转步数10000,是不是很厉害丫~
[attach]1364500[/attach]
作者: functions 时间: 2019-12-20 16:07
说明:
最近如何为编程爱好者设计一款好玩的智能硬件暂时停止更新(目前已至十),不是因为我要放弃该DIY的更新,而是因为当我把无线、显示、传感器等模块的驱动封装好之后,发现少一个核心的支持点对点、点对多以及广播的稳定的通信协议。于是,接下来一段时间可能会先谈linux内核专题,等时机成熟我再带一个适合X-OS的通信协议继续DIY我们的积木物联网系统。哈哈,再谈谈本篇的写作目的:一方面想让大家了解一下一个业余电子爱好者怎么做自己的电路板;另一方面总结下自己第一次打板遇到的小问题和DIY过程中的小乐趣~请大家多多支持,♪(^∇^*)
作者: 妖②零 时间: 2023-1-6 11:00
楼主,可以分享一下L6219的驱动代码?
作者: forgot 时间: 2023-1-6 18:34
板子很漂亮


作者: forgot 时间: 2023-1-10 08:40
这么老的贴子被挖出来,进来看看,感谢分享,赞一下
欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/) |
Powered by Discuz! X3.5 |