1 / 47

leJOS NXJ Closedoor training

leJOS NXJ Closedoor training. 講師: Jimmy Chen. 國立成功大學機械所碩士 訊連科技軟體工程師 台大電機所羅仁權教授研究助理 CAVE 教師團隊講師. 講師自介. CAVE 小小原始人 科學創意工坊. Creativity Adventure. Virtue Enjoy. 認識 leJOS JAVA 環境介紹 認識感測器 實作體驗. 今日課程目標. 可跨平台 簡單 物件導向 安全 穩定 多執行序 支援多種檔案操作. 為何要學 leJOS NXJ. 安裝 NXT 驅動程式

miles
Télécharger la présentation

leJOS NXJ Closedoor training

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. leJOS NXJClosedoor training 講師:Jimmy Chen

  2. 國立成功大學機械所碩士 訊連科技軟體工程師 台大電機所羅仁權教授研究助理 CAVE教師團隊講師 講師自介

  3. CAVE 小小原始人 科學創意工坊 Creativity Adventure Virtue Enjoy

  4. 認識leJOS JAVA環境介紹 認識感測器 實作體驗 今日課程目標

  5. 可跨平台 簡單 物件導向 安全 穩定 多執行序 支援多種檔案操作 為何要學leJOS NXJ

  6. 安裝NXT 驅動程式 安裝JDK (Java Development Kit) 安裝leJOS NXJ 電腦環境設定 安裝NXJ 韌體 安裝與設定

  7. Java 有為64 位元Windows 提供「Windows x64」版本,但經筆者測試後發現64 位元版本可能會導致leJOS 找不到NXT 驅動程式,因此建議仍然使用32 位元版本即可。 若您必須使用64 位元版本,可以參閱附錄B-5:Windows 64 位元相容性解決方案。 注意

  8. leJOS使用的韌體和NXT 原廠韌體不同,在開始編寫程式之前,需要先更新leJOS韌體。 將您的NXT 開機並用USB線材與電腦連接,進入命令提示字元後打nxjflashg,左邊的視窗就會跳出,再點選Start Program即可開始更新韌體。 安裝NXJ 韌體

  9. 安裝NXJ 韌體

  10. 更新韌體會刪除所有NXT 裡的檔案: 選「是」清除所有檔案 選「否」不清除檔案 安裝NXJ 韌體

  11. 安裝完成後,會詢問是否重新安裝NXT 韌體,若沒有發生問題按「否」。 安裝NXJ 韌體

  12. 韌體安裝完成後獲釋開機時會出現 圖示及「LEJOS」字樣,並會發出「Do、So、Me」聲音。 若開機不成功,可能是電力不足或是韌體安裝失敗。 NXT開機

  13. NXT主選單畫面 MYNXT BT >Run Default Files Bluetooth Sound System Version • 主選單上方的「MYNXT」表示NXT的名稱。 • 「BT」表示已開啟藍芽通訊,若顯示反白的「BT」表示藍芽通訊關閉。

  14. 在「我的電腦」上按右鍵→「內容」→ 「進階」→「環境變數」。 在「系統變數」中新增變數: 電腦環境設定

  15. 在「系統變數」中修改變數: 電腦環境設定

  16. 點選「開始」→「執行」,輸入cmd後進入命令提示字元。點選「開始」→「執行」,輸入cmd後進入命令提示字元。 在命令提示字元視窗中依序輸入: 「javac」、「java」、「nxjc」、「nxj」、「nxjpcc」、「nxjpc」。 如果設定正確會出現一些對應這些指令的內容。 測試環境設定

  17. 若碰到以下途中的情況,請重新檢查所有的設定是否正確無誤。若碰到以下途中的情況,請重新檢查所有的設定是否正確無誤。 環境設定錯誤

  18. 建立原始碼

  19. 建立原始碼 >>>

  20. 開啟檔案

  21. Notepad++

  22. 請不要用排版軟體編輯原始檔,例如Word或是OpenOffice.org的writer,因為Java原始碼是「純文字」的檔案,文字本身不具有格式,排版軟體可能會加入表示格式的文字影響原始碼內容。 編輯器建議

  23. API為Application Programming Interface的縮寫,意為「應用程式介面」 。 內容包含了程式擁有的變數、方法、類別等解釋,通常以文件的形式呈現。 leJOS 的API 文件已安裝在電腦中,位在: <XP>C:\Documents and Settings\使用者名稱 \leJOSNXJProjects\classes\doc\ <W7>C:\Users\使用者名稱\leJOSNXJProjects\ classes\doc leJOS API

  24. Sample3_1.java。 車子前進4秒鐘。 範例一

  25. 何謂編譯(Compile): 「編譯」是把「.java」原始碼檔案轉換成「.class」檔案的動作,其中「.java」檔案是給人看的,「.class」是給電腦看的。在轉換的過程中,需要一個「編譯器」,把原始碼翻譯成電腦的語言。 leJOS的原始碼本身是Java語言,副檔名為「.java」。經過Java編譯器編譯後,產生副檔名為「.class」的Java位元組碼(Java bytecode)檔案,再經過leJOS封裝成「.nxj」檔案,就可以由NXT執行。 編譯Java 原始檔

  26. 編譯Java 原始檔

  27. 編譯Java 原始檔

  28. 進入命令提示字元視窗。 用「nxjc 檔案名稱」指令來編譯leJOS 原始檔。 用「nxj 程式名稱」下載程式到NXT。 編譯Java 原始檔

  29. Sample3_2.java。 應用兩輪同時正轉、反轉來前進、後退,或只動其中一輪來轉彎,加上時間的控制,可以設定動作的時間長度。 範例二

  30. 變數(Variable)是指在程式執行階段中可能會因為某些狀況改變的數值。變數(Variable)是指在程式執行階段中可能會因為某些狀況改變的數值。 隨時可以讀取或更改變數所儲存的值。 變數在程式應用上極為廣泛,不論是記錄資料或是迴圈執行次數都用得到變數。 變數

  31. 可包含英文字母、數字、底線「_」。 可以用英文字母或底線「_」作為開頭,但不可是數字。 不能有空格。 英文大小寫有分別。 不能是Java 的關鍵字或保留字。 變數的命名方式

  32. Java 的關鍵字及保留字

  33. 使用變數時,為了宣示變數的存在,要對這個變數進行「宣告」,這樣記憶體就會分配給它一段記憶體空間。使用變數時,為了宣示變數的存在,要對這個變數進行「宣告」,這樣記憶體就會分配給它一段記憶體空間。 宣告時,變數的型態寫在前面,變數名稱寫後面,記得最後面要寫分號。 在程式上「=」表示「存入」或「指定」,也就是說程式上的「=」會把右方的值儲存到左方的變數。 請注意設定變數值時不能超過它所容許的範圍,否則會造成溢位錯誤。 變數資料型態的宣告

  34. Java 變數型別

  35. Sample4_1.java 在程式中使用變數可以使更改數值時更方便。 要修改車子前進與後退的時間時只要更改代表時間的變數值就好,不用逐行修改每一個的參數。 範例三

  36. 我們可以將一段文字宣告為字串(String)或將一個字母宣告為字元(char)。我們可以將一段文字宣告為字串(String)或將一個字母宣告為字元(char)。 字串和字元的宣告和指定的方式都和之前的資料型態相同。 字串和字元不同的地方在於字串可以儲存一段文字,字元只能儲存一個文字符號。 字串要用雙引號包起來,字元則是用單引號。 字串與字元

  37. leJOS 的感應器類別是包含在lejos.nxt 類別之下,因此不必額外載入其他套件。 使用感應器時必須使用對應的類別來建立感應器物件後才能正確使用。 用SensorPort.S1 來表示觸碰感應器接在NXT 輸入端1。 感應器類別 sensor = new 感應器類別(輸入端); TouchSensor touch = new TouchSensor(SensorPort.S1); 感應器

  38. 觸碰感應器使用TouchSensor 類別建立感應器物件,並需指定感應器的輸入端。 TouchSensor 類別下的方法只isPressed()來取得按鈕狀態並回傳一個布林值來代表是否被壓下。 True 為壓下,反之為false。 觸碰感應器 TouchSensor touch = new TouchSensor(SensorPort.S1); boolean bump = touch.isPressed();

  39. Sample5_1.java。 請在範例機器人裝上一個觸碰感應器,觸碰感應器要朝向前方。 執行時機器人會向前走,一旦撞到障礙物就會後退並轉彎來躲避障礙物。 碰碰車

  40. 聲音感應器使用SoundSensor 建立感應器物件,並需指定感應器的輸入端。 用readValue()方法取得音量,回傳一個介於0~100 之間的整數值。 另外可以加上一個布林參數來設定聲音的模式為dB 或dBA。 聲音感應器 SoundSensor sound = new SoundSensor(SensorPort.Sl); int n = sound.readValue(); SoundSensor sound = new SoundSensor(SensorPort.S1, true); //使用dBA模式 SoundSensor sound = new SoundSensor(SensorPort.S1, false); //使用dB模式

  41. Sample5_2.java。 在範例機器人裝上一個聲音感應器,聲音感應器建議朝上且離馬達遠一點會有比較良好的偵測效果。 執行時只要對感應器喊一聲,車子就會前進,再喊一聲,便停止並結束程式。 聲控車

  42. 光感應器用LightSensor 建立感應器物件。 另外可以加上一個布林參數來改變模式。 光感應器 LightSensor light = new LightSensor(SensorPort.S1); LightSensor light = new LightSensor(SensorPort.S1, true); //反射光模式 LightSensor light = new LightSensor(SensorPort.S1, false); //環境光模式

  43. readValue()- 讀取亮度值,讀取的亮度值為0~100 的百分比值,以int 型態回傳。 setFloodlight() - 切換反射光、環境光模式。 LightSensor類別 LightSensor light = new LightSensor(SensorPort.S1); light.setFloodlight(true); //反射光模式 light.setFloodlight(false); //環境光模式

  44. Sample5_3.java。 在附錄B 的範例機器人前方裝上一個光感應器,光感應器朝下。 機器人會朝黑線移動,機器人一旦偵測到黑線就會停下來。 遇到黑線停止

  45. 超音波感應器使用UltrasonicSensor 類別建立感應器物件,需指定感應器的輸入端。 getDistance() - 取得距離 以公分為單位,以int 型態回傳,可測最遠距離大約170 公分,若沒有偵測到物件則回傳255。 超音波感應器 UltrasonicSensor ultrasound = newUltrasonicSensor(SensorPort.S1); int n = ultrasound.getDistance();

  46. Sample5_4.java。 機器人會試著和前方的物體保持固定的距離。 將手放到超音波感應器前面,並將手前後緩緩移動,機器人會前進或後退來調整距離。 保持距離

  47. Q & A

More Related