開始今年最長的寒假,出個題目給 NXT 同好們玩玩,它適合初學者練習,這個題目可以了解你會不會運用變數。
利用 NXT 超音波感應及顏色感應燈,設計一自動感應燈,當有人接近 30 cm 以內,讓顏色感應燈亮起,人員離開超過十秒鐘後,自動關閉感應燈。如果可以,將距離以及倒數時間顯示在螢幕上更好,當然你還想加其它更炫的點子,我也不反對。
程式設計的語言不限制,一週後會公告我的 NXC 及 NXT-G 程式碼給各位參考。
2010年1月23日 星期六
自動感應燈 (Light control with NXT)
標籤:
腦力激盪,
LEGO MINDSTORMS NXT
訂閱:
張貼留言 (Atom)
hi Bridan. 好久不見, 有題目我們就開始寫囉. this is a easy one.
回覆刪除我們也開始寫LabVIEW for NXT的書了, 屆時還請您給我們指導.
CAVE阿吉
阿吉,好久不見
回覆刪除NXT 偶而玩玩,最近家中裝個自動感應燈,因此想出這個題目給初學者玩玩,說難不難,但是要注意細節。
很期待您的新書發表,若要幫你看看文稿也可以,不然到時候再聚餐聊聊。
祝您事業順利
Dear Bridan:
回覆刪除NXC改版已接近完成, 較前一版相比, 新增了bluetooth與I2C的部分, 到時候還要請您幫忙, 王品就不敢邀功了(上次已經給您請過一次了, haha).
CAVE 1/31有LabVIEw for NXT研習, 敬邀您出席.(http://tw.myblog.yahoo.com/lego-caveschool/article?mid=2991)
祝 好
阿吉
阿吉:
回覆刪除您客氣了,若不是有緣接觸了 NXT,恐怕沒機會認識您,至於NXT 研習,因為家中有事無法出席,敬請見諒,等一些事情安頓好後,自然會參與日後 CAVE 的盛會。
祝 一切安好
Bridan
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);
}
}
}
}
阿吉您好
回覆刪除leJOS 我並未使用過,不過程式語法大同小異,它像是 C 與 Java 的混體,我還是可以看出在幹什麼。
首先,將程式複製到 Windows 記事本重新排版,比較容易閱讀,
發現您的學生用 float 浮點數,有點浪費記憶空間,建議改成整數程式會變小,
先清除畫面,如果有人靠近顯示距離,時間間隔採 0.1 sec,時間誤差會在 0.1 sec 之內,控制更精準,
離開後改顯示時間倒數,最後燈熄掉,畫面也清掉。
Delay.msDelay(100),可以提出來共用,讓程式更精簡。
這是一個不錯的程式。
hi,Bridan:
回覆刪除我是探奇教室的忠實讀者,經常向邱老師請益,也進而得知研發養成所有很多有趣的題目。
關於自動感應燈,看到大家運用各種不同的方式解決問題真的很厲害與佩服!因為看到大家似乎沒有使用robolab來設計,所以我試著用robolab來設計,供大家參考:
我把連結放在:
http://cmackimo.blogspot.com/2010/02/nxt-robolab.html
備註:
robolab好像無法順利將感應器的燈自由關閉或開啟,所以我用LED燈替代。
薛老師
回覆刪除歡迎您的加入,玩 RCX 您應該是資深前輩,通常機器人競賽,都是青年學子參加,像我們這些成年人沒機會,所以我就出一些好玩的題目,給大家動動腦動動手,程式有寫出來就上傳分享。
以前沒機會認識我的讀者群,也藉此活動讓許多高手一一現身,趁寒假期間打鐵趁熱,我還會再出幾題,給大家活動筋骨。