多自由度人形双足舞蹈机器人
——疯壳·机器人开发系列
整机代码
1相关简介
本章将结合前面实验章节,完成机器人的整机代码。
我们的机器人由 17 个舵机控制各个关节,拥有在线调试模式和脱机模式两种模式。在脱机模式下,我们的机器人将读取外部 Flash 中的数据,完成相应的动作组。而在线调试模式下,机器人将与我们所提供的上位机软件 robotCtrl 连接,实现在线控制舵机、在线运行动作组以及在线下载动作组等功能。
2硬件设计
硬件方面,关于外部 Flash 和串口 Uart 部分,可以参照前面的章节。本次将控制 17 个舵机的转动,17 个 IO 口与 3 个 74HC244 相连接,间接控制 17 路舵机的信号。
![1.png 1.png](https://static.assets-stash.eet-china.com/forum/202208/24/172841a5ffi6185jcq57vq.png)
图 1
3软件设计
我们整个软件的流程如下:
![2.png 2.png](https://static.assets-stash.eet-china.com/forum/202208/24/172849q0732n2xuebe2eex.png)
图2
代码开始运行之后,首先进行初始化。
在初始化进程中,我们完成了串口初始化、IO 口初始化、定时器初始化等。关于这三个部分可以查看前面的章节。
初始化完毕之后,就进入一个模式选择。我们的模式选择是通过测量 IO 口P01 的电压开控制机器人的模式,当 P01 为低电平时进入脱机模式,反之进入在线调试模式。如下图所示,两根线接上就是脱机模式,拔掉就是在线调试模式。
![3.png 3.png](https://static.assets-stash.eet-china.com/forum/202208/24/172859rvy1kapyv8y1alzr.png)
图3
我们先进入在线调试模式。在线调试模式是通过上位机软件 robotCtrl 与我们的 IAP15W4K61S5 单片机通信。其实也就是通过串口通信,如同前面的串口控
制舵机转动章节。但要注意的是,我们上位机软件 robotCtrl 功能对应发送的字符串是固定的,所以我们 IAP15W4K61S5 单片机处理字符程序也必须相对应。
![代码1.0.png 代码1.0.png](https://static.assets-stash.eet-china.com/forum/202208/24/172907q6yyshzxm0xxyvw0.png)
![代码1.1.png 代码1.1.png](https://static.assets-stash.eet-china.com/forum/202208/24/172913ogaynqr5pqg9bbgg.png)
![代码1.2.png 代码1.2.png](https://static.assets-stash.eet-china.com/forum/202208/24/172921skejy66fi5vmhqlh.png)
![代码1.3.png 代码1.3.png](https://static.assets-stash.eet-china.com/forum/202208/24/172928p708uhmue2v26l0u.png)
代码1
void uart_int(void) interrupt 4 using 1 是我们的串口接收中断函数,将上位机
软件 robotCtrl 发送的字符进行处理,执行操作命令,存储舵机角度数据到我们所建立的数据缓冲区 PnextBuff[140]里。
当接收到上位机软件发送的下载命令字符时,IAP15W4K61S5 单片机就将缓冲区 PnextBuff[140]中的动作组数据下载到外部 Flash 中。在脱机模式下,单片机就读取外部 Flash 中的动作组数据,然后控制舵机,做出相应的动作。外部 Flash 的读写操作比较简单,可以参考前面的外部 Flash 读写章节。
4实验现象
首先打开下载软件 STC-ISP。
![4.png 4.png](https://static.assets-stash.eet-china.com/forum/202208/24/172942hqrrgv277r82go5r.png)
图 4
(1)点击 Keil 仿真设置,添加 STC 相关的头文件。STC 的相关头文件路径是我们之前安装 Keil C51 的路径,如果之前采用的默认路径,那么选择C 盘 Keil 文件夹。
![5.png 5.png](https://static.assets-stash.eet-china.com/forum/202208/24/172951keufpfwwssrjsofp.png)
图 5
(2)添加完 STC 相关的头文件,点击弹窗中的确定。
![6.png 6.png](https://static.assets-stash.eet-china.com/forum/202208/24/173000njhyqeq2rry58hyr.png)
图 6
(3)设置单片机的型号、最低波特率、最高波特率如下图所示,硬件选项等选项默认即可。串口号根据实际情况选择。
![7.png 7.png](https://static.assets-stash.eet-china.com/forum/202208/24/173008rx2gx72c7tkvx3tp.png)
图 7
(4)点击打开程序文件,选择我们例程中的.hex 文件。
![8.png 8.png](https://static.assets-stash.eet-china.com/forum/202208/24/173018pvin9yfngei2invn.png)
图 8
(5)点击下载/编程,下载代码。
![9.png 9.png](https://static.assets-stash.eet-china.com/forum/202208/24/173027m4tehkbzcebvraye.png)
图 9
(6)按一下电路板上面的 RST 按键,完成下载。
![10.png 10.png](https://static.assets-stash.eet-china.com/forum/202208/24/173041wklcqs1lsiqnchqc.png)
图 10
代码下载完之后, 最终机器人就完成, 大家可以通过通过上位机软件robotCtrl 下载我们的街舞文件,然后脱机运行,可以看到机器人开始跳舞。
文件下载请点击:
![](static/image/filetype/pdf.gif)
全部回复 0