LEGO 講義 1

32
LEGO 講講 1 1. NXT 控控控控控 2. NXT 控控控控控控控控控 3. BricX CC 控控控控控控控 4. NXC 控控控控控控 1

description

LEGO 講義 1. 1. NXT 控制器簡介 2. NXT 電腦端驅動程式安裝 3. BricX CC 程式安裝與使用 4. NXC 基本語法介紹. 1. NXT 控制器簡介. NXT 控制器簡介. A B C USB. LCD 螢幕. 電源 ON 、確定、程式執行. 左右選擇按鍵. 回上一頁、取消、電源 OFF (主選單). 1 2 3 4. NXT. 控制器正面按鍵配置:. NXT 控制器簡介. 開機後選單: Setting : - PowerPoint PPT Presentation

Transcript of LEGO 講義 1

Page 1: LEGO  講義 1

LEGO 講義 1

1. NXT 控制器簡介2. NXT 電腦端驅動程式安裝3. BricX CC 程式安裝與使用4. NXC 基本語法介紹

1

Page 2: LEGO  講義 1

1. NXT 控制器簡介

2

Page 3: LEGO  講義 1

NXT 控制器簡介

• 控制器正面按鍵配置:

NXT 1 2 3 4

A B C USBLCD 螢幕

電源 ON 、確定、程式執行

回上一頁、取消、電源 OFF (主選單)

左右選擇按鍵

3

Page 4: LEGO  講義 1

NXT 控制器簡介• 開機後選單:– Setting :

• 可對控制器進行一些設定,例如音量、進入待機時間、刪除檔案等等。

– NXT Program 、 View 、 Try Me :• 可以用內建的程式測試馬達或是 sensor 的數值。

–My Files :• 下載到 NXT 控制器的程式就放在這裡的「 Software files 」

資料夾內。

– Blueteeth :• 藍芽功能選單,包括開關 NXT 的藍芽功能,以及與其他藍芽

裝置之搜尋、連線功能。

4

Page 5: LEGO  講義 1

2. NXT 驅動程式安裝

5

Page 6: LEGO  講義 1

NXT 驅動程式安裝• 可以到此下載驅動程式:

– http://www.robotc.net/content/lego_down/lego_down.html

• 選擇適合的版本:– NXT - 32 bit operating system (Updated for SP3)– NXT - 64 bit operating system– RCX - 32 bit operating system

• 以 NXT_32bit_driver.zip 為例:– 解壓縮,並點 LegoMindstormsNXTdriver32.msi 安裝即

可。6

Page 7: LEGO  講義 1

3-1. BRICX COMMAND CENTER 程式安裝

7

Page 8: LEGO  講義 1

Bricx Command Center 程式安裝• Bricx Command Center 可以用在 LEGO

NXC 程式語法編輯與下載到機器人上,簡稱 BricxCC 。

• NXC ( Not eXactly C )為類似 C 的語法。

• 檔案名稱: bricxcc_setup_33719.exe

• 可以到此網址下載:– http://sourceforge.net/projects/bricxcc/files/bricxcc/

8

Page 9: LEGO  講義 1

Bricx Command Center 程式安裝

• 請按 next9

Page 10: LEGO  講義 1

Bricx Command Center 程式安裝

• 請按 Yes10

Page 11: LEGO  講義 1

Bricx Command Center 程式安裝

• 輸入任意資訊後,按 next11

Page 12: LEGO  講義 1

Bricx Command Center 程式安裝

• 可以改變安裝目錄,接著按 next12

Page 13: LEGO  講義 1

Bricx Command Center 程式安裝

• 一般選擇” Typical” 即可,接著按 next13

Page 14: LEGO  講義 1

Bricx Command Center 程式安裝

• 繼續按 next > next14

Page 15: LEGO  講義 1

Bricx Command Center 程式安裝

• 安裝中…

• 安裝完桌面沒有捷徑,如果需要捷徑圖示,請到開始選單 > 程式集 >Bricx Command Center 找啟動捷徑。

15

Page 16: LEGO  講義 1

3-2. BRICX COMMAND CENTER 軟體使用

16

Page 17: LEGO  講義 1

Bricx Command Center 軟體使用

• 捷徑圖示:

• 若要 Download 程式到 NXT 上,要先將NXT 控制器接上電腦 USB 並開啟 NXT 電源。

選 USB 選 NXT

17

Page 18: LEGO  講義 1

Bricx Command Center 軟體使用

• 軟體介面:

• 如果一開始沒有接上 NXT 就開程式, 按鈕會不能用,可以重新接上 NXT 之後,到工具列 >Tool>Find Brick 重新連線。

編譯按鈕 下載程式到NXT 控制器

執行剛剛下載到 NXT 的程式 終止 NXT 程式

18

Page 19: LEGO  講義 1

Bricx Command Center 軟體使用

• 程式檔 存檔類型 為 *.nxc

19

Page 20: LEGO  講義 1

4. NXC 基本語法介紹

20

Page 21: LEGO  講義 1

基本語法介紹• 程式註解方式,與 C 相同:

• 多行註解: /* 註解文字 */• 單行註解: // 註解文字

• 保留字:• _RETURN_ _RETVAL_ _STRRETVAL_ _TMPBYTE_ _TMPWORD_

_TMPLONG_• abs asm bool break byte case• char const continue default do else• false for goto if inline int• long mutex priority repeat return safecall• short sign start stop string struct• sub switch task true typedef unsigned• until void while

21

Page 22: LEGO  講義 1

基本語法介紹• 程式結構,大致上與 C 相同:

int Add(int a, int b) //function{ return c = a + b;}

task main() // 主要程式{ int a = 1; // 宣告變數 int b = 5; // 宣告變數 int c = 0; // 宣告變數 c = Add(a,b); // 呼叫 function 執行 c = a + b}

22

Page 23: LEGO  講義 1

NXC 語法內建 FUNCTION 介紹

23

Page 24: LEGO  講義 1

NXC 語法內建 Function 介紹• 已有的 I/O port 名稱定義:

NXT 1 2 3 4

A B C USB

OUT_A OUT_B OUT_C USB 線接到電腦端

接馬達

IN_4IN_2 IN_3IN_1

接 sensor

其中 A B C ports 的名稱也可用:OUT_AB 、 OUT_AC 、 OUT_BC 、 OUT_ABC 等等,表示對這些 port 同時控制。

24

Page 25: LEGO  講義 1

NXC 語法內建 Function 介紹• 馬達控制常用的 Function 有:

– OnFwd( port, power ); // 馬達正轉– OnRev( port, power ); // 馬達反轉

– Ex : OnFwd(OUT_A,50); 表示讓 Port A 所接的馬達以 50% power

往正方向轉動。 但也可寫 OnFwd(OUT_A,-50); 讓馬達反轉。

– Off( port ); // 讓某個 port 所連接的馬達停止轉動

正轉方向

25

Page 26: LEGO  講義 1

NXC 語法內建 Function 介紹– RotateMotor( port, power, angle ); // 馬達以特定 power 轉某個角度– MotorRotationCount( port ); // 讀取某個 port 所連接之馬達的

– 注意: RotateMotor 這個 function 會等馬達轉動角度完成才執行

下一行程式,與 OnFwd 、 OnRev 不同,可以把 OnFwd 、 OnRev 看成只是啟動馬達而已。– Ex : RotateMotor(OUT_A, 75, 45); // port A 馬達以 75% power 正轉 45 度 RotateMotor(OUT_A, -75, 45); // port A 馬達以 75% power 反轉 45 度 x = MotorRotationCount(OUT_A) // 讀取 port A 目前轉的

角度 ,初始值為程式開始執行時的馬達角度,非固定值。

26

Page 27: LEGO  講義 1

NXC 語法內建 Function 介紹– Wait( ms ) // 程式等待幾毫秒的時間– Stop( bool value ) // 如果 value=1 ,則終止整個程式執行– CurrentTick( ) // 讀取從程式開始到目前的毫秒值

• 螢幕控制 ( 座標原點在螢幕左下角 ) :– ClearScreen( ); // 讓螢幕變為空白一片– NumOut( x, y, value, clear = false); // 螢幕 x,y 位置印出 value 數字, clear 為是否要先清除

螢幕 不填時預設為 false– TextOut( x, y, msg, clear = false); // 螢幕 x,y 位置印出 msg 文字, clear 為是否要先清除螢

幕 不填時預設為 false– x 、 y 值單位為螢幕上的一個點,但 y 值也可以填 LCD_LINE1~8 ,

整個螢幕可分為 8 行,第一行在最上方。27

Page 28: LEGO  講義 1

NXC 語法內建 Function 介紹– Ex : task main( ){ ClearScreen( ); // 要先清空螢幕 int t1 = CurrentTick( ); // 取時間點 t1 OnFwd(OUT_A,50); // 馬達轉動 Wait(1000); // 讓馬達轉 1 秒 Off(OUT_A); // 停止馬達 int angle = MotorRotationCount(OUT_A); // 讀取馬達角度 int t2 = CurrentTick( ); // 讀取時間點 t2 while(1){ TextOut(0,LCD_LINE1,”angle=”); //LCD 第一行顯示文字「 angle= 」 NumOut(50,LCD_LINE1,angle); //LCD 第一行中間顯示馬達轉角 TextOut(0,LCD_LINE2,”time=”);//LCD 第二行輸出文字 NumOut(50,LCD_LINE2,t2-t1); //LCD 第二行中間顯示經過時間 } }

28

Page 29: LEGO  講義 1

NXC 語法內建 Function 介紹

• 螢幕相關函數也有 LineOut(畫線)、 PointOut(畫點)、 CircleOut(畫圓)、 RectOut(畫方形)等等功能,想查詢更多的 function ,可以到此網址下載詳細說明檔案:

http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_Guide.pdf

• 或者到 BricxCC 安裝目錄裡也有: C:\Program Files\BricxCC\Documentation\NXC_Guide.pdf

29

Page 30: LEGO  講義 1

實驗練習

1. 請以所介紹的 function ,實作馬達轉動功能,並將目前角度、速度顯示在螢幕上。

2. 馬達轉動過程利用 A 馬達的角度讀值來控制 B 馬達的速度與方向,可即時控制。

30

Page 31: LEGO  講義 1

實驗練習

31

Page 32: LEGO  講義 1

備註

• 請同學下禮拜上課前組裝好一台輪型機器人,功能以能轉彎、移動即可,外型自行發揮,預留能裝置 sensor 的位置,下禮拜的課程會用到。

32