標題:
搬運色塊 巡游景點 巡線機器人小車的設計資料下載
[打印本頁]
作者:
rhzimo
時間:
2017-6-25 01:19
標題:
搬運色塊 巡游景點 巡線機器人小車的設計資料下載
如題!!�。。。。。。。。。。�
0.png
(53.69 KB, 下載次數(shù): 87)
下載附件
2017-6-25 02:35 上傳
包含以下資料:
示例程序\
2017春《計算機編程能力實訓》安排.doc
QTI巡線傳感器說明及尋線策略.docx
《計算機編程能力實訓》動員-基于教育機器人.ppt
任務書1_智能搬運機器人的設計與實現(xiàn)_17春.doc
任務書2-巡游機器人設計與實現(xiàn)_17春.doc
程序包含:
threeQTI-3個QTI傳感器的巡線程序.c
巡游-一個景點-基于數(shù)組實現(xiàn).c
巡游-一個景點-非數(shù)組實現(xiàn).c
搬運-E點黑色.c
部分單片機源程序預覽如下:
/************************************************
程序功能:搬運1個色塊: E點,黑色
舵機連接:左輪 P1_1
右輪 P1_0
QTI傳感器連接:從左至右 P2_4 P2_3 P2_2 P2_1
程序編寫調試:王淑鴻 2016-6
************************************************/
#include <Boebot.h>
#include <uart.h>
#define uint unsigned int
#define uchar unsigned char
void fastforward(void); //快速前進1步
void slowforward(void); //慢速前進1步
void slowerback(void); // 慢速后退1步
void turn_left(uint n); //左轉
void turn_right(uint n); //右轉
void zhixing(int n); //向前直行
void daotui(int i); //后退
void check_left(void); //小幅向左
void check_right(void); //小幅向右
void Get_QTI_State(void); //獲取傳感器返回值
void Follow_Line(void); //巡線
void Get_E(void) ; //取E點物塊,取到中心線上
void Put_Black(void); // 將中心線上的黑色色塊推到目標位置
void BackToZero(void); //從中心線回到起始區(qū)域
uchar QTIState;
uint RIGHT90=20;
uint RIGHT45=10;
uint RIGHT180=35;
uint LEFT90=25;
uint LEFT45=13;
void fastforward(void) //快速前進
{
P1_0=1;
delay_nus(1350);
P1_0=0;
delay_nms(20);
P1_1=1;
delay_nus(1650);
P1_1=0;
delay_nms(20);
}
void slowforward(void) //慢速前進
{ P1_0=1;
delay_nus(1450);
P1_0=0;
delay_nms(20);
P1_1=1;
delay_nus(1550);
P1_1=0;
delay_nms(20);
}
void slowerback(void) // 慢速后退
{
P1_0=1;
delay_nus(1550);
P1_0=0;
delay_nms(20);
P1_1=1;
delay_nus(1450);
P1_1=0;
delay_nms(20);
}
void turn_left(uint n) //左轉
{
int i;
for(i=0;i<=n;i++)
{
P1_0=1;
delay_nus(1450);
P1_0=0;
delay_nms(20);
P1_1=1;
delay_nus(1450);
P1_1=0;
delay_nms(20);
}
}
void turn_right(uint n) //右轉
{
int i;
for(i=0;i<=n;i++)
{
P1_0=1;
delay_nus(1550);
P1_0=0;
delay_nms(20);
P1_1=1;
delay_nus(1550);
P1_1=0;
delay_nms(20);
}
}
void zhixing(int n) //直行
{
int a;
for(a=0;a<=n;a++)
fastforward();
}
void daotui(int n) //慢速倒退
{
int a;
for(a=0;a<=n;a++)
slowerback();
}
void check_left(void) //小幅向左
{
P1_0=1;
delay_nus(1400);
P1_0=0;
delay_nms(20);
P1_1=1;
delay_nus(1500);
P1_1=0;
delay_nms(20);
}
void check_right(void) //小幅向右
{
P1_1=1;
delay_nus(1600);
P1_1=0;
delay_nms(20);
P1_0=1;
delay_nus(1500);
P1_0=0;
delay_nms(20);
}
void Get_QTI_State(void) //獲取傳感器返回值
{
QTIState=P2&0x1e; //P2_4 P2_3 P2_2 P2_1
QTIState=QTIState/2; //右移1位
}
void Follow_Line(void) //巡線
{
Get_QTI_State();
switch(QTIState)
{
case 4: check_left() ;break; //傳感器返回值:0100
case 2: check_right();break; //傳感器返回值:0010
case 8: check_left() ;break; //傳感器返回值:1000
case 12: check_left() ;break; //傳感器返回值:1100
case 14: check_left() ;break; //傳感器返回值:1110
case 1: check_right();break; //傳感器返回值:0001
case 3: check_right();break; //傳感器返回值:0011
case 7: check_right();break; //傳感器返回值:0111
default: slowforward();break;
}
}
void Get_E(void) //取E點物塊,取到中心線上
{
int i;
while(QTIState!=0x0f) //當不是全黑時,巡線
Follow_Line();
zhixing(6); //直行一小段,調整位置
turn_right(RIGHT90); //右轉90度
while(QTIState!=0x00) //當不是全白時,巡線
Follow_Line();
zhixing(6);
turn_right(RIGHT180);
while(QTIState!=0x0f) //當不是全黑時,巡線
Follow_Line();
zhixing(6);
turn_left(LEFT90); //左轉90度
for(i=0;i<40;i++)
Follow_Line();
turn_right(RIGHT180);
}
void Put_Black(void) // 將中心線上的黑色色塊推到目標位置
{
int i;
while(QTIState!=0x0f) //當不是全黑時,巡線
Follow_Line();
zhixing(6);
turn_right(RIGHT45);
while(QTIState!=0x00) //當不是全白時,巡線
Follow_Line();
zhixing(6);
while(QTIState!=0x0f) //當不是全黑時,巡線
Follow_Line();
daotui(20);
turn_right(RIGHT180);
while(QTIState!=0x00) //當不是全白時,巡線
Follow_Line();
zhixing(6);
while(QTIState!=0x0f) //當不是全黑時,巡線
Follow_Line();
zhixing(6);
turn_left(LEFT45);
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
課程設計-自通-機器人-17春.rar
(1.59 MB, 下載次數(shù): 32)
2017-6-25 01:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2017-6-25 02:39
好資料,51黑有你更精彩!!!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1