- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
else write_gpio(0xFF00);
}
}
第二次实验:多自由度串联式机械手
#i nclude"P ublic.h"
#in clude "Usertask.h"
void user_task(void)
{
uint8array_rc[23]={0};〃舵机控制数组长度为24,可控制12路舵机,
舵机运动函数要求array_rc[偶数]为舵机目标角度值,array_rc[奇数]为舵机 运动速度值
array_rc[0]=90;//舵机1,中位为0度(对应数值90),目标角度
+20度。取值围0-180,超过此围程序会丢弃此数据
array_rc[1]=170;〃舵机1,速度为170。取值围0-255,超过围程序会
丢弃此数据
array_rc[2]=90;〃舵机2目标角度设置
array_rc[3]=170;〃舵机2转动速度设置
array_rc[0]=90+45;//舵机1,中位为0度(对应数值90),目标角
度+20度。取值围0-180,超过此围程序会丢弃此数据
array_rc[3]=255;〃舵机2转动速度设置
array_rc[4]=90-45;〃舵机3
array_rc[5]=255;
array_rc⑹=90+45;//舵机4
array_dc[1]= 60;
array_dc[2]=0xFE;
delay(50);
}
第三次实验:简易四足机器人
#i nclude "P ublic.h"
#in clude "Usertask.h"
void user_task(void)
{
uint8array_rc[23]={0};〃舵机控制数组长度为24,可控制12路舵机,
舵机运动函数要求array_rc[偶数]为舵机目标角度值,array_rc[奇数]为舵机 运动速度值
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;
array_rc[1]=170;
array_rc[2]=90-90;
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;
rc_moto_co ntrol(array_rc);
array_rc[2]=90-90;
array_rc[3]=170;
array_rc[4]=90+90;
array_rc[5]=170;
rc_moto_co ntrol(array_rc);
delay(50);
array_rc[0]=90;
array_rc[1]=170;
array_rc[2]=90;
array_rc[3]=255;
array_rc[4]=90;
array_rc[5]=255;
array_rc[6]=90;
array_rc[7]=255;
rc_moto_co ntrol(array_rc);
delay(50);
第四次实验:轮式机器人运动控制实验
走正方形:
#i nclude "Public.h"
第一次实验:MultiFLEX控制卡编程实验 蜂鸣器实验
#i nclude <avr/io.h>
#defi ne BEEP_ON PORTG |= _BV(PG3)
#defi ne BEEP_OFF PORTG &= ~_BV(PG3) int main(v oid)
{
in ti,j;
PORTG = 0;
array_rc[7]=255;
rc_moto_co ntrol(array_rc);〃将舵机运动信息交给舵机运动函数,实
现舵机运动
delay(50);〃延时50*20MS=1S,给舵机提供反应时间,此反应时间应大
于舵机实际运动所需时间
array_rc[0]=90;
array_rc[1]=255;
array_rc[2]=90;
DDRG = 0xff;
while(1)
{
for(i=0;i<OxFF;i++)
{for(j=0;j<0xFF;j++);}
BEEP_ON;
for(i=0;i<0xFF;i++)
{for(j=0;j<0xFF;j++);}
BEEP_OFF;
}
}
IO口控制实验
#i nclude "Public.h"
#include "Usertask.h"
array_rc[5]=170;
rc_moto_co ntrol(array_rc);〃将舵机运动信息交给舵机运动函数,实
现舵机运动
delay(50);〃延时50*20MS=1S,给舵机提供反应时间,此反应时间应大
于舵机Fra Baidu bibliotek际运动所需时间
array_rc[0]=90-90;
array_rc[1]=170;
#in elude "Usertask.h" void user_task(void)
{
uint8array_dc[7]={0};〃电机控制数组长度为8,可控制4路舵机,
电机运动函数要求array_dc[偶数]为电机转动速度,array_rc[奇数]为电机转 动时间
array_dc[0]= 0;//电机1,正转最大速度(0为正转最大转速,
0xFE=254为反转最大转速,0x80=128代表电机停止)。围为0-254,超过此围
程序会丢弃此数据
array_dc[1]= 10;//电机1,转动时间30X).仁3秒。围为0-255,超
过此围程序会丢弃此数据
dc_moto_co ntrol(),参数为电机控制数组名
实际运动时间
array_dc[0]= 0;
void user_task(void)
{
uin t8 io_in;
uint8 io_out;
uin t8 temp8;
ui nt16 temp16;
gpio_mode_set(OxOOFF); write_gpio(0xFF00);
while(1)
{
temp16 = read_gpio(); io_in = (ui nt8)(temp16>>8); temp8=(io_i n&0x80);
if(temp8==0)
{
io_out=0x01;
while(io_out)
{ _
write_gpio(~((ui nt16)io_out)); delay(5);〃延时5>20MS=0.1s
io_out<<=1;
write_gpio(~((ui nt16)io_out)); delay(5);
}
}