robolab在工程學(xué)的應(yīng)用機(jī)器人第二章16k綠帶_第1頁
robolab在工程學(xué)的應(yīng)用機(jī)器人第二章16k綠帶_第2頁
robolab在工程學(xué)的應(yīng)用機(jī)器人第二章16k綠帶_第3頁
robolab在工程學(xué)的應(yīng)用機(jī)器人第二章16k綠帶_第4頁
robolab在工程學(xué)的應(yīng)用機(jī)器人第二章16k綠帶_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余54頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第二章基于樂高組件和ROBOLAB軟件的工程教學(xué)基于樂高組件和ROBOLAB軟件的工程教學(xué)第二章PAGE58此書授權(quán)西覓亞翻譯,版權(quán)所有PAGE59此書授權(quán)西覓亞翻譯,版權(quán)所有基于樂高組件和ROBOLAB軟件的工程教學(xué)第二章此書授權(quán)西覓亞翻譯,版權(quán)所有第二章綠帶基礎(chǔ)設(shè)計初級發(fā)明家初級導(dǎo)航者本章可獲得的“技能牌”基礎(chǔ)設(shè)計初級發(fā)明家初級導(dǎo)航者初級導(dǎo)航者初級發(fā)明家輸出初級導(dǎo)航者初級發(fā)明家輸出等待參數(shù)輸出等待參數(shù)注解排列調(diào)試LCD基礎(chǔ)編程2.1綠帶挑戰(zhàn)綠帶挑戰(zhàn)涉及初級導(dǎo)航者和初級發(fā)明家的編程技能。2.1.1走指定的距離挑戰(zhàn):應(yīng)用導(dǎo)航者級別,設(shè)計、搭建和校準(zhǔn)一輛能夠行走指定距離的車。初級導(dǎo)航者初級導(dǎo)航者初級發(fā)明家基礎(chǔ)設(shè)計技能牌:或或步驟:實驗設(shè)置:在課堂上:老師需要一條線(用電工或裝飾膠帶)、卷尺和一塊沒有障礙物的場地(讓機(jī)器人行駛)。老師還要給學(xué)生提供一臺裝有ROBOLAB軟件的計算機(jī),可以為小車編程。在家:你需要用卷尺校準(zhǔn)你的小車(距離和時間的關(guān)系)。一定記住要問教師在課堂中機(jī)器人所行駛的地面是什么(例如:地毯還是瓷磚)。機(jī)器人設(shè)計:使用樂高的NXT建造一只由馬達(dá)驅(qū)動的小車。如果這是你的第一個設(shè)計挑戰(zhàn),我建議你來制作一輛像第一章中的簡單的小車。仿造別人的模型是完全可以的;畢竟你在這次的競賽中沒有對制作技巧進(jìn)行分級。編程:在導(dǎo)航者級別中(級別2或更高)為你的車編程,用馬達(dá)能量級1驅(qū)動,使其行走不同的時間并且記錄行走的距離。根據(jù)你的設(shè)計,典型的時間范圍應(yīng)當(dāng)在0-5.5秒之間,車對應(yīng)行走的距離大概是0-10英尺。校準(zhǔn)時間與距離之間的關(guān)系:使用電子表格(Excel)創(chuàng)建一幅圖表,顯示你的車在不同行駛時間下行走的距離(尺寸是英寸或厘米)。收集到的數(shù)據(jù)將作為數(shù)據(jù)點(diǎn)顯示在圖中。你需要為每個數(shù)據(jù)組加一條趨勢線(線性回歸)——在圖中要同時列出回歸的函數(shù)式和方差的數(shù)值。使用馬達(dá)能量級別3和5重復(fù)第一步和第二步,并把相應(yīng)數(shù)值描在同一張圖表中。校準(zhǔn)圖例課堂競賽把你的機(jī)器人和校準(zhǔn)圖帶到課堂;課堂競賽是看哪個機(jī)器人最接近且沒有超越指定距離線;機(jī)器人行走的距離到上課時才被告知(你應(yīng)當(dāng)復(fù)核老師所用的比賽場地類型);在教室,教師需要提供用于編程的計算機(jī)和ROBOLAB軟件;評分以機(jī)器人與指定距離線的遠(yuǎn)近程度來定;提示:使用新的電池,確保電池電量的不同對結(jié)果的影響。思考你的小車在什么樣的速度下會影響校準(zhǔn)圖準(zhǔn)確度。對你的校準(zhǔn)圖的準(zhǔn)確度和重復(fù)性做出評估。在創(chuàng)建了校準(zhǔn)圖后,測試一下,用回歸函數(shù)式預(yù)測出行駛的距離。評分:成績中,機(jī)器人的準(zhǔn)確度占80%,創(chuàng)意和美觀占20%。精確度創(chuàng)新和美觀A+:離線最近A:離線在6英寸以內(nèi)B:離線超過6英寸C:超過線D:啟動后車能行駛F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。2.1.2短程競速賽車挑戰(zhàn):應(yīng)用導(dǎo)航者4級或者發(fā)明家4級來設(shè)計并且制作一輛能用聲音自動啟動的機(jī)器人,還要能夠盡可能快的橫穿教室。初級發(fā)明家初級導(dǎo)航者初級發(fā)明家初級導(dǎo)航者基礎(chǔ)設(shè)計技能牌:或或步驟:實驗設(shè)置:這個挑戰(zhàn)你唯一需要做的就是清理出一塊場地可以用來賽車(最好有15到25英尺)。這項挑戰(zhàn)是個純粹的競賽,單個或者雙倍的被淘汰(由教師來說明)。每場競賽由教師擊掌或者吹哨開始。如果失敗的啟動(提前移動或者不移動)是將會被取消比賽資格的。機(jī)器人設(shè)計:唯一的約束是你不能來啟動你的機(jī)器人(當(dāng)比賽時機(jī)器人必須保持在地上),并且NXT在比賽時必須始終在機(jī)器人上。主要的觀點(diǎn)是想想有關(guān)齒數(shù)比和動力的關(guān)系。針對來說,使用越多的馬達(dá),越好。選擇合適的齒輪比,是一個真正的挑戰(zhàn)。用高速比的齒輪意味著啟動會很慢。相反的,用加速性的齒輪比會限制機(jī)器人的最高速度。兩者之間需要平衡。除了制作一個快速的機(jī)器人外,你應(yīng)該想一想怎樣來確保它的直線行走,這樣就不會撞到任何的課桌了,椅子或者其他任何物體了。當(dāng)然你還會在創(chuàng)造力上被分出等級,不要忘記花些時間在美學(xué)上,還有智能的設(shè)計。編程:你的程序必須有等待聲音啟動馬達(dá)的功能。另外,使用全速向前功能!燈光,音樂和武器都是可選項目。評分:成績中,機(jī)器人表現(xiàn)占80%,創(chuàng)意和美觀占20%。通過創(chuàng)意和美觀,優(yōu)化你的設(shè)計。精確度創(chuàng)新和美觀A+:離線最近A:離線在6英寸以內(nèi)B:離線超過6英寸C:超過線D:啟動后車能行駛F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。2.1.3盲人的拐杖編程基礎(chǔ)初級發(fā)明家編程基礎(chǔ)初級發(fā)明家初級導(dǎo)航者技能牌:或或步驟:實驗設(shè)置:機(jī)器人設(shè)計:這個項目并沒有真正涉及到機(jī)器人的本質(zhì)。你的作品是創(chuàng)造一個設(shè)備來幫助視覺上有困難的人在房間里導(dǎo)航——一種高科技來代替古老的白藤條。編程:你的程序可能需要用到等待功能以及像聽覺和觸覺提示來警告使用者障礙物的方向。評分:成績中,機(jī)器人的表現(xiàn)占50%,創(chuàng)意和美觀占50%。你的創(chuàng)意和美觀也會在你的設(shè)計作品上打分。精確度創(chuàng)新和美觀A+:離線最近A:離線在6英寸以內(nèi)B:離線超過6英寸C:超過線D:啟動后車能行駛F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。*這個設(shè)計挑戰(zhàn)的項目是活躍在中國樂高中心的JohnsonZhang設(shè)計的,一位西覓亞公司的設(shè)計師(中國上海)。2.1.4爬坡競賽挑戰(zhàn):應(yīng)用導(dǎo)航者級別4或者發(fā)明家級別4,設(shè)計和搭建一輛能夠通過觸動傳感器激活并能爬陡峭斜面的機(jī)器人。編程基礎(chǔ)初級發(fā)明家初級導(dǎo)航者編程基礎(chǔ)初級發(fā)明家初級導(dǎo)航者技能牌:或或步驟:實驗設(shè)置:只需要一個可以調(diào)整坡度的斜面,如:一張寬的板和一些積木塊?!暗琼敗倍x為在坡上爬完指定的距離(如12英寸),這個距離由老師預(yù)先說明。每次嘗試最多允許10秒鐘。機(jī)器人設(shè)計:設(shè)計并搭建一輛使用NXT、由馬達(dá)驅(qū)動的車,一旦車上的觸動傳感器被按下(由教師)小車應(yīng)當(dāng)開始行駛。唯一的搭建限制是最多使用兩個馬達(dá),并且在開始行駛后不能掉下任何部件。車子的圖例可以參照圖1.54和1.55。你只需要改動車子的齒輪比就可以了。應(yīng)當(dāng)考慮的設(shè)計要素有:齒輪傳動比、摩擦和機(jī)器人的重心。編程:此挑戰(zhàn)的程序相當(dāng)簡單,只需實現(xiàn)在驅(qū)動馬達(dá)前等待按下傳感器。提示:使用外接電源供電,避免太耗費(fèi)電池(馬達(dá)堵轉(zhuǎn)時電池會很快耗盡)。評分:成績中,機(jī)器人的性能占100%。性能創(chuàng)新和美觀A+:爬坡冠軍A:能爬至少30度的坡B:機(jī)器人向上爬C:當(dāng)觸動傳感器被按下時啟動馬達(dá)D:你搭的像一輛車F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹你必需得到“B-”或更好的成績才能獲取“技能牌”??蛇x擇的項目:這個實際挑戰(zhàn)可以改在小山坡前的一個平坦場地舉行。(既然這樣小坡就不能太陡),并且走完整個比賽賽程所用的時間也是評判的標(biāo)準(zhǔn)。這是個二選一的選擇,因為它需要速度和扭矩的結(jié)合,意味著車子使用低速齒輪比是不太可能會勝利的。2.1.5拔河挑戰(zhàn):設(shè)計并搭建一個拔河機(jī)器人,使用導(dǎo)航者級別4或者發(fā)明家級別4編程。目標(biāo)是把機(jī)器人對手拉過中線。當(dāng)聲音傳感器工作時,激活機(jī)器人,搏斗就開始了。編程基礎(chǔ)初級發(fā)明家初級導(dǎo)航者編程基礎(chǔ)初級發(fā)明家初級導(dǎo)航者技能牌:或或步驟:實驗設(shè)置:需要的材料包括:在地板上的一條線(可用電工或化妝用膠帶),兩條6英寸長的繩子,每根的一端固定一個夾紙的回形針上,一個連有兩條長導(dǎo)線的觸動傳感器。競賽時,對抗的機(jī)器人用在繩端的回形針連在一起(注:繩子沒有回形針的一端先固定在機(jī)器人上),紙夾位于中線的上方。當(dāng)教師擊掌或者發(fā)出任何聲音被NXT偵測到,啟動機(jī)器人時,比賽開始。競賽使用單循環(huán)淘汰制決定勝負(fù)。如果雙方機(jī)器人在10秒鐘內(nèi)沒有任何動作,老師將宣布此次競賽為平局。機(jī)器人設(shè)計:只有三個約束條件:必須用聲音傳感器來啟動機(jī)器人;最多可以使用三個馬達(dá);你的機(jī)器人必須可以連一根繩子(具體形式由自己決定);你的機(jī)器人應(yīng)該小于9立方英寸的正方體;設(shè)計時應(yīng)當(dāng)考慮:齒輪傳動比、摩擦、機(jī)器人的重心。編程:此項目的程序非常簡單。你的機(jī)器人應(yīng)當(dāng)?shù)嚷曇魝鞲衅靼l(fā)出信號時再驅(qū)動馬達(dá)。每隊允許有失敗的啟動。提示:使用交流適配器供電,避免太耗費(fèi)電池(馬達(dá)堵轉(zhuǎn)時電池會很快耗盡)。評分:成績中,機(jī)器人的性能占75%,創(chuàng)意和美觀性占25%。性能創(chuàng)新和美觀A+:沒有輸過的冠軍A:贏了不止一次B:有一次極好的戰(zhàn)斗表現(xiàn)C:當(dāng)傳感器觸動后馬達(dá)轉(zhuǎn)了D:做了可以與繩子連接的東西F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。2.1.6穿越隧道挑戰(zhàn):使用導(dǎo)航者級別4或發(fā)明家級別4,設(shè)計、搭建一輛小車并編程,使其進(jìn)入到較黑的隧道中自動打開前車燈。你可以使用發(fā)明家級別或?qū)Ш秸呒墑e,根據(jù)你選擇的級別獲得相應(yīng)的“技能牌”。初級導(dǎo)航者編程基礎(chǔ)初級發(fā)明家初級導(dǎo)航者編程基礎(chǔ)初級發(fā)明家技能牌:或或步驟:實驗設(shè)置:需要一個尺寸能夠容納你的機(jī)器人或小車駛?cè)氲乃淼?;需要燈(見?.1),作為車的前燈;如果沒有燈的話,可以使用蜂鳴器來取代。注意:在導(dǎo)航者級別中,蜂鳴器輸出不可用。機(jī)器人設(shè)計:設(shè)計并搭建一輛用NXT控制、具有光電傳感器、使用馬達(dá)驅(qū)動的車。任何在第一章中所示的車都可以應(yīng)用。編程:啟動后,你的車向前運(yùn)動;當(dāng)光電傳感器檢測到黑暗時,需要打開燈(如果燈不可用的話就播放一段音樂),車此時必須保持行駛(即:你的車不能停下后再打開燈);當(dāng)車穿過隧道時,就關(guān)掉燈。提示:使用光電傳感器時,環(huán)境光強(qiáng)度和隧道內(nèi)的差別要有意加大。你可能需要在教室內(nèi)實測,以確定光電傳感器的閾值設(shè)置。如果你使用發(fā)明家級別,可以在“等待暗”(即:亮度降低到一定數(shù)值)和“等待變暗”(即:亮度降低了一定數(shù)值)兩個圖標(biāo)之間進(jìn)行選擇。評分:成績中,機(jī)器人的性能占75%,創(chuàng)意和美觀性占25%。精確性創(chuàng)意和美觀A:開燈和關(guān)燈非常準(zhǔn)時B:進(jìn)入隧道打開燈C:燈先開后關(guān)(隨機(jī))D:當(dāng)啟動后,車能運(yùn)行F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。2.1.7Wallace&Gromit?挑戰(zhàn):設(shè)計并搭建一種設(shè)施,能夠把人(樂高迷你型小人)從二樓的床上移到一樓餐桌邊坐下,此設(shè)施太陽升起(可使用手電筒模擬)時動作。你可以使用發(fā)明家級別或?qū)Ш秸呒墑e,根據(jù)你選擇的級別獲得相應(yīng)的“技能牌”。初級導(dǎo)航者編程基礎(chǔ)初級發(fā)明家初級導(dǎo)航者編程基礎(chǔ)初級發(fā)明家技能牌:或或步驟:實驗設(shè)置:特別建議你觀看TheWallace&Gromit系列動畫片之“TheWrongTrousers”,作為本挑戰(zhàn)的介紹。手電筒、房屋的一樓及桌子和椅子由老師提供。機(jī)器人設(shè)計:唯一的限制是用于傳送迷你小人的設(shè)備在競賽結(jié)束時不能觸及迷你小人(即:你必須使他在結(jié)束時脫開)。你需要給房子建起第二層,包括床。此挑戰(zhàn)項目注重搭建。編程:你的程序必須由光電傳感器啟動,程序大部分應(yīng)該是定時啟動或關(guān)閉馬達(dá)。評分:成績中,機(jī)器人的性能占70%,創(chuàng)意和美觀占30%。準(zhǔn)確性創(chuàng)意和美觀A:在椅子上,沒有觸到地板B:接觸到椅子或(和)桌子C:部分到了一樓D:在樓上的床上F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。WallaceandGromit已經(jīng)被AardmanAnimations注冊商標(biāo)和版權(quán)了。2.1.8沿線行走挑戰(zhàn):設(shè)計并搭建一個能跟隨黑線行走的機(jī)器人。你可以使用發(fā)明家級別或?qū)Ш秸呒墑e,根據(jù)你選擇的級別獲得相應(yīng)的“技能牌”。編程基礎(chǔ)初級發(fā)明家編程基礎(chǔ)初級發(fā)明家初級導(dǎo)航者技能牌:或或步驟:實驗設(shè)置:行駛的路線是用黑色的電工膠布貼在一塊白色的底板上構(gòu)成的,路線有些彎曲,長度大約是3英尺。你的機(jī)器人走完這條線的時間由教師用秒表紀(jì)錄。機(jī)器人設(shè)計:要完成此項目你必須設(shè)計并搭建一輛最基本的小車,至少具有兩個輪子和一個對地的光電傳感器。編程:有一個非常簡單的算法,事實上,此算法并不是真的跟著線走,而是在黑線的線里、線外走“Z”字,假設(shè)機(jī)器人在黑線上啟動:算法是解決問題主要步驟的概要。算法是解決問題主要步驟的概要。等待亮關(guān)閉左馬達(dá),打開右馬達(dá)等待暗關(guān)閉右馬達(dá)重復(fù)通過左右馬達(dá)的交換,機(jī)器人以停止的那個馬達(dá)為軸心在線的右邊緩慢爬行。雖然此算法非常有效(幾乎次次都能成功),但你很快就會發(fā)現(xiàn)這種方式非常慢。為了給機(jī)器人加速,你可以用較低能量級開著馬達(dá)而不是完全關(guān)掉它,如果你設(shè)置的馬達(dá)能量級高了,機(jī)器人會脫離黑線,你需要調(diào)試能量級別,以平衡可靠性和速度。提示:環(huán)境光的強(qiáng)度直接影響機(jī)器人的性能,嘗試遮住光電傳感器以增加可靠性。評分:成績中,機(jī)器人的性能占75%,創(chuàng)新和美觀占25%。準(zhǔn)確度創(chuàng)新和美觀A+:跟隨線走的速度最快A:能夠跟隨線走到盡頭B:跟隨線走的距離超過1英尺C:車子能走“Z”字D:當(dāng)啟動時你的車子能夠運(yùn)行F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。2.1.9快速行走挑戰(zhàn):設(shè)計并搭建一個走得盡量快的步行機(jī)器人,為增加競賽的趣味性,比賽將在小石子路面上進(jìn)行。你可以使用發(fā)明家級別或?qū)Ш秸呒墑e,根據(jù)你選擇的級別獲得相應(yīng)的“技能牌”。初級發(fā)明家編程基礎(chǔ)初級導(dǎo)航者初級發(fā)明家編程基礎(chǔ)初級導(dǎo)航者技能牌:或或步驟:實驗設(shè)置:此挑戰(zhàn)的特點(diǎn)是在小石子路上走,競賽采用單循環(huán)淘汰制,每次競賽的贏者進(jìn)入下一輪,路大約4英尺長。機(jī)器人設(shè)計:需要設(shè)計并搭建一個能夠在略微不平的表面上行走(爬行也可以)的機(jī)器人。創(chuàng)造性占75%的分量,其中很大程度取決于所用的步行(爬行)機(jī)構(gòu)。唯一的限制是不能有意絆倒其它的機(jī)器人。編程:大部分的程序可能由簡單的打開馬達(dá)或關(guān)閉馬達(dá)組成。此挑戰(zhàn)重搭建、不重編程。評分:成績中,機(jī)器人性能占25%,創(chuàng)新和美觀占75%。性能創(chuàng)意和美觀A+:走的最快A:至少贏一次B:可以走,但從未贏過C:可以走,但不能走到終點(diǎn)D:可以移動,但不能行走F:未搭建可以演示的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。2.1.10測速度與扭矩的關(guān)系挑戰(zhàn):設(shè)計并搭建一個能夠測試LEGO馬達(dá)扭矩與轉(zhuǎn)速關(guān)系的機(jī)器人。編程基礎(chǔ)初級發(fā)明家編程基礎(chǔ)初級發(fā)明家技能牌:或步驟:實驗設(shè)置:老師提供校準(zhǔn)過的重物,你還需要計時設(shè)備,例如秒表。本挑戰(zhàn)作為家庭作業(yè)。 機(jī)器人設(shè)計:你需要設(shè)計并搭建一個機(jī)器人,它應(yīng)當(dāng)能卷起一條系有重物的繩索。用一只秒表(如果夠靈活可以用定時器)測量它轉(zhuǎn)指定轉(zhuǎn)動單位所花費(fèi)的時間,數(shù)值的確定應(yīng)保證你能夠盡量準(zhǔn)確的計算出樂高馬達(dá)的轉(zhuǎn)速(RPM,每分鐘的圈數(shù))。通過改變繩上的重物及纏繞輪轂的直徑,你可以改變施加在樂高馬達(dá)上的扭矩,你應(yīng)當(dāng)至少采集15-20個數(shù)據(jù)點(diǎn)。你需要把程序、扭矩-RPM曲線圖和所用機(jī)器人數(shù)碼照片的副本交給老師。編程:需要為機(jī)器人編程使之控制馬達(dá)輸出指定的轉(zhuǎn)動數(shù)值。獎勵:(加1/2級)多數(shù)馬達(dá)都表現(xiàn)出不對稱性,這也就意味著在正反轉(zhuǎn)的過程中有不同的特性,兩個方向的扭矩-RPM關(guān)系都測的加分。評分:成績中,性能占90%,創(chuàng)新和美觀占10%。精確度創(chuàng)新和美觀A:三項內(nèi)容都交了B:只交了三項中的二項C:只交了三項中的一項:扭矩曲線、程序或數(shù)碼照片D:你提交了一份完成挑戰(zhàn)的計劃F:交了圖表、程序或照片以外的東西A+:最好A:卓越B:好C:不錯D:無特點(diǎn)F:慘不忍睹與以往一樣,你必需得到“B-”或更好的成績才能獲取“技能牌”。2.2導(dǎo)航者基礎(chǔ)單擊打開編程界面單擊打開編程界面雙擊雙擊打開默認(rèn)的導(dǎo)航者程序雙擊打開工程單擊選擇雙擊打開工程單擊選擇導(dǎo)航者級別單擊選擇工程主題圖2.1導(dǎo)航者級別開始導(dǎo)航者級別是ROBOLAB三個編程級別中最簡單的一種。導(dǎo)航者級別可以從編程者窗口訪問。它對于熟悉NXT、輸出、傳感器等非常有用,因為一個導(dǎo)航者程序總是在運(yùn)行。它可能并不準(zhǔn)確知道你的打算,但它一直在編譯和執(zhí)行。導(dǎo)航者程序是順序的,即命令是按固定的順序一個一個地執(zhí)行。如果你對計算機(jī)編程熟悉,你會發(fā)現(xiàn)循環(huán)、函數(shù)(子程序)和其它編程結(jié)構(gòu)在導(dǎo)航者中是沒有的。導(dǎo)航者級別中有四個等級,級別1最簡單,級別4最復(fù)雜。級別3、4每一項都有一些帶有示范程序的主題。初級導(dǎo)航者2.3初級導(dǎo)航者牌初級導(dǎo)航者本節(jié)提供了一些獲取“初級導(dǎo)航者技能牌”所需的知識。我們不從級別1開始而直接從級別4開始有兩個原因:單擊打開在線幫助窗口你單擊打開在線幫助窗口導(dǎo)航者級別非常容易學(xué)習(xí)(我們對你有信心)默認(rèn)的導(dǎo)航者級別4程序見下面的圖2.2。稍微有點(diǎn)困惑,默認(rèn)的程序顯示了RCX(步驟1)的結(jié)合以及NXT(步驟2)的觸動傳感器被使用(實際上,RCX和NXT的觸動傳感器是可以互換的,所以最后它們之間沒有太大的區(qū)別)。另一些遺留下來的功能可能會令人感到困惑,馬達(dá)的圖標(biāo)看上去像RCX的馬達(dá)卻并不像NXT的馬達(dá)。單擊前進(jìn)到程序的下一步單擊前進(jìn)到程序的下一步單擊下載程序到NXT圖2.2單擊下載程序到NXT在步驟一(左)中的綠色信號燈表示程序的開始,步驟二(右)中紅色信號燈指示程序結(jié)束,在兩個信號燈之間的部分NXT將會執(zhí)行(即:程序),粉紅色線控制指令執(zhí)行的順序。導(dǎo)航者級別4默認(rèn)程序步驟一(圖2.2-左)將以滿功率反向打開馬達(dá)A,以中等功率打開輸出口B的燈,以中等功率正向打開馬達(dá)C,然后等待輸入端口1的觸動傳感器被按下。當(dāng)觸動傳感器被按下后步驟二開始執(zhí)行(圖2.2-右):以滿功率正向打開馬達(dá)A,以全部功率打開輸出口B的燈,以中等功率反向打開的馬達(dá)C,然后等待輸入口2的光電傳感器讀數(shù)大于55后中止程序。單擊較大的白色箭頭圖標(biāo)可以把程序下載到NXT中。使用USB連接,這只會使用一點(diǎn)時間。當(dāng)你下載程序時,一個下載窗口出現(xiàn)(如圖2.3—右)。在下載窗口中你可以更改NXT的名稱,查看存儲容量,電池電量以及運(yùn)行的程序。最后,一個非??岬墓δ?,下載窗口顯示傳感器的結(jié)構(gòu),這樣你就可以來檢驗?zāi)愕腘XT是不是與你的程序匹配了。在圖2.3中,你可以看到我的NXT在端口2有個觸動傳感器以及在端口3有個光電傳感器。小貼士點(diǎn)擊計時器可以廢除這個功能,使小貼士點(diǎn)擊計時器可以廢除這個功能,使NXT下載窗口始終打開。圖2.3NXT下載窗口如果你希望手動運(yùn)行程序,使用NXT上的左/右箭頭鍵以及橘紅色的運(yùn)行鍵來控制三個層次的菜單并且選擇MyFiles>SoftwareFiles>rbl。2.3.1輸出單擊馬達(dá)或燈的圖標(biāo)打開一個彈出窗口,允許你選擇四個命令中的一個:馬達(dá)反轉(zhuǎn)、馬達(dá)正轉(zhuǎn)、打開燈、停止輸出。當(dāng)你想要停止馬達(dá)或者熄滅燈,或者當(dāng)輸出口沒有連接任何設(shè)備時,使用停止輸出。在馬達(dá)或燈下的能量級我們將在后面的2.3.3節(jié)討論。單擊打開輸出彈出窗口單擊打開輸出彈出窗口圖2.4輸出選擇彈出窗口在1.4.2章節(jié)中提到的,只有一種用線連接的方式能把NXT連接起來,所以你不能把馬達(dá)的極性混淆了。然而,并不是說你用馬達(dá)前進(jìn)的命令馬達(dá)就一定會使你的機(jī)器人向前進(jìn)。裝配NXT馬達(dá)是非常容易混淆的。事實上,幫助文件(見第一章圖1.10)顯示了馬達(dá)的顛倒(比如樂高標(biāo)志的顛倒)。下面的圖片顯示了NXT馬達(dá)的正面。圖2.5從這邊看馬達(dá)前進(jìn)的命令使馬達(dá)順時針方向旋轉(zhuǎn)盡管在ROBOLAB中只列出了馬達(dá)和燈是輸出設(shè)備,實際上你可以買到的樂高輸出設(shè)備都可使用,所有輸出設(shè)備在第一章的表1.1中列出。2.3.2“等待…”命令等待命令是ROBOLAB中最常用的指令。單擊觸動傳感器圖標(biāo)打開彈出窗口(圖2.6),你可以選擇五個等待命令之一:時間、RCX觸感、NXT觸感,RCX光電或者NXT光電。單擊打開等待命令選擇彈出窗口單擊打開等待命令選擇彈出窗口技巧單擊技巧單擊“help”按鈕可打開在線幫助窗中最有用的窗口圖2.6等待命令選擇彈出窗口如圖2.7所示,等待時間命令可以設(shè)置為等待“指定時間”或“隨機(jī)時間”(在0和預(yù)設(shè)的最大值之間);等待觸動命令可以設(shè)置為等待“按下”或“放開”;等待光值命令可以被設(shè)置為等待“暗于”或“亮于”(100=亮,0=暗)。圖2.7導(dǎo)航者級別4中等待的參數(shù)(RCX中的特別選項沒有顯示)2.3.3參數(shù)參數(shù)允許你選擇傳感器接在哪個輸入口或以哪個能量級別來驅(qū)動馬達(dá)(見圖2.8),參數(shù)還允許你指定等待命令的條件,如:時間的長度、光的閾值等(見圖2.7)。在導(dǎo)航者級別的編程中,功率等級的修改是位于馬達(dá)和燈光標(biāo)記的下面。它們指出了每個輸出端口的所需要的功率等級。點(diǎn)擊修改可以允許你改變每個端口的功率等級。5級是最高的等級(最亮的燈光或最快速的馬達(dá)),而1級是最低的等級。相似的,在觸動和光電傳感器的上方的數(shù)字是等待命令,是輸入端口的參數(shù)。點(diǎn)擊可以允許你來修改傳感器連接的端口。在初學(xué)者中最為常見的錯誤是在輸入端口接錯了傳感器。比如說,在下圖程序中輸入端1是在程序中的,但傳感器卻連在了NXT的輸入端口2上。單擊修改輸入口單擊修改輸入口單擊修改輸出功率單擊修改輸出功率圖2.8輸出能量級和輸入?yún)?shù)注意嚴(yán)格的說,參數(shù)改變的是供給馬達(dá)的功率不是速度,盡管功率越大速度越快,但如果機(jī)器人過載,加大功率不一定能使速度對應(yīng)增加,因此,能量級1不總是比能量級5驅(qū)動機(jī)器人慢。(功率與速度的關(guān)系詳見第4.5節(jié))如我們會在第四章中所見那樣,在ROBOLAB中一個好的新功能是馬達(dá)100%的能量可以發(fā)揮。然而,為了讓事情簡單化,導(dǎo)航者使用五個等級的功率。表2.1表示了導(dǎo)航者功率等級和NXT實際的馬達(dá)功率等級之間的關(guān)系(這五個功率等級的關(guān)系在發(fā)明家等級中并不適用)。2.3.4觀察傳感器和電機(jī)設(shè)置當(dāng)ROBOLAB程序在運(yùn)行時,查閱傳感器的讀數(shù)和馬達(dá)的設(shè)置是非常簡單的。當(dāng)你準(zhǔn)備運(yùn)行程序時,液晶屏?xí)J(rèn)的顯示幾條信息,包括4個傳感器端口的讀數(shù)。在圖2.9左中,一個光電傳感器連接在端口1上(它的讀數(shù)為62),一個聲音傳感器連接在端口2上,并且一個觸動傳感器連接在端口3上(1=按下,0=放開)。在端口4上沒有東西,所以它的默認(rèn)讀數(shù)是1023(傳感器的讀數(shù)從0到1023)。這里沒有顯示(見圖2.51)如果你等待多次觸動傳感器,NXT會顯示已經(jīng)被觸發(fā)過的次數(shù)。圖2.9當(dāng)程序運(yùn)行時液晶屏顯示傳感器(左)或者馬達(dá)(右)的信息。當(dāng)程序在運(yùn)行時,如果你需要在ROBOLAB中查看更多的信息,你可以使用NXT上的右箭頭鍵按鈕。按下右箭頭鍵按鈕一次,可以讓你查看馬達(dá)的功率和角度傳感器以度顯示的讀數(shù)(如右圖2.9)。再次按下右箭頭鍵可以讓你看到已經(jīng)收集的數(shù)據(jù)曲線。使用左鍵頭鍵按鈕可以簡單的回到上個你查閱過的信息。2.3.5簡單的導(dǎo)航者級別4程序這里的兩個導(dǎo)航者4的示范程序會指導(dǎo)你如何創(chuàng)建自己的導(dǎo)航者程序。圖2.10簡單的導(dǎo)航者程序第一個程序有兩個步驟,程序由綠燈開始(最左邊),然后以滿功率(5級)反向打開馬達(dá)A和B,接著等待連接在2號端口上的觸動傳感器被按下,然后馬達(dá)A再以滿功率正向打開,馬達(dá)B以2級能量正向打開,等待2.5秒鐘,在紅燈處(最右邊)停止。圖2.11有三個步驟的導(dǎo)航者示范程序第二個程序有三個步驟;步驟一:馬達(dá)A和C以正向滿功率(級別5)打開,然后等待一個隨機(jī)的時間(0-5秒);步驟二:馬達(dá)A和C停止,而馬達(dá)B以一半的功率開啟。然后程序等待2號端口光電傳感器的值超過65(100=明亮,0=黑暗)時執(zhí)行步驟三;步驟三:馬達(dá)A和C以相反方向再次打開(A以全功率反轉(zhuǎn),C以一半的功率正轉(zhuǎn)),而馬達(dá)B被關(guān)閉,等待連接在1號端口上的觸動傳感器被按下后程序結(jié)束。實際上,馬達(dá)的轉(zhuǎn)動和停止控制時間只需要一秒的很少部分,因此,程序中的大部時間都花費(fèi)在等待命令上了,這點(diǎn)很重要:等待命令不做任何事,只是使程序暫停,直到特定條件發(fā)生,在等待期間,所有的傳感器和輸出繼續(xù)工作:馬達(dá)繼續(xù)運(yùn)行,傳感器繼續(xù)采集數(shù)據(jù)。圖2.12用RCX和NXT光電傳感器的導(dǎo)航者程序下面一個例子結(jié)合了NXT和RCX的傳感器。舉例說明,NXT套裝只有一個光電傳感器,所以如果你想要制作一輛沿線行走的小車就要使用兩個光電傳感器(在第三章中這是一個設(shè)計挑戰(zhàn)),你都可以使用RCX和NXT的光電傳感器。當(dāng)然,你不需有RCX傳感器的連線適配器(見表1.2)。圖2.12顯示了一個兩個步驟的導(dǎo)航者程序,馬達(dá)A打開,等待2號端口的光電傳感器低于30,打開馬達(dá)C,最后等待1號端口的NXT光電傳感器的值高于55時,程序停止。另外,如果你想要在導(dǎo)航者級別中使用NXT光電傳感器并且關(guān)閉他的發(fā)光二極管,簡單的使用RCX光電傳感器的等待功能。你會發(fā)現(xiàn)NXT的光電傳感器在發(fā)光二極管關(guān)閉的情況下也工作的十分好——在環(huán)境模式下使用光電傳感器效果最佳(見下)。2.3.6使用樂高光電傳感器的一些說明沒什么特殊,光電傳感器是用來測量光的強(qiáng)度(包含可見光和紅外光),光源可以是外部的(如:一只手電)或者是內(nèi)部的(即:紅色發(fā)光二極管)。實際上,你只有兩種方式使用光電傳感器:測量光在面上的反射量(反射模式),或者外部光源的強(qiáng)度(環(huán)境模式)。光電傳感器最常用的用途有兩種:沿線行走(反射模式)和在房間中尋找最亮點(diǎn)(環(huán)境模式)。反射模式:利用內(nèi)部紅色LED(發(fā)光二極管)測量表面對光的反射量。在這種測量模式中,紅色LED發(fā)出的紅光由表面反射回來被光電傳感器讀取。表面的光反射量和許多因素有關(guān),例如,離光電傳感器很遠(yuǎn)的一個粗糙的白色表面,其光反射量可能與緊靠光電傳感器的一個光滑的黑色表面是一樣的。我們看到過學(xué)生在計算機(jī)前大叫,因為他們不能在沿線行走的練習(xí)中讓光電傳感器可靠的檢測顏色。他們受挫的原因是光電傳感器不能測量顏色——它只測光的強(qiáng)度。顏色、表面粗糙度、距離、入射角、環(huán)境光的強(qiáng)度都將影響光線的反射量。黑色比白色的反射低;粗糙的表面比一個光滑的表面的反射低;距離近比距離遠(yuǎn)的反射率高;光電傳感器與表面垂直比傾斜的反射高;最后,環(huán)境光(包含可見和紅外光)是產(chǎn)生失誤的最大元兇(不管你是否愿意,都必須測量它)。如果認(rèn)為這樣陳述過于復(fù)雜,那是因為光電傳感器確實如此,然而,如此大量的影響因素也使它的應(yīng)用非常廣泛。使用中,你應(yīng)當(dāng)設(shè)法測量一個因素的影響量,如:顏色,而保持其它因素不變。例如,你想把樂高積木根據(jù)顏色進(jìn)行分類,首先確保積木離光電傳感器的距離是相同的,其次在光電傳感器前的角度也是相同的,最后屏蔽環(huán)境光。另外,如果你想在一個環(huán)境光很弱的場合測量傳感器到表面的距離(接近傳感器),你應(yīng)當(dāng)使光電傳感器與表面保持垂直,而且表面的顏色和粗糙度應(yīng)當(dāng)一致。通常,我們可以使用光電傳感器測量上述的任何一種影響量:顏色(色彩傳感器)、表面粗糙度(粗糙計)、距離(接近監(jiān)測器)、射角(傾斜計),唯一的警告是減弱環(huán)境光,因為它是最大的誤差源。如果環(huán)境光是常量,它只是使測量到的反射光偏強(qiáng),然而,實際上當(dāng)你的機(jī)器人在陰影中進(jìn)出時環(huán)境光值會發(fā)生很大變化,變化量通常遠(yuǎn)大于你要測量因素。如果你能在完全黑暗的環(huán)境中使用光電傳感器,它的讀數(shù)重復(fù)性相當(dāng)高,但這是理想條件,十分不實際。為了模擬完全黑暗的環(huán)境,你可以把光電傳感器放機(jī)器人底部,在那里幾乎遮住了大部分外界光源。這樣,室內(nèi)的燈是開還是關(guān)就沒什么影響了——機(jī)器人使用的唯一光源就是紅色LED。環(huán)境模式:測量外部光源的強(qiáng)度是樂高光電傳感器的另一個常見用途。因為紅色的發(fā)光二極管和燈光檢測原件十分相似(光電管原件),它幾乎不可能測量外部不穩(wěn)定的光源,因此你需要關(guān)閉環(huán)境模式(在導(dǎo)航者級別中你可以使用RCX光電傳感器等待NXT光電傳感器關(guān)閉紅色發(fā)光二極管)。即使你關(guān)閉了紅色發(fā)光二極管,光電傳感器的讀數(shù)還會受到紅外光的干擾而產(chǎn)生錯誤,樂高光電傳感器非常擅長測量紅外光源的強(qiáng)度,不幸的是,我們看不到紅外光。而且變得越來越壞,因為紅外光無處不在:燈泡(白熱的和熒光的)、遙控器、熱源、手提電腦和為RCX下載程序的紅外發(fā)射塔。幸運(yùn)地,通常人們試圖測量的光源是一個標(biāo)準(zhǔn)電筒,它既比環(huán)境光亮很多,還釋放出與可見光一樣強(qiáng)的紅外光。小貼士不要忘了你可以使用NXT上的“TRYME”功能來觀察當(dāng)前光電傳感器的讀數(shù)。2.3.7使用LEGO超聲波傳感器的一些說明我發(fā)現(xiàn)超聲波傳感器對于測量巨大的,固定的物體是非常有效的,比如說墻壁。對于其他的物體來說,然而,它的測量是非常依靠物體的尺寸,外形以及質(zhì)地。圖2.13顯示了一列三種不同直徑的截面:1英寸(2.5厘米),3英寸(7.6厘米)以及6英寸(15.2厘米)。你應(yīng)當(dāng)預(yù)期到,超聲波傳感器對于探測小的截面比探測大的截面要困難些。加之,圖形僅僅是粗糙的估計。我發(fā)現(xiàn)了“洞”,圓柱體在那里屢次沒有被探測到。我還找到了一些傳感器間的變化,有些很好,有些很差就像圖2.13里所示(“平均”傳感器)。最后,即使傳感器探測到了截面,測出的距離至少少了一半。圖2.13NXT超聲波傳感器的測量范圍圖示。2.3.8步驟,運(yùn)行模式,打印和保存那么,在導(dǎo)航者屏幕中的其它按鈕是做什么的呢?萬一你不清楚如何使用它們,在此我們來簡要介紹一下這些按鈕的功能。單擊刪除這個步驟單擊進(jìn)入下一步驟單擊將程序下載到NXT中。單擊刪除這個步驟單擊進(jìn)入下一步驟單擊將程序下載到NXT中。單擊在此部分后插入一個步驟單擊在單次運(yùn)行和連續(xù)運(yùn)行間轉(zhuǎn)換。圖2.14導(dǎo)航者級別4中的其它按鈕步驟程序步驟與電影中的幀類似,一個跟著一個被編寫,直到拼湊出一個完整的程序。導(dǎo)航者級別4允許增加步驟以寫出較長的程序,可以使用在屏幕上方的“+”和“-”圖標(biāo)插入或刪除一個步驟??梢允褂脤?dǎo)航者窗口左、右上方的紅色箭頭圖標(biāo)來瀏覽每個步驟。圖2.10中示范程序中只有兩個步驟,圖2.11中示范程序中有三個步驟。步驟的數(shù)目沒有限制。運(yùn)行模式運(yùn)行模式按鈕(粉紅色箭頭)可以在單次運(yùn)行和連續(xù)運(yùn)行之間切換。如果你選擇了連續(xù)運(yùn)行方式,你的程序就會一遍一遍的在NXT上運(yùn)行,直至你再次按下NXT上的灰色取消按鈕才會停止,這對讓機(jī)器人重復(fù)做一個簡單動作是非常有用的。圖2.15運(yùn)行模式如果用連續(xù)運(yùn)行模式,圖2.10中的程序可以使機(jī)器人避障,機(jī)器人會一直向前走,直到它撞到物體,后退然后繼續(xù)向前直到它再次撞到物體。因為在步驟2中馬達(dá)的功率不同,所以它后退時會轉(zhuǎn)彎。選擇重復(fù)選項允許你寫出全部的程序應(yīng)該重復(fù)的次數(shù)。在標(biāo)記的中間,你可以更改數(shù)字(默認(rèn)為5)。當(dāng)你選擇了運(yùn)行模式,你仍然必須使用大白色的標(biāo)志下載你的程序到NXT中(運(yùn)行標(biāo)志)。打印和保存單擊保存程序到磁盤單擊打印預(yù)覽單擊保存程序到磁盤單擊打印預(yù)覽單擊打開一個保存的程序圖2.16導(dǎo)航者級別4中的其它按鈕單擊圖2.16中的打印圖標(biāo)將打開圖2.17所示的打印預(yù)覽窗口見。單擊打印圖標(biāo)打印此圖像或選擇“Back”圖標(biāo)取消打印操作。單擊打印單擊保存程序按鈕(見圖2.16中)可以把導(dǎo)航者程序保存到磁盤。導(dǎo)航者級別4的程序保存為文件名.pi4單擊打印同樣地,裝載程序按鈕允許你打開以前保存的導(dǎo)航者程序。圖2.17打印預(yù)覽窗口2.4與基于文本編程的關(guān)系ROBOLAB中的圖標(biāo)對應(yīng)于文本編程語言的函數(shù),修飾對應(yīng)于參數(shù)。圖2.18所示為導(dǎo)航者編程級別4的一個包含二步的程序。圖2.18示范導(dǎo)航者程序在步驟1中,程序開始后先以滿功率反向打開馬達(dá)A、以中等功率打開燈B、以中等功率正向打開馬達(dá)C,然后程序等待(馬達(dá)和燈都打開著)安裝在1號端口上的觸動傳感器被按下;之后程序進(jìn)入步驟2:正向滿功率打開馬達(dá)A、中等功率打開燈B,中等功率反向打開馬達(dá)C;程序又開始等待,直到連接在2號端口上的光電傳感器所讀取的光值大于55(100=明亮,0=暗)時整個程序結(jié)束。如果我們把這個程序轉(zhuǎn)換成基于文本的編程語言,可能是這樣:Start;Rev-A(5);Fwd_b;(3)Fwd_c(3)Wait_for_touch(press);Fwd_a;(5)Fwd_b;(3)Rev_c;(3)Wait_for_light;(greater_than,55)End;注意,等待光函數(shù)是唯一的有兩個參數(shù)的函數(shù),對應(yīng)ROBOLAB中的兩個參數(shù)(大于/小于、閾值)。對于編程新手而言,ROBOLAB與基于文本的編程語言(如:NXT或者RobotC)相比的主要優(yōu)點(diǎn)是:你不必應(yīng)付復(fù)雜的語法錯誤,不用擔(dān)心拼寫錯誤(“Rev_b”寫成了“Rew_b”)或者參數(shù)表中哪個變量在先(“greater_than”或“55”),你能把全部精力集中于程序的邏輯上。你也不用擔(dān)心“55”是否是整型數(shù)、浮點(diǎn)數(shù)或是字符型數(shù)——你只管用就行了。萬一你對此很感興趣,ROBOLAB提供了LASM(LEGO匯編語言),可以將你編寫的圖標(biāo)程序轉(zhuǎn)換成基于文本的程序,在第六章涉及這個內(nèi)容,ROBOLAB替你做轉(zhuǎn)換,因此你不必?fù)?dān)心語法。2.5導(dǎo)航者編程的局限性導(dǎo)航者級別最大的優(yōu)點(diǎn)是所有的程序都可運(yùn)行(編譯和執(zhí)行),可是,導(dǎo)航者程序是順序結(jié)構(gòu),不管怎樣都不可能寫出無法運(yùn)行的程序,這也是導(dǎo)航者級別的主要限制。導(dǎo)航者級別不包含任何程序控制結(jié)構(gòu),在計算機(jī)術(shù)語中,控制結(jié)構(gòu)是一種命令,可以在程序中實現(xiàn)循環(huán)或分支,或同時存在,換句話說,控制結(jié)構(gòu)允許你在程序中以非順序的方式跳轉(zhuǎn)到任何地方。例如:假如你想讓機(jī)器人做以下動作:如果觸動傳感器1釋放(沒有按下)機(jī)器人等待2秒;如果觸動傳感器被按下,馬達(dá)A轉(zhuǎn)10秒;在導(dǎo)航者級別中就不能實現(xiàn)了,因為它需要一個條件語句,這在導(dǎo)航者級別中不存在。我們需要提升到發(fā)明家級別,以獲取條件和其它高級控制結(jié)構(gòu)。下面所示就是一個完成上述任務(wù)的非順序程序,注意,參數(shù)現(xiàn)在使用“線”連到每一個功能圖標(biāo)上。圖2.19發(fā)明家級別中條件語句實現(xiàn)的示例在基于文本的編程語言中,這段程序可能是這樣:Start;If_touch(1)=releasethen;Wait_for_seconds(2);Else;Fwd_A(3);Wait_for_seconds(10);End_if;End;2.6發(fā)明家基礎(chǔ)單擊打開編程界面單擊打開編程界面雙擊打開一個工程單擊打開發(fā)明家級別,只有發(fā)明家等級4才有NXT雙擊打開一個工程單擊打開發(fā)明家級別,只有發(fā)明家等級4才有NXT功能。單擊選擇一個工程主題雙擊打開默認(rèn)的發(fā)明家程序圖2.20進(jìn)入發(fā)明家級別發(fā)明家級別是ROBOLAB三個編程級別中的第二個。與導(dǎo)航者級別一樣,發(fā)明家級別也是從編程者窗口進(jìn)入(見圖2.20),同樣也有四個級別,發(fā)明家1是最簡單的,發(fā)明家4是功能最強(qiáng)的。備注:只有發(fā)明家4才可以使用NXT編程功能。與導(dǎo)航者級別最大的不同是,在發(fā)明家級別中你可以使用變量、結(jié)構(gòu)、子程序。此外,在發(fā)明家級別你必須自己用“線”把圖標(biāo)連接在一起。這些附加特性增加了復(fù)雜性,但也允許你創(chuàng)建功能強(qiáng)大的程序。本節(jié)介紹一些在發(fā)明家級別中初步探索所需的基礎(chǔ):窗口、工具板、功能板。下一節(jié)將介紹使用發(fā)明家級別編程的難點(diǎn)和要點(diǎn)。當(dāng)你打開一個發(fā)明家程序,同時打開了三個窗口,上方的窗口是前面板,下面的窗口是圖標(biāo)窗口,浮動窗口是功能板。你所有的編程都需要在圖標(biāo)窗口中完成。前面板前面板圖標(biāo)窗口圖標(biāo)窗口單擊單擊到上一級功能板選擇顯示選擇顯示工具板功能面板功能面板圖2.21發(fā)明家模式窗口還記得在導(dǎo)航者級別中,大的白色箭頭是用于把程序下載到NXT中嗎?那好,在發(fā)明家級別中它還在,只是沒那么大了,你可以在圖標(biāo)窗口的左上角找到這個運(yùn)行按鈕。圖2.22運(yùn)行按鈕2.6.1功能面板功能面板包含ROBOLAB中使用的所有程序圖標(biāo),在功能面板中的圖標(biāo)被選中后放到圖標(biāo)窗口中。在功能面板頂部是紅色和綠色交通燈(開始和結(jié)束)。與導(dǎo)航者級別相同,每個程序必須由綠燈開始,紅燈結(jié)束。功能面板的上部,如圖2.23所示,包含所有的輸出命令,其中大部分在導(dǎo)航者級別中已經(jīng)很熟悉了。功能面板的下部包含一些子菜單,在這些菜單的右上角有一個小的黑色三角。在本章中,我們將討論等待子菜單和參數(shù)子菜單。單擊打開參數(shù)子菜單單擊打開單擊打開參數(shù)子菜單單擊打開等待子菜單輸出圖2.23發(fā)明家級別4功能面板2.6.2工具面板技巧技巧按空格鍵可以在選擇和連線工具間進(jìn)行切換工具面板沒有被置為默認(rèn)顯示,但它對初學(xué)者卻非常有用,從窗口(Windows)菜單上選擇“顯示工具面板”來顯示工具面板(見圖2.21)。連線工具用于把圖標(biāo)連接在一起,你需要熟悉它,因為你在以后的編程中會大量使用此工具。圖2.24工具板定位工具可以讓你選擇、放置或拖曳圖標(biāo),定位工具也可以被用于重置文本框的尺寸(詳見下面的文本工具)。定位工具和連線工具是最常用的工具。技巧按Tab鍵可以在選擇、拖技巧按Tab鍵可以在選擇、拖曳、文本及連線工具間切換標(biāo)示工具可以改變數(shù)值,與操縱工具類似,然而也可以在你的程序中添加文本框,為程序添加注釋的很有用工具。在計算機(jī)術(shù)語中,注釋是給你的程序添加文字描述的過程,以便別人可以明白你想要做什么。拖曳工具使你可以把圖標(biāo)窗口中的內(nèi)容隨意移動。它也可以用于從功能面板中選擇圖標(biāo)放到圖標(biāo)窗口(與定位工具一樣)。你也可以使用移動條來移動圖標(biāo)窗口的內(nèi)容??旖莨ぞ?。這與用右鍵單擊圖標(biāo)的作用是一樣(MAC用戶是蘋果鍵)。更多的ROBOLAB工具在:/lego。連線在發(fā)明家級別中有許多圖標(biāo)與導(dǎo)航者級別中的圖標(biāo)是相似的,然而在導(dǎo)航者級別你不必管如何把圖標(biāo)連接在一起。因為ROBOLAB是圖形化編程語言,需要以一種方式告訴計算機(jī)用什么順序編譯我們的程序。我們通過粉色連線來完成此功能。圖2.25連接端圖2.25所示為ROBOLAB中功能的一般布局。一個功能的結(jié)束端與另一個功能的開始端相連,開始和結(jié)束端一般是用粉色的線相連的。參數(shù)用藍(lán)線、綠線或桔紅色線來連接。有時你需要使用一個迂回的連線路徑,你可用連線工具在圖標(biāo)以外的任何地方(圖標(biāo)窗口中)點(diǎn)擊,就可以創(chuàng)建出像圖2.26那樣的曲線,如果你想終止連線,可以按ESC鍵,另外,還有個竅門是使用單擊空格鍵可以改變連線的轉(zhuǎn)角的方向。圖2.26用在空的地方單擊創(chuàng)建曲折的連線在圖2.27是一個連線的示例,教你如何用連線,而不是移動圖標(biāo)來改變程序的執(zhí)行順序。注意,這兒用標(biāo)示工具創(chuàng)建了多達(dá)三個注釋(文本框),幫助你理解程序。圖2.27連線示例自動連線你從功能面板上取下一個圖標(biāo)放到圖標(biāo)窗口中時,它會試圖自動與它距離最近的圖標(biāo)連線。這通常是很有幫助的,但有時也會連到錯誤的圖標(biāo)或端口。當(dāng)你在圖標(biāo)窗口拖動一個圖標(biāo)時,單擊空格鍵,圖標(biāo)會試著與離它最近的圖標(biāo)連線(注意:當(dāng)按下空格鍵前你必須正在拖動圖標(biāo)狀態(tài)),這對已經(jīng)存在于圖標(biāo)窗口中的圖標(biāo)自動連線是非常有用的。替換和插入捷徑小貼士Ctrl+B小貼士Ctrl+B可以清除所有壞線替換和插入是兩個非常有用的捷徑,可以直接使用快捷工具或者右鍵單擊圖標(biāo)(MAC用戶為蘋果鍵)。刪除一個圖標(biāo)往往意味著導(dǎo)致斷開連線(圖2.28)。替換捷徑允許你用另一個圖標(biāo)來替換現(xiàn)在的圖標(biāo),比你重新連接線要有用的多。圖2.28斷線的例子圖2.29替換快捷方式最后一個我想來介紹的連接方法是插入命令。在2005年的夏天一位澳大利亞的教師向我展示了它能夠節(jié)省很多的時間。我并不確定它被用了多久了,但是我也不知道我能這么久以來沒有用過它——現(xiàn)在我一直使用它。如果你右擊(MAC用戶為蘋果鍵)粉紅色的線(或任何有問題的線),你將會看到一個捷徑菜單,這里你可以選擇插入。當(dāng)出現(xiàn)名稱提示,插入后它將會自動連線。圖2.30插入快捷方式2.6.3NXT偵測有經(jīng)驗的ROBOLAB用戶都知道RCX的Interrogate模塊。在NXT中我們稱這個為偵測。選擇工程菜單來開始偵測。除此之外,為了能選擇com端口,測試通訊和下載固件,偵測允許你來查看和更改硬件設(shè)置,查看傳感器讀數(shù),查看容器數(shù)值以及查看數(shù)據(jù)日志。圖2.31在工程菜單中開啟偵測圖2.32偵測硬件窗口。你可以看到很多關(guān)于NXT的設(shè)計并且大多都能更改。當(dāng)你在列表中選擇參數(shù),在右邊會有一個簡要的摘要。交流電模式會自動減去平均值單擊交流電模式會自動減去平均值單擊確定端口使用滑桿來控制變動微量單擊選擇傳感器類型圖2.33偵測傳感器視窗是一個虛擬的示波器,可以讓你使用滑桿來控制變動微量單擊選擇傳感器類型在傳感器視窗顏色編碼的跡線可以顯示輸入傳感器的信息(端口1,2或3)以及角度傳感器的信息(端口A,B和C)。在角度傳感器和輸入傳感器之間調(diào)節(jié)可以簡單的點(diǎn)擊端口編號。默認(rèn)情況下,傳感器的電壓是會顯示的。來查看校準(zhǔn)值(比如超聲波傳感器的厘米或者角度傳感器的度數(shù)),簡單的從下拉菜單的三個通道中選擇適當(dāng)?shù)膫鞲衅黝愋?。直?交流按鈕是跟蹤直流和交流模式的;在交流模式中平均值會在信號中被自動減去?;瑮U循序來控制變動微量。圖2.35偵測的數(shù)據(jù)日志允許你來繪制數(shù)據(jù)圖表。使用USB連接,上傳數(shù)據(jù)是十分迅速的。2.6.4獲得幫助在線幫助(上下文幫助)窗口對初學(xué)者來說,是ROBOLAB中最有益的性能。你可以從圖2.36所示的幫助菜單獲取在線幫助,在工具欄的右手邊點(diǎn)擊問號標(biāo)記,或者直接使用快捷鍵CTRL+H(在MAC上為+H),獲取在線幫助。圖2.36從幫助菜單中獲得在線幫助在線幫助提供了圖標(biāo)的連線信息。為了便于識別所有不同連接點(diǎn)(稱為端口)都被著色,例如,端口參數(shù)使用綠色線連接到圖標(biāo)上,整數(shù)數(shù)字常量使用藍(lán)色連接線。浮點(diǎn)型常量使用橙色線。幫助窗口還列出了圖標(biāo)的所有默認(rèn)值,是沒有參數(shù)與圖標(biāo)相連時使用的值。圖2.37在線幫助窗口是非常有用的,當(dāng)作用時,把光標(biāo)放到任意一個ROBOLAB圖標(biāo)上,都會顯出相關(guān)的詳細(xì)信息。初級發(fā)明家2.7初級發(fā)明家技能牌初級發(fā)明家這一節(jié)會提供給你獲得初級發(fā)明家“技能牌”需要的所有知識。像導(dǎo)航者級別一樣,我們將直接進(jìn)入發(fā)明家級別4。2.7.1輸出圖2.38馬達(dá)輸出六個主要的馬達(dá)功能與導(dǎo)航者級別中的基本一樣,在2.7.4節(jié)中我們會做討論,唯一的區(qū)別是它的能量級參數(shù)必須用線連接到圖標(biāo)上,見圖2.25。如果沒有參數(shù)與馬達(dá)相連,它將默認(rèn)運(yùn)行在滿功率(能量級5)。在發(fā)明家級別中也有一些新的馬達(dá)功能。首先是變向功能,它可以把指定馬達(dá)的旋轉(zhuǎn)方向變成相反方向。下面二個是通用的馬達(dá)正轉(zhuǎn)、馬達(dá)反轉(zhuǎn)功能,它需要使用參數(shù)指定能量等級和輸出端口,我們將會在2.7.4節(jié)中進(jìn)行討論。使用聲音播放有個很靈巧的功能,當(dāng)你將它移在圖標(biāo)窗口時,參數(shù)會自動在上面連線。既然這樣,參數(shù)在下拉菜單中允許你選擇聲音的播放模式(你必須使用操作工具來更改這個選擇)。有兩種形式的聲音:一些必須在程序結(jié)束前停止播放以及一些在程序結(jié)束后還會播放的。稍后的指示是在音樂結(jié)束后沒有“沒有等待”。換句話說,如果你不希望在下個步驟前等待聲音結(jié)束,使用“沒有等待”。當(dāng)在播放音樂功能中的靈巧的預(yù)連線功能,它也意味著你不可以使用替換的快捷方式。圖2.38音樂播放功能在預(yù)連線中有下拉菜單最后,高級輸出控制子菜單在它自己的技能牌,我們會在第四章中討論。如果你希望了解有關(guān)NXT馬達(dá)的全功率(我強(qiáng)烈建議),那就跳到章節(jié)4.5。圖2.39燈輸出燈A、B、C輸出與馬達(dá)相似,也應(yīng)當(dāng)把參數(shù)用線連接到圖標(biāo)上,假如沒有參數(shù)會應(yīng)用默認(rèn)能量級5(滿功率);除能量級參數(shù)外,燈輸出還要你把輸出口參數(shù)與圖標(biāo)相連,如果沒有參數(shù),默認(rèn)設(shè)置是滿功率打開所有端口(A、B、C)。圖2.40停止輸出停止A、B、C功能將停止連接到相應(yīng)的輸出端口的馬達(dá)或燈。停止ABC功能停止所有的三個輸出端口。停止功能將停止由輸出口參數(shù)指定的端口輸出。黃色停止圖標(biāo)是緩慢停止功能,與停止圖標(biāo)不同,緩慢停止僅切斷輸出端口的電能,這樣將允許馬達(dá)慢慢滑行到停止。圖2.41啟動、停止馬達(dá)示范注意:沒有連接參數(shù),使用默認(rèn)值。在圖2.41的程序中,馬達(dá)A正向滿功率起動,等待1秒鐘,改變馬達(dá)A方向,再等1秒,在程序結(jié)束前停止馬達(dá)A。注意,在此段程序中沒有使用參數(shù)功能(很快就討論發(fā)明家級別中的參數(shù)功能)。在ROBOLAB中,如果沒有參數(shù)與圖標(biāo)相連,所有的功能都使用默認(rèn)值(默認(rèn)值一般列在在線幫助窗口中,如圖2.37所示)。在這個例子中,馬達(dá)A的默認(rèn)能量級是滿功率,而變換方向功能的默認(rèn)值是改變所有輸出端口的方向。圖2.42使用這個程序來逐步體會停止以及緩慢停止的不同。停止和緩慢停止功能都是用來停止馬達(dá)的。然而停止功能是需要電閘的,就像使用剎車來停住汽車一樣,緩慢停止功能是將馬達(dá)關(guān)閉讓馬達(dá)滑動的停下,就像將汽車掛在空檔上。圖2.42顯示了一個簡單的程序,使你可以逐步的體會停止和緩慢停止之間的不同。程序從打開馬達(dá)A2秒鐘開始,然后停止6秒鐘。當(dāng)它停下后,嘗試著轉(zhuǎn)動馬達(dá)(最好馬達(dá)上連接有輪子)。六秒鐘后你會感到馬達(dá)沒有了阻力,就像浮空了一樣。圖2.43當(dāng)程序結(jié)束馬達(dá)自動停止(左),使用停止功能(右)將會防止滑動如果你使用過先前的ROBOLAB版本,NXT中一個主要的變化就是當(dāng)程序運(yùn)行完后,馬達(dá)自動停止(就像在導(dǎo)航者級別下),那就意味著你不用放置一個停止A的標(biāo)記了,圖2.41。然而,值得你引起注意的,如果你不在程序的末尾使用停止功能的話,馬達(dá)將會滑動到停止(緩慢停止功能也是一樣的)。這樣,兩個程序在圖2.43中顯示的作用會有些不同;右邊的程序會要求電閘在程序結(jié)束時來停止電機(jī)。沒有等待命令(見章節(jié)2.7.3),運(yùn)行在圖2.43中的任意程序都會在本質(zhì)上沒有時間來執(zhí)行(很少的幾毫秒)-你將會看到LCD在程序結(jié)束前用很短的時間顯示傳感器信息(圖2.9)。2.7.2事件在功能面板輸出功能的下面就是事件子菜單。你應(yīng)該記得那個Scout(藍(lán)色的RCX),事件背后的觀念是你可以用結(jié)合多種事件為一個機(jī)器人快速的編程。這些事件都是來自RCX,所以在你可以在NXT上使用時,它們都已經(jīng)經(jīng)過了修改。一共有14個事件可以使用:向前進(jìn):向前進(jìn)1秒鐘。轉(zhuǎn)動:轉(zhuǎn)動1/4秒。徘徊:向前進(jìn)1秒鐘,停止1秒鐘,重復(fù)10次。迂回前進(jìn):左右交替旋轉(zhuǎn)10次。圖2.44新的事件子面板開到撞:向前進(jìn)直到觸動傳感器被碰到。開向黑暗:向前進(jìn)直到光電傳感器探測到黑的地方。兩個遙控的按鈕:使用觸動傳感器來控制馬達(dá)的開啟和關(guān)閉。靜止不動:保持角度傳感器的讀數(shù)始終等于零來控制馬達(dá)。如果你推動了機(jī)器人,它還會回到原來的地方。這是發(fā)展自RCX,為了NXT而使用,你需要修改一點(diǎn)NXT的角度傳感器(見圖2.45和2.46).邊開邊唱:當(dāng)播放紅色的音樂卷時向前進(jìn)5秒鐘。唱到黑暗:播放紅色的音樂卷直到光電傳感器讀到黑暗值(默認(rèn)為55)。不要開啟任何馬達(dá)。沿線行走:讓你的機(jī)器人沿著黑線行走。你必須修改事件,因為它采取的光電傳感器的值為40,是黑線和白色地板之間的中間值。光感采樣:把光電傳感器在5秒內(nèi)的每0.1秒記錄到數(shù)據(jù)中去。采樣和行使:同光感采樣,加上向前行駛的同時進(jìn)行數(shù)據(jù)記錄。位置控制:同靜止不動有些類似,除了向前行駛使用兩個輪子,在NXT中你必需修改事件。當(dāng)你把事件功能放進(jìn)圖表窗口的時候,它將會自動的伸開(如下所示)。在圖標(biāo)窗口中,你可以按你的需要修改。舉例來說,你可能希望更改馬達(dá)的端口或者它運(yùn)行的時間。圖2.46顯示了在圖2.45中靜止不動事件為了適合NXT所做的輕微的修改。備注:我不得不使用負(fù)5倍的方式達(dá)到期望的狀態(tài)。這是因為我希望如果機(jī)器人被向前推動了它能夠自己開回來(反應(yīng)需要相反方向的行動)。雖然如此,修改事件比起從零開始創(chuàng)建程序是十分便捷的。圖2.45在圖表窗口下放置的事件會自動伸展開圖2.46經(jīng)修改適用于NXT靜止不動事件2.7.3“等待”功能等待子面板是在等待功能里,在整個上方,所有的RCX和NXT的等待功能連成串,自左到右排列在子面板中。圖2.47等待子面板圖2.48時間等待功能前六個時間等待功能使程序等待指明的秒數(shù)后再執(zhí)行下一個功能。帶骰子的鐘表表示等待時間為隨機(jī),對于等待隨機(jī)時間功能,常數(shù)參數(shù)用于指定等待時間的最大值。在底部的右邊的為等待時間和等待分鐘功能,用帶問號的鐘表圖標(biāo),通過連接在本功能上常數(shù)參數(shù)來指定等待的秒數(shù)。類似的,對于等待隨機(jī)時間功能,常數(shù)參數(shù)用于指定等待時間的最大值。最后兩個時間等待功能允許你用百分之一秒或分鐘分別指定等待的時間(還是用數(shù)值常量參數(shù))。圖2.49時間等待示例在圖2.49程序中,先以正向、能量級別3打開馬達(dá)A和B,然后等待0.55秒,緩慢停止A和B。因為使用了緩?fù)9δ?,?dāng)程序結(jié)束時馬達(dá)會慢慢停止。注意:此處我們有點(diǎn)不守常規(guī),因為使用了一些參數(shù),而這些參數(shù)要到后面2.7.4節(jié)中才有全部的解釋。圖2.50NXT觸動傳感器等待功能NXT等待按下功能與導(dǎo)航者級別中的幾乎相同,二個例外是:1)你必須用端口參數(shù)指定輸入端口,2)你還可以用常數(shù)參數(shù)指定傳感器等待的次數(shù)。舉例來說,你可以想要在執(zhí)行下一個功能前等待傳感器被按下三次,如圖2.51所示。等待釋放功能僅需要端口參數(shù)。圖2.51等待多次按下的程序示例圖2.52NXT光電傳感器等待功能等待亮功能是等光電傳感器的讀值高于指定的數(shù)值,這個值由常數(shù)參數(shù)指定(100=亮,0=暗)。與此類似,等待暗功能是等光電傳感器的讀值小于指定的數(shù)值。等待變亮和等待變暗功能是等光電傳感器的讀數(shù)比當(dāng)前讀數(shù)變大或變小指定值,輸入端口參數(shù)(在一開始有大量的變化)和光感開啟或關(guān)閉參數(shù)都要用導(dǎo)線連接到這些功能上。(以下了解更多的參數(shù))注意這個重點(diǎn):頭兩個功能是基于絕對光值,然而后兩個功能是基于傳感器光值的相對變化,對于適應(yīng)環(huán)境光變化的條件很重要。舉例來說,你在家要應(yīng)付的環(huán)境光值是一種,而到學(xué)校可能是另一種,如果你使用等待亮或暗功能,你在家和在學(xué)?;蛟S得到差異很大的結(jié)果,因為環(huán)境光值有差異。圖2.53等待暗(絕對)和等待變暗(相對)功能在圖2.53左邊程序中:以正向滿功率(默認(rèn)值)打開馬達(dá)A,等待輸入口1(默認(rèn)值)的光電傳感器讀數(shù)降到55以下,關(guān)閉馬達(dá)A,程序停止。右邊的程序基本與左邊類似,除了在關(guān)閉馬達(dá)A、停止程序前是等待光值降了15。在這兩個程序中,我利用了在ROBOLAB中默認(rèn)的值來避免不得不修改它們。見圖2.87在本章最后有更多的咨詢關(guān)于等待亮/暗功能。NXT光電傳感器有一個非常好的新的功能,允許你選擇是否將紅色的發(fā)光二極管關(guān)閉。在2.3.6中提到的,這個給了你更好的控制模式,環(huán)境或反射,在這個情況下你會使用光電傳感器。創(chuàng)建開/關(guān)參數(shù),將指針放置“開燈?”(中央)端。如果你使用連線工具,接線端的標(biāo)簽會顯示你放置指針端口。然后,右擊選擇create>constan,最后,為了可以選擇開或關(guān),使用操作工具。圖2.54創(chuàng)建控制反光二極管開或關(guān)的參數(shù)等待向前和反轉(zhuǎn)功能類似等待亮或者暗功能。在下面的程序里,燈光B開啟(全功率)并且程序等待距離(超聲波)傳感器來讀取值,大于15cm,NXT會播放嗡嗡聲,并且程序終止。(在程序結(jié)束時,燈B將會自動關(guān)閉)。不要指望超聲波傳感器能夠很精確,因為距離標(biāo)準(zhǔn)依靠很多因素,比如硬度,斜度和質(zhì)地。圖2.55等待向前功能示例等待響/輕和等待變響/變輕功能是類似于等待亮/暗和等待變亮/變暗功能,它們設(shè)計絕對的和相對的聲音等級。在左邊的程序中,馬達(dá)打開,程序等待直到聲音的等級達(dá)到55,馬達(dá)關(guān)閉,程序終止。在右邊的程序中,馬達(dá)打開,當(dāng)聲音的等級有規(guī)則的并且程序等到在聲音的等級增加15后,馬達(dá)關(guān)閉,程序結(jié)束。圖2.56等待響(絕對的)和等待變大(相對的變化)功能。對于NXT角度傳感器來講(內(nèi)置在馬達(dá)內(nèi)),你有三個選擇當(dāng)它使用等待功能的時候。所有的三個功能都會等到角度傳感器變化一個指定的數(shù)值,但是它們工作方式稍有不同。第一個零角度傳感器以及等待角度傳感器的值(度數(shù))超過了你指定的值。下一個“智能”等待使用均衡的控制來馬達(dá)移動指定的度數(shù)。這個是本質(zhì)上的伺服電機(jī)控制。作后的功能等待特定的值,但是不會回到原來的角度。備注:第一個和最后一個角度傳感器等待功能不會以任何方式利用馬達(dá);它們簡單的使用角度傳感器。智能等待比較你設(shè)定的值和當(dāng)前的角度傳感器讀數(shù),并且計算它們之間的差別。最大的不同,馬達(dá)的功率更大。智能等待是否真正工作?起先顯示兩個程序可以完成同樣的工作-轉(zhuǎn)動馬達(dá)A180度。左邊的程序簡單的等待傳感器的讀數(shù)到180(或更多)并且關(guān)閉馬達(dá)。實際上,馬達(dá)保持旋轉(zhuǎn)是由于慣性,即使馬達(dá)停止之后。有多少?一對快速的實驗證實了馬達(dá)可以完全在它停下之前反轉(zhuǎn)。在等待后加上停止功能減少了超過大概四分之一的反轉(zhuǎn)。右邊的程序,其實,是一個“智能”并且會真正反轉(zhuǎn)馬達(dá)來防止過頭,只有當(dāng)誤差小于1度時停下。圖2.57由于慣性左邊程序的馬達(dá)會轉(zhuǎn)過頭。右邊程序的馬達(dá)當(dāng)誤差小于1度時才會停下使用RCX等待功能在NXT上使用RCX的等待功能也是可行的,主要有兩種方式:1)使用RCX傳感器和傳感器連線適配器(見表1.1)2)使用NXT傳感器。使用RCX傳感器和連線適配器,你可以在NXT上使用老的RCX觸動,光電,角度和溫度傳感器。NXT傳感器的觸動和光電傳感器的等待功能和通信功能幾乎是一樣的。只有一個不同的是在光電傳感器上的紅色發(fā)光二極管是不能被關(guān)閉的。等待溫度上升和等待溫度下降功能可以讓程序暫停,直到溫度高于或低于指定值。攝氏或華氏溫度刻度隨意使用。所有的四個功能都需要輸入端口參數(shù)和常數(shù)參數(shù)功能與之相連,以說明傳感器的輸入口和溫度值。在本節(jié)結(jié)尾的圖2.70中有一個使用了一對溫度等待功能的示例程序。有四個角度傳感器等待功能,三個使用弧度,一個使用度。等待旋轉(zhuǎn)功能等待旋轉(zhuǎn)傳感器超過一個指定的數(shù)值(轉(zhuǎn)動單位),每圈對應(yīng)16個轉(zhuǎn)動單位。類似的,等待角度功能等待角度超過指定的值,因為每圈被16等分,所以角度分辨率是22.5度。等待旋轉(zhuǎn)w/o重置來證實等待旋轉(zhuǎn)功能,除了角度傳感器每次不等于零。等待位置w/o重置簡單的等待角度傳感器等于一個特定的值(就像等待功能相反的等待它超過一個特定的值)。等待位置w/o重置簡單的使輸入端口和數(shù)值常量參數(shù),使用在與角度傳感器等待功能相協(xié)調(diào)的情況下。圖2.58等待旋轉(zhuǎn)功能的示例在圖2.58的程序中,燈C打開并且等待角度傳感器在輸入端口1來在結(jié)束前旋轉(zhuǎn)任意角度超過24弧度(1.5轉(zhuǎn))。在先前提到過的,你可以在NXT傳感器上使用一些RCX等待功能。RCX和NXT觸動傳感器等待功能是完全可互換的。唯一的分支是使用RCX光電傳感器功能和一個NXT光電傳感器,紅色的發(fā)光二極管在NXT光電傳感器上是不會被打開的。你不可以混合使用RCX和NXT角度傳感器功能。圖2.59其他等待功能其他的等待功能會在章節(jié)3,4,和5中介紹。2.7.4參數(shù)我們已經(jīng)在導(dǎo)航者級別和上述示例中多次使用了參數(shù),但我們?nèi)孕枵降慕榻B它們,并解釋它們在發(fā)明家級別中的用途。參數(shù)用于指明:輸入口、輸出口、能量級別和常數(shù)。參數(shù)從功能面板中取出放置到圖標(biāo)窗口的方法與其它圖標(biāo)是一樣的。參數(shù)參數(shù)圖2.60NXT參數(shù)在參數(shù)子面板和NXT命令子面板之間?,F(xiàn)在這些圖標(biāo)我們用的很少。注意你在參數(shù)子功能面板中找不到橙色的常數(shù)參數(shù),但當(dāng)你在一個整數(shù)中輸入小數(shù)時,它會自動變?yōu)槌壬?。左:參?shù)與錯誤的端口相連,產(chǎn)生錯線(黑色虛線)。右:輸入口參數(shù)(1、2、3)連到應(yīng)當(dāng)連輸出口參數(shù)(A、B、C)的端口,沒有產(chǎn)生錯線(不明顯的錯誤)。圖2.61錯線示例圖2.62斷裂運(yùn)行按鈕如果程序中有連線錯誤,運(yùn)行鍵(左上角)將會斷開。單擊斷裂按鈕會打開一個彈出窗口,列出所有的錯誤。圖2.63整數(shù)和小數(shù)的常數(shù)參數(shù)兩個等待功能等待的時間是相同的,為0.31秒,第一個等待功能使用了整數(shù)值常數(shù)參數(shù)(藍(lán)色),而第二個使用了一個小數(shù)常數(shù)參數(shù)(橙色)。技巧如果你想把圖標(biāo)排列的像上面的示例一樣,先選擇圖標(biāo),然后用排列對象菜單實現(xiàn)。2.7.5得到源代碼如果你有興趣,你通過雙擊任何ROBOLAB功能圖標(biāo)就可以看到它的源代碼,如圖2.64所示。圖2.64雙擊任何圖標(biāo)獲取源代碼,在這個例子中,我們打開馬達(dá)A正轉(zhuǎn)圖標(biāo)。雙擊一個圖標(biāo)就可以打開這個圖標(biāo)的面板,圖2.65中顯示的是馬達(dá)A正轉(zhuǎn)的面板,為了看到圖標(biāo)窗口(即我們通常連線的窗口),可以在窗口菜單中選擇顯示圖標(biāo)。圖2.65在窗口菜單中選擇顯示圖標(biāo)一旦打開圖標(biāo)窗口,你就可以看到功能(函數(shù))是如何組織的,參數(shù)是如何起作用的。你看到的是LABVIEW的G-語言,我們會在第5章中涉及。圖2.66馬達(dá)A正轉(zhuǎn)的圖標(biāo)2.7.6示范程序下面列舉的5個程序會幫助你提高對初級發(fā)明家編程的理解。如果你能看懂并且明白程序做了什么,那你獲取初級發(fā)明家技能牌應(yīng)當(dāng)沒問題了。圖2.67示范一在此程序中,先以正向、能量級別3打開馬達(dá)A,在停止前等到馬達(dá)內(nèi)的角度傳感器的值大于540度(1.5圈),最后馬達(dá)會由于慣性慢慢停下。圖2.68示范二此程序在發(fā)明家級別中所做的與圖2.11中的導(dǎo)航者程序是一樣的。圖2.69示范三在此程序中,先以正向滿功率打開馬達(dá)A和B,等到連在一號端口的觸動傳感器被按下后,倒轉(zhuǎn)兩個馬達(dá)1秒鐘,停止馬達(dá),然后以正向、能量等級3打開馬達(dá)A,等待一個隨機(jī)時間(最長2秒)后停止馬達(dá)A,程序終止。在結(jié)束程序前停止馬達(dá)是非常好的編程習(xí)慣。圖2.70示范四:簡單反饋控制此程序中使用了跳轉(zhuǎn)/著陸功能對,一種你至此還未見過的循環(huán)形式。當(dāng)程序到達(dá)跳轉(zhuǎn)處時,會跳回到著陸,因此,將導(dǎo)致在跳轉(zhuǎn)和著陸間的所有事一遍一遍的重復(fù)(在此是無限做下去)。此程序可以被用于控制一組風(fēng)扇,維持溫度在75–80華氏溫度之間。圖2.71示范五:追蹤太陽此程序仍然使用自然的方法來控制反饋信息。它使用樂高太陽能電池板來追蹤太陽。馬達(dá)慢慢的轉(zhuǎn)向太陽能電池板直到打壓達(dá)到2伏,表明它已經(jīng)指向了太陽(電壓決定追蹤方向并且存在誤差)。馬達(dá)關(guān)閉,直到電壓低于1.25伏,程序跳出,重復(fù)先前步驟。太陽能電池板沒有特定的等待,我曾經(jīng)使用過一個傳感器適配器的普通電壓等待。2.7.7下一章介紹什么?迄今為止,我們?nèi)匀辉谟冒l(fā)明家模級別完成順序編程,還沒有使用它的實現(xiàn)控制結(jié)構(gòu)的能力,這將是第3章的重點(diǎn)。圖2.72發(fā)明家級別的控制結(jié)構(gòu)編程基礎(chǔ)編程基礎(chǔ)2.8編程基礎(chǔ)技能牌在本章中我會向你展示怎樣來安排你的文檔和你的程序,這樣你可以簡單的閱讀并且理解它們了。之后,我還會提供一些小貼士來避免多數(shù)的ROBOLAB缺陷,并且給予調(diào)試的提示。2.8.1使它看上去很棒在導(dǎo)航者級別中,程序非常棒,并且排列的很好。如果你已經(jīng)在發(fā)明家等級中創(chuàng)建了你自己的程序的話,那么你就知道事情會變得有些雜亂。如果你是一位教師,那么你就知道連接程序使線變的非常雜亂。以下是一個手把手的引導(dǎo)來向你展現(xiàn)怎樣來使你的程序變的好看些(即使它們不那樣運(yùn)轉(zhuǎn)的好)。圖2.73程序一看上去就是很雜亂的樣子。試試指出程序是什么內(nèi)容,你也可以猜想下,你的老師每天要面對幾百次這樣的事。圖2.74用一排式的樣式重排圖標(biāo)開始。如果你的程序非常的長,就換第二行(見第四章的事件例子)。圖2.75在你想要選擇的圖標(biāo)周圍是沒有必要畫一個選擇框的。當(dāng)你用指針畫了一個選擇框時,任何在框內(nèi)的圖標(biāo)都被選擇了。這里我不想選擇停止A和停止B圖標(biāo)。圖2.76點(diǎn)擊排列按鈕并且選擇六種排列的其中之一選項,這里我使用“垂直對中”。圖2.77結(jié)果看上去很不錯,但是圖標(biāo)還是靠的太近了。圖2.78只選擇前六個圖標(biāo)并且點(diǎn)擊排列按鈕(右擊排列物體),我使用了水平對齊。圖2.79現(xiàn)在前六個圖標(biāo)已經(jīng)排列好了,垂直方向看上去不錯,同樣的在水平方向也一樣。圖2.80對于后四個圖標(biāo)也同樣排列它們,并且移走在周圍交叉的線。和圖2.73作比較。2.8.2把它變得讓人易懂你有沒有指出過一個程序是干什么用的?現(xiàn)在我們來使它看上去更容易些,在理解任務(wù)上我們?nèi)匀幻鎸芏嗬щy,那個程序應(yīng)該做什么。計算機(jī)程序設(shè)計器使用注釋,不用為使用注釋而感到驚奇。為你的程序添加注釋是一個你應(yīng)該養(yǎng)成的習(xí)慣。在ROBOLAB中,注釋使用文本工具來添加,在工具面板中可以找到(見圖2.24和2.81)。輸入文字,簡單的點(diǎn)擊你希望文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論