创意之星模块化机器人实验程序Word格式.docx
《创意之星模块化机器人实验程序Word格式.docx》由会员分享,可在线阅读,更多相关《创意之星模块化机器人实验程序Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
OxFF;
i++)
{for(j=0;
j<
0xFF;
j++);
}
BEEP_ON;
BEEP_OFF;
IO口控制实验
#include"
Public.h"
#include"
Usertask.h"
voiduser_task(void)
uint8io_in;
uint8io_out;
uint8temp8;
uint16temp16;
gpio_mode_set(OxOOFF);
write_gpio(0xFF00);
temp16=read_gpio();
io_in=(uint8)(temp16>
>
8);
temp8=(io_in&
0x80);
if(temp8==0)
io_out=0x01;
while(io_out)
write_gpio(~((uint16)io_out));
delay(5);
〃延时5X20MS=0.1sio_out<
<
=1;
delay(5);
elsewrite_gpio(0xFF00);
}_
第二次实验:
多自由度串联式机械手
#include"
#include"
{_
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[4]=90+90;
〃舵机3
array_rc[5]=170;
rc_moto_control(array_rc);
〃将舵机运动信息交给舵机运动函数,实现舵机运动
delay(50);
〃延时50*20MS=1S给舵机提供反应时间,此反应时间应大于舵机实际运动所需时间
array_rc[0]=90-90;
array_rc[2]=90-90;
array_rc[3]=170;
array_rc[4]=90+90;
rc_moto_control(array_rc);
delay(50);
array_rc[1]=170;
array_rc[4]=90;
array_rc[2]=90-90;
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;
rc_moto_control(array_rc);
第三次实验:
简易四足机器人
〃舵机控制数组长度为24,可控制12路舵机,舵机运动函数要求array_rc[偶数]为舵机目标角度值,array_rc[奇数]为舵机运动速度值
array_rc[0]=90+45;
array_rc[1]=255;
array_rc[2]=90-45;
〃舵机2目标角度设置array_rc[3]=255;
〃舵机2转动速度设置array_rc[4]=90-45;
〃舵机3
array_rc[5]=255;
array_rc⑹=90+45;
//舵机4array_rc[7]=255;
//延时50*20MS=1S给舵机提供反应时间,此反应时间应大于舵机实际运动所需时间
array_rc[1]=255;
array_rc[3]=255;
array_rc[5]=255;
array_rc[6]=90;
array_rc[7]=255;
第四次实验:
轮式机器人运动控制实验
走正方形:
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,转动时间30X0.1=3秒。
范围为0-255,超过此范围程序会丢弃此数据
array_dc[2]=0;
//电机2,反转最大速度
array_dc[3]=10;
array_dc[4]=0;
//电机3,正转最大速度
array_dc[5]=10;
array_dc[6]=0;
//电机4,反转最大速度
array_dc[7]=10;
dc_moto_control(array_dc);
〃调用直流电机运动控制函数dc_moto_control(),参数为电机控制数组名
delay(150);
//给电机反应时间150X20MS=3s,此反应时间应不小于电机实际运动时间
array_dc[1]=60;
array_dc[2]=0xFE;
array_dc[3]=60;
array_dc[4]=0xFE;
array_dc[5]=60;
array_dc[7]=60;
dc_moto_control(array_dc);
走“8”字形:
#inelude"
uint8i;
for(i=0;
i<
3;
dc_moto_control(array_dc);
〃给电机反应时间150x20MS=3s,此反应时间应不小于电机实际运动时间
array_dc[0]=0xFE;
array_dc[2]=OxFE;
array_dc[4]=OxFE;
array_dc[6]=OxFE;
delay(150);
dc_moto_control(array_dc);
array_dc[6]=0xFE;
a