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