當前位置:編程學習大全網 - 編程語言 - 急求RCX常規賽程序、謝謝了!

急求RCX常規賽程序、謝謝了!

編程就是為了借助於計算機來達到某壹目的或解決某個問題,而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。解釋程序是高級語言翻譯程序的壹種,它將源語言(如BASIC)書寫的源程序作為輸入,解釋壹句後就提交計算機執行壹句,並不形成目標程序。就像外語翻譯中的“口譯”壹樣,說壹句翻壹句,不產生全文的翻譯文本。這種工作方式非常適合於人通過終端設備與計算機會話,如在終端上打壹條命令或語句,解釋程序就立即將此語句解釋成壹條或幾條指令並提交硬件立即執行且將執行結果反映到終端,從終端把命令打入後,就能立即得到計算結果。這的確是很方便的,很適合於壹些小型機的計算問題。但解釋程序執行速度很慢,例如源程序中出現循環,則解釋程序也重復地解釋並提交執行這壹組語句,這就造成很大浪費。我們在為樂高機器人編程的時候通常會用ROBOLAB這樣的解釋程序。雖然它有些缺陷,但使用它的優點非常多。

ROBOLAB軟件是LEGO Group、美國Tufts大學和美國國家儀器公司(NI公司)聯合開發的教學機器人編程軟件。該軟件的核心為NI公司開發的圖形化編程環境Lab VIEW。ROBOLAB軟件從1.0版到2.5.4版已歷經8次修改,每次修改都增加不同的功能,目前ROBOLAB軟件功能已經非常強大。2.5.4版ROBOLAB是唯壹完全漢化版的機器人解釋程序。它作為教學機器人專用的編程語言,是壹個低起步、高發展、簡單易學的圖形化軟件,它可以讓壹個沒有任何編程知識的學生在短時間內掌握程序設計。它具備了C、VB等高級語言的各種功能,不同的是ROBOLAB軟件編程不需要記各種語句的格式,不需要在電腦上輸入語句,所要作的工作就是將所需要的圖標邏輯性地連接起來完成程序的編寫。ROBOLAB最特別的優點是它提供不同的水平等級以及不同的編程方式。它提供兩種方式——“編程者”和“研究者” 。研究者提供了數據采集分析功能。“編程者”分導航者和發明家者。導航者級別提供的編程環境和例子較為簡單,適宜初學者;它為初學者提供了固定的編程模塊,妳可以在這裏面用鼠標點擊圖標模塊並在下拉圖標模塊中選取所需圖標來完成。發明家級別則提供全部的控制能力。在這兩種級別中,分別分了四個等級,從淺到深。前面提到過該軟件的功能是非常強大的,那麽,它具體表現在哪幾方面呢?

1、 ROBOLAB具有200多個功能模塊,具有VB、C/C++等語言常見的功能;

2、 它可以直接或間接控制機器人運動;

3、 使用ROBOLAB作為服務器,實現遠程控制機器人;

4、 強大的數據采集和處理功能,可以通過DCP傳感器采集數據,並進行數據處理和分析;

5、 使用Lab VIEW的核心語言------G語言,來進行專業的數據分析和工程測試。

根據中國教育網2008年3月提供的數據,我國目前中小學在校人數約為2.27億人,在這些孩子當中有約3500萬人有上網經歷(約占在校人數的15.4%)。也就是說目前我國有至少3500萬的中小學生正在接觸電腦,相信在他們中間有絕大部分的學生希望獲得更多的科技知識。但目前的現狀是我國的科技教育沒有跟上這些學生的需求,很多的中小學生雖然在使用電腦、在接觸高科技的設備,比如在我們身邊越來越多的各種功能的機器人。但對他們來說這些設備都是非常神秘的,想了解其中的奧秘但無從下手。而北京西覓亞公司為我們帶來的LEGO Dacta機器人系統在這個方面找到了突破口。

LEGO Dacta機器人系統核心是RCX,壹個革命性的微型控制器,這個控制器可以通過紅外線接收在電腦上編寫的程序,也可以將采集的數據通過紅外線傳送到電腦中,甚至與“夥伴”(其它RCX)聯系,作為這個系統的大腦。它使用傳感器(就像人類的眼睛或鼻子等)感知環境的變化(例如亮度,溫度等),處理這些采集回來的數據,並控制輸出部分(馬達或燈)的開和關。當然機器人的制作是壹個循序漸進的過程,首先妳需要確立目標,妳需要壹個什麽樣的機器人?接著需要設計和搭建,然後在電腦上使用ROBOLAB 為機器人編寫程序,通過紅外發射器將程序下載到RCX 上,由於RCX是壹個微型計算機。它的核心是日立公司的H8微控制器和512KB的外置RAM。微控制器負責控制3個輸出端口和3個輸入端口。微控制器內置的16KB ROM含有基本的程序,如引導模塊以供啟動使用。除了H8微控制器和存儲芯片外,RCX含有壹個緊湊的圖形LCD,壹個微型的揚聲器(直徑為15mm)和LCD控制器,壹個電壓調整器,兩個紅外傳輸二極管,壹個光電二極管和大量的無源部件。下載成功後,RCX 就可以脫離電腦自動運行,最後是測試妳的機器人,是否實現妳的目標?哪些需要改進?回到第壹步,改進妳的機器人。在這個過程中,需要學生發揮自己的創作才能,綜合利用各種知識,還有充分發揮團隊合作精神。它也為我國的中小學生學習機器人原理,探索科技知識起到了很好的輔助作用。

在整個LEGO Dacta機器人系統的制作過程中編程是很重要的步驟,它將我們的指令傳遞給LEGO Dacta機器人系統,使LEGO Dacta機器人系統可以按照我們的目標運行。

而如何將編程的過程系統化的講解給廣大的中小學科技愛好者呢,我在具體的工作中總結出來了壹些小經驗,希望可以和大家壹起探討。下面,我用壹個電風扇的編程過程來為大家介紹。

任務是搭建壹個電風扇,就像我們家裏的電風扇壹樣。可以打開並關閉電風扇、給電風扇調節不同的風速、可以為電風扇設定關閉時間。在這個任務中我們首先需要搭建壹個電風扇出來。

由於本文重點討論編程問題,故不討論電風扇的搭建步驟。

為了更好的給中小學科技愛好者講解這個任務,在這裏將任務分三步來完成。具體步驟如下:

1、 可以控制電風扇的開關,為我們帶來陣陣涼風;

2、 可以按照需求,為電風扇調節不同的旋轉速度;

3、 為電風扇設定時間,讓電風扇可以在規定的時間打開或關閉;

為了更直觀的讓學生掌握計算機編程原理,在這裏要引入流程圖的設計和步驟編寫。流程圖是編程思路的體現,也是我們在編程前必須的準備。在這裏我們先要為電風扇編寫流程圖。它的應用非常廣泛,它是人們對解決問題的方法、思路或算法的壹種描述。它的優點是:采用簡單規範的符號,畫法簡單;結構清晰,邏輯性強;便於描述,容易理解。

下面就用流程圖將任務分解步驟逐壹完成,並在電腦上用ROBOLAB2.5.4編寫程序。

壹、 控制電風扇的開關,為我們帶來陣陣涼風;

在這裏先讓學生們想想家裏的電風扇是如何工作的?首先電風扇是停止的狀態;我們打開電源後電風扇的電機就會轉動,帶動同壹個軸上的扇葉旋轉起來;我們關閉電源後電風扇的電機就會停止轉動,扇葉也會停止旋轉。

讓學生們用觸動開關來制作電風扇的開關,使他們制作的電風扇轉動起來。(觸動傳感器是教學機器人傳感器大家庭中最簡單、最直觀的壹種。它的工作方式非常像是妳家門鈴上的按鈕:當它被按下時,電路接通,電流就通過,RCX就能檢測到這個數據流,妳的程序就會讀取觸動傳感器的當前狀態:開或者關。當然,給RCX裝上壹個觸動傳感器,就相當於人有感覺器官壹樣。機器人就可以知道妳是否在接觸它。)

按照家裏電風扇的工作方式,將馬達接入RCX中的A端口,將觸動開關接入RCX中的1端口。編寫流程圖如下:

開 始

停止A、B、C、端口

按下1號觸動傳感器

A馬達向左旋轉

按下1號觸動傳感器

結 束

通過流程圖的制作和程序編寫,學生們可以發現給機器人編寫程序的思路是按照先控制輸出端口,然後輸入端口提供信號,再次控制輸出端口的邏輯順序依次編寫的。將這個程序循環運行和單次運行,讓學生觀察程序的變化。同時可以使學生理解循環在程序中的作用。

二、 按照需求給風扇調節不同的旋轉速度;

在這裏為了能夠便於觀察,我們在編寫程序的時候就要考慮到讓馬達的轉速由低到高依次變化。按照機器人編寫程序的思路先控制輸出端口,然後輸入端口提供信號,再次控制輸出端口的邏輯順序依次編寫。編寫流程圖如下:

開 始

停止A、B、C、端口

按下1號觸動傳感器

A馬達以1倍的速度向左旋轉

按下1號觸動傳感器

結 束

A馬達以3倍的速度向左旋轉

按下1號觸動傳感器

A馬達以5倍的速度向左旋轉

按下1號觸動傳感器

RCX的微型馬達按照提供電壓的不同,有1~5種速度,他們是按照由慢到快的順序排列的。

在這裏可以讓學生想想如果用兩個觸動傳感器如何編寫程序呢?當然,在這個循環程序中無法使我們隨時可以控制風扇的開關。下面介紹更高級的編程方式及流程圖。

用這個級別編程時學生會發現比用導航者級別編程要復雜,而且前面提到的編程邏輯在這裏也需要加以改變。這就需要編寫詳細的流通圖了:

開 始

標記紅色跳轉點

按下1號觸動傳感器

A馬達向左旋轉

按下3號觸動傳感器

結 束

A馬達以1倍的速度向左旋轉

按下3號觸動傳感器

A馬達以3倍的速度向左旋轉

按下3號觸動傳感器

當按下1號觸動開關結束

A馬達5倍的速度向左旋轉

A馬達停止轉動

跳至標記紅色跳轉點

未按下

1

觸動開關

在這個程序當中我們應用了事件分支。什麽是事件呢?如果妳以前經常在用計算機編程的話,可能很早就留意到在Windows 編寫程序和在DOS下有很大的區別,特別是Windows 的消息機制,Windows 上編程是事件驅動(Event-Drive)的,Windows 產生各種事件,例如鼠標點擊,數據輸入等,程序就對各種事件進行響應。在RCX 的以前的固件(Firmware)版本中,不是事件驅動的。而現在,Firmware 3.28 首次支持這個先進的特性,配合ROBOLAB2.5,妳就可以編寫程序對事件做出迅速響應,提高了實時性。可以這樣說,事件驅動是這個新版本固件的最優秀的功能。有這樣的壹個情景,妳正在欣賞著妳喜歡的電視劇,這個時候電話響了,我們可以認

為這就是壹個事件,這個時候妳就要對這個事件進行處理,妳可以接聽電話,但很巧合的是這個時候妳家的門鈴響起,那麽,妳是先聽電話還是先開門呢?妳就要考慮這兩個任務的優先級,關於任務的優先級,將在本節後面介紹。我們在Windows 中使用的軟件也就象情景中妳,需要處理各種事件(每壹秒鐘都會有上千種事件發生),例如敲打鍵盤、點擊鼠標、時鐘等等,軟件的責任就是處理各種各樣的事件。

定義壹個事件我們需要定義事件的屬性和觸發條件,當然在標準事件中事件屬性是默認的。在這個程序中我們設置了當1號觸動開關被按下則觸發事件的條件。如果事件沒有被觸發則程序在藍色跳轉程序中循環,如果條件被觸發則程序跳出藍色跳轉程序。

特別解釋壹下跳轉的定義,跳轉語句即GOTO語句,是無條件轉移語句。即在程序的任意地方標記轉移點和著陸點。當程序運行至標記轉移點時程序會無條件的轉移至著陸點。程序著陸點可以在標記轉移點的前面也可以在標記轉移點的後面。在ROBOLAB中可以使用紅藍黃綠黑五個顏色的跳轉,如果全部用完了還可以使用白色跳轉加跳轉號(6~20)。所以在壹個程序中可以同時使用20個跳轉命令。

三、 為電風扇設定時間,讓電風扇可以在規定的時間打開或關閉;

時間是機器人系統中壹個非常重要的控制信息。在這裏我們首先讓學生用時間控制機器人的關閉,即使電風扇旋轉10秒後自動關閉。

(圖5)

如果要讓電風扇在5秒後打開,轉動10秒後停止呢。學生會很快寫出下面的流程圖。

關閉A、B、C端口

關閉A、B、C端口

關閉A、B、C端口

等待5秒鐘

等待5秒鐘

關閉A、B、C端口

開 始

等待5秒鐘

A馬達向左旋轉

等待10秒鐘

停止並結束

如何制作壹個電風扇的計時器呢,即可以控制電風扇在多長時間關閉或打開。

我們在5秒內設定風扇的關閉時間。以5秒為壹個控制單位來設定時間的計時器需要用到分支和容器。分支即if條件語句。在ROBOLAB 中,使用了分支與合並來實現條件選擇。每個圖標的左邊有壹個輸入,右邊上下有兩個不同條件的輸出,在條件分支的最後必須使用合並圖標,將兩個分支合並在壹起。那容器是什麽意思呢?很多人在學習ROBOLAB 時,覺得容器(Container)這個概念很難理解,因為在其它的編程環境下沒有容器這個概念。那麽究竟容器是什麽,它有什麽作用呢?記得我剛學習計算機語言時,老師為了解釋變量的概念以及如何交換兩個變量的值,舉個例子:壹個杯子A 裝滿牛奶,另壹個杯子B 裝滿咖啡,如何使牛奶裝在B 杯子上,而咖啡裝在A。在這裏杯子就是容器,也就是高級語言中的變量。如果妳了解微控制器(MCU),那麽容器就是MCU 中的寄存器。該程序圖如下:

(圖6)

我們看到在這個程序中運用了多重分支而沒有用到循環是為什麽呢?因為ROBOLAB的程序是從左到右依次運行的。我們如果用循環語句即While和for語句編寫程序如下。

(圖7)

圖7中給循環程序設定跳出循環的條件是紅色計時器大於5秒鐘,可在運行時我們會發現紅色計時器大於5秒鐘後並不能立即跳出循環。這是因為程序是自左向右依次運行的,在程序的循環達到跳出條件後必須再運行壹次按下1號觸動開關的步驟才可以跳出循環。如果我們在循環程序達到跳出條件後沒有按1號觸動開關則程序會在這裏停止至到1號觸動開關被按下。這樣則背離了我們使計時器5秒後結束設定的目的,所以在這裏我們要用到分支。在分支程序中我們看到1號觸動開關無論是否被按下程序都將從左到右依次運行,故程序可在5秒後結束設定,這符合我們的初衷。圖6程序流程圖如下:

開 始

A馬達向右旋轉

紅色容器清零

紅色計時器清零

設定紅色著陸點

當紅色計時器大於5秒

是否按下1號觸動開關

紅色容器加5

顯示紅色容器值

等待0.2秒

顯示紅色容器值

等待紅色容器值秒

A馬達停

跳轉至藍色著陸點

跳轉至紅色著陸點

藍色著陸點

結 束

合並分支

合並分支

流程圖中虛線部分指在程序運行中未實際運行的流程線。至此我們將電風扇的所有功能全部設定完成。將以上程序合並在壹起後可以看到我們生活中的電風扇了。學生通過這些可以清楚地認識到機器人的思維是由我們給它設定的,機器人是按照我們預先設定的程序依次運行的。如果我們的程序設定有誤機器人也會按照我們的錯誤程序運行。這樣可以使學生們體會到細心和完善的分析是非常重要的。

同時我們和學生壹起了解到搭建機器人通常有4個階段:提出創意---設計與搭建---計算機編程---運行調試。而這4個階段與現代產品的設計流程又是驚人的相似:概念設計---結構設計---智能控制---產品測試。4個階段以分析問題為基礎,始終不離開人的智能活動,這壹過程決定了人的思維的主導作用,而不僅僅是第壹階段。創意是進行創新設計的源頭,思維往往比較籠統、不成熟,其結果是概念設計方案的多樣性。方案通過結構設計來體現,我們提供了基於多學科理論基礎的可重建結構模型的創建,這些集機械結構、傳感器、控制器、電路接口以及系統理論於壹體的機器人模型,為概念設計方案多樣性的實現提供了物質保障與技術基礎。輕松的ROBOLAB編程環境下產生的設計程序完全解脫了煩瑣的程序化語言所帶來的智力投入,快速而簡單的機器人控制技術在反復調試中不斷完善的機器人模型及控制程序,為方案的決策提供了實物再現和科學的評價依據,而非純理論的評判,且方案評價幾乎是對產品全部。所有創建模型都是智能化機器人、現代科技的模擬者,都是趕超時代、開拓未來的典範。每壹個項目都是在創造現實、建造未來。

參考資料:

《ROBOLAB2.5編程指南》

  • 上一篇:壹年級數學上冊解題有多少公開課教案?
  • 下一篇:怎樣克服焦慮膽小
  • copyright 2024編程學習大全網