Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2557|回復: 2
打印 上一主題 下一主題

請問誰可以幫我解答一下程式哪裡錯誤? 謝謝

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-12 15:10:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 yoll522 於 2009-9-12 15:12 編輯

//*********************************
//Major program
//*********************************

const unsigned char dir_beeline[]={};     // Command Code
            // 【1:turn right 3:turn back 5:turn left 0:stop】

int main()
{
InitIO( ) ;// Initialize I/O
InitOC( ) ;// Initialize OC
Init_variable( ) ;// Initialize basic value
InitMeunal( ) ;// Initialize menual mode
InitTimer( ) ;// Initialize Timer
while(1);
}

這是當初最原始的程式,

如果在

const unsigned char dir_beeline[]={}; 這邊輸入數值的話,就可以依照輸入的數值執行動作

例如:

const unsigned char dir_beeline[]={1,1,3,5,0};

這樣機器就會跑『右轉、右轉、迴轉、左轉、停止』

==================================================


可是我想要讓這台機器跑兩種不同的路徑,

當我按下按鍵1的時候,讓他跑右轉、迴轉、停止;

當我按下按鍵2的時候,讓他跑左轉、迴轉、停止。

所以我寫成了這樣:


//*********************************
//Major program
//*********************************

const unsigned char dir_beeline[]={};      // Command Code
        // 【1:turn right 3:turn back 5:turn left 0:stop】


int main()
{

TRISDbits.TRISD1=1 ;  // 按鍵1
TRISDbits.TRISD2=1 ; // 按鍵2

int a=0;
int b=0;

if(PORTDbits.RD1==0){
a=a+1 ;
}

if(a==1){
InitIO( ) ;// Initialize I/O
InitOC( ) ;// Initialize OC
Init_variable( ) ;// Initialize basic value
InitMeunal( ) ;// Initialize menual mode
InitTimer( ) ;// Initialize Timer

const unsigned char dir_beeline[]={1,3,0};
}

if(PORTDbits.RD2==0){
b=b+1 ;
}

if(b==1){
InitIO( ) ;// Initialize I/O
InitOC( ) ;// Initialize OC
Init_variable( ) ;// Initialize basic value
InitMeunal( ) ;// Initialize menual mode
InitTimer( ) ;// Initialize Timer

const unsigned char dir_beeline[]={5,3,0};
}
while(1);
}



結果不管我按下按鍵1或2,都只會跑按下按鍵2的路徑,也就是左轉、迴轉、停止。

後來有人交我,要改成這樣:

PS:紅色是有更改的部份。



      unsigned char dir_beeline[]={};      // Command Code
                 // 【1:turn right 3:turn back 5:turn left 0:stop】

      int main()
      {
      TRISDbits.TRISD1=1 ;  // 按鍵1
      TRISDbits.TRISD2=1 ; // 按鍵2

      int a=0;
      int b=0;
      if(PORTDbits.RD1==0){
      a=a+1 ;
      }
      if(a==1){
      InitIO( ) ;// Initialize I/O
      InitOC( ) ;// Initialize OC
      Init_variable( ) ;// Initialize basic value
      InitMeunal( ) ;// Initialize menual mode
      InitTimer( ) ;// Initialize Timer
     dir_beeline[0]={1};
      dir_beeline[1]={3};
      dir_beeline[2]={0};
      }
      if(PORTDbits.RD2==0){
      b=b+1 ;
      }

      if(b==1){
      InitIO( ) ;// Initialize I/O
      InitOC( ) ;// Initialize OC
      Init_variable( ) ;// Initialize basic value
      InitMeunal( ) ;// Initialize menual mode
      InitTimer( ) ;// Initialize Timer
      dir_beeline[0]={5};
      dir_beeline[1]={3};
      dir_beeline[2]={0};
      }
      }

      結果程式反而連執行都不行,會說程式錯誤,後來研究,

      發現是如果只有出現『dir_beeline[]={}; 』這串英文,

      就一定會錯誤,不曉得哪位高手可以幫幫我。

      謝謝
2#
發表於 2009-9-12 17:49:40 | 只看該作者
試看看
unsigned char dir_beeline[3];      // Command Co

     dir_beeline[0]=1;
      dir_beeline[1]=3;
      dir_beeline[2]=0;
      

     dir_beeline[0]=5;
      dir_beeline[1]=3;

      dir_beeline[2]=0;
3#
 樓主| 發表於 2009-9-12 20:51:58 | 只看該作者
感謝樓上的解答。

程式執行起來可以了,

但還是不能跑兩種路徑@@
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-11 20:57 , Processed in 0.188239 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表