Robofun 機器人論壇

標題: 請問誰可以幫我解答一下程式哪裡錯誤? 謝謝 [打印本頁]

作者: yoll522    時間: 2009-9-12 15:10
標題: 請問誰可以幫我解答一下程式哪裡錯誤? 謝謝
本帖最後由 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[]={}; 』這串英文,

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

      謝謝
作者: 超新手    時間: 2009-9-12 17:49
試看看
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;
作者: yoll522    時間: 2009-9-12 20:51
感謝樓上的解答。

程式執行起來可以了,

但還是不能跑兩種路徑@@




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2