全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1047
推到 Plurk!
推到 Facebook!

足球機器人設定

缺席
walkincloud
一般會員


發表:1
回覆:3
積分:0
註冊:2005-05-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-06 20:44:08 IP:203.72.xxx.xxx 未訂閱
unsigned char data ballcolor _at_ 0x30; //球的顏色值,0為紅,1為綠,2黃 unsigned char data ballx _at_ 0x31; //球的X值 unsigned char data bally _at_ 0x32; //球的Y值 unsigned char data door_l _at_ 0x33; //球門的左邊界值 unsigned char data door_r _at_ 0x34; //球門的右邊界值 unsigned char data door_t _at_ 0x35; //球門的上邊界值 unsigned char data door_d _at_ 0x36; //球門的下邊界值 那位高人可否解釋一下這個要如何設定
wu-eric
中階會員


發表:14
回覆:82
積分:64
註冊:2004-03-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-07 15:54:33 IP:210.66.xxx.xxx 未訂閱
若你的資訊只有這樣,實在很難回答耶
walkincloud
一般會員


發表:1
回覆:3
積分:0
註冊:2005-05-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-08 19:17:19 IP:203.72.xxx.xxx 未訂閱
#include "Cpu8052.h"
#include 
#include 
/*下面的副函式是用來與SENSOR聯繫*/
/*-----------------------------------------------------*/
extern void I2C_StopBit(void);
extern void I2C_StartBit(void);
extern void I2CSendData(unsigned char value);
extern void IR001Rece_I2CData(void);
extern void Check_StartBit(void);
/*-----------------------------------------------------*/
/*-----------------------------------------------------*/
unsigned char data ballcolor _at_ 0x30; //球的顏色值,0為紅,1為綠,2為黃
unsigned char data ballx _at_ 0x31; //球的X值
unsigned char data bally _at_ 0x32; //球的Y值
unsigned char data door_l _at_ 0x33; //球門的左邊界值
unsigned char data door_r _at_ 0x34; //球門的右邊界值
unsigned char data door_t _at_ 0x35; //球門的上邊界值
unsigned char data door_d _at_ 0x36; //球門的下邊界值
void delay(int dly)
{
  int dly1,dly2;
  for (;dly>0;dly--)
  for(dly1=70;dly1>0;dly1--)
  for(dly2=5;dly2>0;dly2--);
}
/*------------------------------------*/
/*右邊馬達轉動 */
/*fr=0為後退,fr=1為前進 */
/*stp為轉動步數,200為一圈 */
/*tim為時間,1最快 */
/*------------------------------------*/
void RRUN(int fr,int stp,int tim)
{
  int nowl; 
  while(stp && fr==1)
  {
  nowl=(P1&0xc0)>>6;
  nowl=nowl 1;
  if(nowl>3)
  nowl=0;
  P1=(P1&0x3f) nowl<<6;
  delay(tim);
  stp=stp-1;
  }
  while(stp && fr==0)
  {
    nowl=(P1&0xc0)>>6;
    nowl=nowl-1;
    if(nowl<0)
      nowl=3;
    P1=(P1&0x3f) nowl<<6;
    delay(tim);
    stp=stp-1;
  }
}
/*------------------------------------*/
/*左邊馬達轉動 */
/*fr=0為後退,fr=1為前進 */
/*stp為轉動步數,200為一圈 */
/*tim為時間,1最快 */
/*------------------------------------*/
void LRUN(int fr,int stp,int tim)
{
  int nowl;
  while(stp && fr==0)
  {
    nowl=(P1&0x30)>>4;
    nowl=nowl 1;
    if(nowl>3)
      nowl=0;
    P1=(P1&0xcf) nowl<<4;
    delay(tim);
    stp=stp-1;
  }
  while(stp && fr==1)
  {
    nowl=(P1&0x30)>>4;
    nowl=nowl-1;
    if(nowl<0)
       nowl=3;
    P1=(P1&0xcf) nowl<<4;
    delay(tim);
    stp=stp-1;
  }
}
/*------------------------------------*/
/*兩邊馬達轉動 */
/*fr=0為後退,fr=1為前進 */
/*stp為轉動步數,200為一圈 */
/*tim為時間,1最快 */
/*------------------------------------*/
void BOTHRUN(int fr,int stp,int tim)
{
  int nowl,nowr;
  while(stp && fr==0)
  {
    nowl=(P1&0xc0)>>6;
    nowl=nowl-1;
    if(nowl<0)
      nowl=3;
    nowl=nowl<<6;
    nowr=(P1&0x30)>>4;
    nowr=nowr 1;
    if(nowr>3)
      nowr=0;
    P1=(P1&0x0f) (nowr<<4) nowl;
    delay(tim);
    stp=stp-1;
  }
  while(stp && fr==1)
  {
    nowl=(P1&0xc0)>>6;
    nowl=nowl 1;
    if(nowl>3)
      nowl=0;
    nowl=nowl<<6;
    nowr=(P1&0x30)>>4;
    nowr=nowr-1;
    if(nowr<0)
      nowr=3;
    P1=(P1&0x0f) (nowr<<4) nowl;
    delay(tim);
    stp=stp-1;
  }
}    main()
{
  while(1)
  {
/*
    LRUN(0,200,1);
    delay(200);
    LRUN(1,200,1);
    delay(200);
    RRUN(0,200,1);
    delay(200);
    RRUN(1,200,1);
    delay(200);
    BOTHRUN(0,200,1);
    delay(200);
    BOTHRUN(1,200,1);
    delay(200);
*/
    Check_StartBit();
    IR001Rece_I2CData();
    if(ballx>16 && ballx<24 )
    {
      BOTHRUN(1,200,1);
      delay(200);
      BOTHRUN(0,200,1);
      delay(200);
    }
    else
      LRUN(1,15,1);
    I2C_StartBit();
    I2CSendData(0xff);
    I2CSendData(0xff);
    if(P0_0==0 && P0_1==0)
      I2CSendData(0x00);
    else if(P0_0==1 && P0_1==0)
      I2CSendData(0x01);
    else 
      I2CSendData(0x02);
    I2C_StopBit();      }
}
SORRY 這個是完整程式而目前的問題有 1.如何設定邊球場邊界及機器人起使點 unsigned char data ballx _at_ 0x31; //球的X值 unsigned char data bally _at_ 0x32; //球的Y值 就是 0x31 代表什麼意思? 2.要如何設定才能讓機器人跑的更快 P.S:下次我會直接幫你丟到回收區! 發表人 - ㊣ 於 2005/05/08 20:01:53

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-08 19:54:51 IP:203.71.xxx.xxx 未訂閱
1>ballx 這個資料的位址在 0x31=31H    2>取直線距離囉,兩點間的直線距離.走的距離短,自然就比較快.    
P.S: (1)這是你自己寫的嗎?
     (2)po程式碼請縮排
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
wu-eric
中階會員


發表:14
回覆:82
積分:64
註冊:2004-03-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-08 20:09:11 IP:210.66.xxx.xxx 未訂閱
引言: SORRY 這個是完整程式而目前的問題有 1.如何設定邊球場邊界及機器人起使點 unsigned char data ballx _at_ 0x31; //球的X值 unsigned char data bally _at_ 0x32; //球的Y值 就是 0x31 代表什麼意思? 2.要如何設定才能讓機器人跑的更快
1. 0x31,0x32 我想是X,Y值存放在記憶體中的位置 2. 下列方法可讓你的步進馬達快一倍,不過要看你的步進馬達是否可承受如此快的脈波,若無法承受,就只能在Delay函式中修改了 LRUN(0,200,0); delay(200); LRUN(1,200,0); delay(200); RRUN(0,200,0); delay(200); RRUN(1,200,0); delay(200); BOTHRUN(0,200,0); delay(200); BOTHRUN(1,200,0); delay(200); 3.最好附上你的電話,這樣可使大家更容易看 發表人 - Wu-Eric 於 2005/05/08 20:10:25
walkincloud
一般會員


發表:1
回覆:3
積分:0
註冊:2005-05-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-08 20:09:52 IP:203.72.xxx.xxx 未訂閱
這是前人所留下的.. 1.我是想問邊界值要如何設定,好比本來是50CM X 75CM 的場地 要調成100CM X 175CM 的場地,要如何調整程式設定 2.要如何調整才能讓機器人輪子轉快點
walkincloud
一般會員


發表:1
回覆:3
積分:0
註冊:2005-05-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-08 20:15:23 IP:203.72.xxx.xxx 未訂閱
[1. 0x31,0x32 我想是X,Y值存放在記憶體中的位置 2. 下列方法可讓你的步進馬達快一倍,不過要看你的步進馬達是否可承受如此快的脈波,若無法承受,就只能在Delay函式中修改了 LRUN(0,200,0); delay(200); LRUN(1,200,0); delay(200); RRUN(0,200,0); delay(200); RRUN(1,200,0); delay(200); BOTHRUN(0,200,0); delay(200); BOTHRUN(1,200,0); delay(200); 可不可以勞煩解釋一下為什麼要這要改以及程式的意思 PS我在此先承認我的C語言是超低空過關 發表人 - Wu-Eric 於 2005/05/08 20:10:25 [/quote]
系統時間:2024-05-05 8:31:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!