置頂文字

歡迎來訪 !! 如有任何問題歡迎一起討論或是 eMail 給我 legorunmail@Gmail.com

2010年10月19日 星期二

樂高 NXT 按鈕與NXC 關係

樂高 NXT 本體上有四顆實體按鈕:左、中 (Enter)、右、下 (Exit)

這幾顆按鈕在NXC的對應名稱:BTNLEFT、BTNCENTER、BTNRIGHT、BTNEXIT

常用的 Function
  1. 按鈕是否有按下:bool  ButtonPressed( const byte  btn, bool  resetCount  ) 
  2. 計算按幾次:byte ButtonPressCount  ( const byte  btn  )  
  3. 等待某個按鈕是否壓下:until(ButtonPressed(BTNCENTER, false)==1)


下面的程式是測試 A Port馬達的正反轉功能,當按一下左 Button後馬達停止並等待 Enter鈕的按下啟動馬達,當按一下右 Button則馬達反向驅動。

task main(){
    string strMsg;
    int iPower=30;
    while(true){
        if(ButtonPressed(BTNLEFT, false)){
            Off(OUT_A);
            ClearScreen();
            iPower=30;
            TextOut(0,LCD_LINE2,"Press CenterBtn");
            TextOut(0,LCD_LINE3,"Waiting Start");
            until(ButtonPressed(BTNCENTER, false)==1);
            ClearScreen();
        }
        if (ButtonPressed(BTNRIGHT, false)){
            Off(OUT_A);
            ClearScreen();
            iPower=-30;
            TextOut(0,LCD_LINE2,"Press CenterBtn");
            TextOut(0,LCD_LINE3,"Waiting Start");
            until(ButtonPressed(BTNCENTER, false)==1);
            ClearScreen();
        }
        strMsg=NumToStr(iPower);
        strMsg="Power Way="+strMsg;
        TextOut(0,LCD_LINE2,strMsg);
        OnFwd(OUT_A,iPower);
    }
}

3 則留言:

  1. 剛好看到這篇實在太好了,最近在寫關於讀取按鈕的程式,NXC好像沒支援事件驅動,寫起來有點不太習慣

    回覆刪除
  2. 能夠幫的上忙真好.....大家互相交流

    回覆刪除
  3. 只能用Pressed嗎? 按下去再放開的要如何寫

    回覆刪除