2010年1月23日 星期六

自動感應燈 (Light control with NXT)

http://4rdp.blogspot.com/2010/01/light-control-by-nxt.html?m=0

開始今年最長的寒假,出個題目給 NXT 同好們玩玩,它適合初學者練習,這個題目可以了解你會不會運用變數。

利用 NXT 超音波感應及顏色感應燈,設計一自動感應燈,當有人接近 30 cm 以內,讓顏色感應燈亮起,人員離開超過十秒鐘後,自動關閉感應燈。如果可以,將距離以及倒數時間顯示在螢幕上更好,當然你還想加其它更炫的點子,我也不反對。

程式設計的語言不限制,一週後會公告我的 NXC 及 NXT-G 程式碼給各位參考。

8 則留言:

  1. hi Bridan. 好久不見, 有題目我們就開始寫囉. this is a easy one.

    我們也開始寫LabVIEW for NXT的書了, 屆時還請您給我們指導.

    CAVE阿吉

    回覆刪除
  2. 阿吉,好久不見

    NXT 偶而玩玩,最近家中裝個自動感應燈,因此想出這個題目給初學者玩玩,說難不難,但是要注意細節。

    很期待您的新書發表,若要幫你看看文稿也可以,不然到時候再聚餐聊聊。

    祝您事業順利

    回覆刪除
  3. Dear Bridan:

    NXC改版已接近完成, 較前一版相比, 新增了bluetooth與I2C的部分, 到時候還要請您幫忙, 王品就不敢邀功了(上次已經給您請過一次了, haha).

    CAVE 1/31有LabVIEw for NXT研習, 敬邀您出席.(http://tw.myblog.yahoo.com/lego-caveschool/article?mid=2991)

    祝 好

    阿吉

    回覆刪除
  4. 阿吉:

    您客氣了,若不是有緣接觸了 NXT,恐怕沒機會認識您,至於NXT 研習,因為家中有事無法出席,敬請見諒,等一些事情安頓好後,自然會參與日後 CAVE 的盛會。

    祝 一切安好
    Bridan

    回覆刪除
  5. Dear Bridan:

    麻煩您幫忙看稿了, 真的很感謝. 以下是我學生用leJOS寫的版本, 30cm內有東西的話會顯示距離, 不然就開始倒數10秒, 倒數結束就關燈. 還請惠予意見.

    CAVE阿吉
    ===================================
    import lejos.nxt.*;
    import lejos.util.Delay;

    class AutoDetect
    {
    public static void main(String args[])
    {
    Button.ESCAPE.addButtonListener(new ButtonListener() {
    public void buttonPressed(Button b) {System.exit(0);}
    public void buttonReleased(Button b) {}
    });
    UltrasonicSensor sonic = new UltrasonicSensor(SensorPort.S1);
    LightSensor color = new LightSensor(SensorPort.S2);
    float timeOut = 100f;
    color.setFloodlight(false);
    while(true)
    {
    LCD.clear();
    if(sonic.getDistance()<=30)
    {
    color.setFloodlight(true);
    LCD.drawString("Distance:" + sonic.getDistance() + "cm", 0, 0);
    timeOut = 100f;
    Delay.msDelay(100);
    }
    else if(color.isFloodlightOn())
    {
    LCD.drawString((int)(timeOut/10f+1) + "s remaining", 0, 0);
    Delay.msDelay(100);
    timeOut--;
    if(timeOut==0) color.setFloodlight(false);
    }
    }
    }
    }

    回覆刪除
  6. 阿吉您好

    leJOS 我並未使用過,不過程式語法大同小異,它像是 C 與 Java 的混體,我還是可以看出在幹什麼。

    首先,將程式複製到 Windows 記事本重新排版,比較容易閱讀,
    發現您的學生用 float 浮點數,有點浪費記憶空間,建議改成整數程式會變小,
    先清除畫面,如果有人靠近顯示距離,時間間隔採 0.1 sec,時間誤差會在 0.1 sec 之內,控制更精準,
    離開後改顯示時間倒數,最後燈熄掉,畫面也清掉。
    Delay.msDelay(100),可以提出來共用,讓程式更精簡。
    這是一個不錯的程式。

    回覆刪除
  7. hi,Bridan:
    我是探奇教室的忠實讀者,經常向邱老師請益,也進而得知研發養成所有很多有趣的題目。
    關於自動感應燈,看到大家運用各種不同的方式解決問題真的很厲害與佩服!因為看到大家似乎沒有使用robolab來設計,所以我試著用robolab來設計,供大家參考:
    我把連結放在:
    http://cmackimo.blogspot.com/2010/02/nxt-robolab.html

    備註:
    robolab好像無法順利將感應器的燈自由關閉或開啟,所以我用LED燈替代。

    回覆刪除
  8. 薛老師

    歡迎您的加入,玩 RCX 您應該是資深前輩,通常機器人競賽,都是青年學子參加,像我們這些成年人沒機會,所以我就出一些好玩的題目,給大家動動腦動動手,程式有寫出來就上傳分享。

    以前沒機會認識我的讀者群,也藉此活動讓許多高手一一現身,趁寒假期間打鐵趁熱,我還會再出幾題,給大家活動筋骨。

    回覆刪除