320 likes | 512 Views
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 :
E N D
LEGO 講義1 1. NXT控制器簡介 2. NXT電腦端驅動程式安裝 3. BricX CC程式安裝與使用 4. NXC基本語法介紹
NXT控制器簡介 A B C USB LCD螢幕 電源ON、確定、程式執行 左右選擇按鍵 回上一頁、取消、電源OFF(主選單) 1 2 3 4 NXT 控制器正面按鍵配置:
NXT控制器簡介 • 開機後選單: • Setting: • 可對控制器進行一些設定,例如音量、進入待機時間、刪除檔案等等。 • NXT Program、View、Try Me: • 可以用內建的程式測試馬達或是sensor的數值。 • My Files : • 下載到NXT控制器的程式就放在這裡的「Software files」資料夾內。 • Blueteeth : • 藍芽功能選單,包括開關NXT的藍芽功能,以及與其他藍芽裝置之搜尋、連線功能。
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安裝即可。
Bricx Command Center 程式安裝 • Bricx Command Center可以用在LEGONXC程式語法編輯與下載到機器人上,簡稱BricxCC。 • NXC(Not eXactly C)為類似C的語法。 • 檔案名稱:bricxcc_setup_33719.exe • 可以到此網址下載: • http://sourceforge.net/projects/bricxcc/files/bricxcc/
Bricx Command Center 程式安裝 請按next
Bricx Command Center 程式安裝 輸入任意資訊後,按next
Bricx Command Center 程式安裝 可以改變安裝目錄,接著按next
Bricx Command Center 程式安裝 一般選擇”Typical”即可,接著按next
Bricx Command Center 程式安裝 繼續按next > next
Bricx Command Center 程式安裝 安裝中… 安裝完桌面沒有捷徑,如果需要捷徑圖示,請到開始選單>程式集>Bricx Command Center找啟動捷徑。
Bricx Command Center軟體使用 選USB 選NXT 捷徑圖示: 若要Download程式到NXT上,要先將NXT控制器接上電腦USB並開啟NXT電源。
Bricx Command Center軟體使用 執行剛剛下載到NXT的程式 終止NXT程式 編譯按鈕 下載程式到NXT控制器 軟體介面: 如果一開始沒有接上NXT就開程式, 按鈕會不能用,可以重新接上NXT之後,到工具列>Tool>Find Brick重新連線。
Bricx Command Center軟體使用 程式檔 存檔類型 為*.nxc
基本語法介紹 • 程式註解方式,與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
基本語法介紹 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 } 程式結構,大致上與C相同:
NXC語法內建Function介紹 A B C USB USB線接到電腦端 OUT_B OUT_C OUT_A 接sensor 接馬達 其中A B C ports的名稱也可用:OUT_AB、OUT_AC 、OUT_BC、OUT_ABC等等,表示對這些port同時控制。 1 2 3 4 NXT IN_1 IN_2 IN_3 IN_4 已有的I/O port名稱定義:
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所連接的馬達停止轉動
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) // 讀取portA目前轉的角度 ,初始值為程式開始執行時的馬達角度,非固定值。
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行,第一行在最上方。
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第二行中間顯示經過時間 } }
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
實驗練習 1.請以所介紹的function,實作馬達轉動功能,並將目前角度、速度顯示在螢幕上。 2.馬達轉動過程利用A馬達的角度讀值來控制B馬達的速度與方向,可即時控制。
備註 請同學下禮拜上課前組裝好一台輪型機器人,功能以能轉彎、移動即可,外型自行發揮,預留能裝置sensor的位置,下禮拜的課程會用到。