1 / 10

程式設計實作

程式設計實作. 馬達控制模式. 無控制模式 : 之前所使用的 OnFwd() 與 OnRev() 指令都屬於無控制模式, NXT 只會確認哪個馬達要轉動、轉哪個方向以及要給多少電力,我們只能透過 Wait() 來控制馬達轉動的秒數。 控制模式 : 指令為 OnFwdReg() 與 OnRevReg() 。 控制模式的參數有 : OUT_REGMODE_IDLE ( 無控制模式 ) OUT_REGMODE_SPEED ( 速度控制模式 ) OUT_REGMODE_SYNC ( 同步模式 ). 速度控制模式. 速度控制模式可以將馬達轉數維持穩定。

upton
Download Presentation

程式設計實作

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. 程式設計實作

  2. 馬達控制模式 無控制模式 : 之前所使用的OnFwd()與OnRev()指令都屬於無控制模式,NXT只會確認哪個馬達要轉動、轉哪個方向以及要給多少電力,我們只能透過Wait()來控制馬達轉動的秒數。 控制模式: 指令為OnFwdReg()與OnRevReg()。 控制模式的參數有: OUT_REGMODE_IDLE(無控制模式) OUT_REGMODE_SPEED(速度控制模式) OUT_REGMODE_SYNC(同步模式)

  3. 速度控制模式 速度控制模式可以將馬達轉數維持穩定。 當使用速度控制模式時,即使負載改變NXT仍會將馬達維持在一定的轉速。 注意:當使用速度控制模式時,馬達出力不要設定太高的值,最好不要超過80 語法: OnFwdReg(輸出端, 速度, 控制模式 ); 範例: OnFwdReg(OUT_C, 40, OUT_REGMODE_SPEED);

  4. 同步模式 同步模式可以將兩顆馬達同步化,馬達會根據對方的狀況作調整。 範例: OnFwdReg(OUT_AC, 50, OUT_REGMODE_SYNC); 另一組馬達同步指令:OnFwdSync()與OnRevSync() 語法:OnFwdSync(輸出端, 速度, 轉彎百分比); 我們可以透過指定轉彎百分比(-100~100)來設定機器人轉彎的效果。0就是直走,100與-100為原地旋轉,50與-50則是以一個輪子為圓心來轉彎。

  5. 馬達轉速表模式 NXT馬達有內建角度感應器,讓我們可以精準地控制馬達轉軸的位置與轉動速度,透過角度感應器與RotateMoter()指令,馬達就能轉動正確的角度。 RotateMoter()指令語法: RotateMoter(輸出端, 速度, 角度 ); 範例: RotateMoter(OUT_A, 50, 360); 我們可以藉由改變速度與角度的正負值來控制馬達的轉動方向,如果速度與角度皆為正值或負值,馬達將正向轉動,若一正一負,馬達則會反轉。

  6. RotateMoter()延伸指令 RotateMoter()的延伸指令:RotateMoterEx() 語法: RotateMoterEx(輸出端, 速度, 轉動角度, 轉彎百分比, 是否同步?, 是否煞車?) 範例:RotateMoterEx(OUT_AC, 75,180,0,true,true); //AC馬達以75%的電力旋轉180度、直走、啟用同步模式、使用電子煞車 task main() { RotateMoterEx(OUT_AC, 40,360,0,true,true); //AC馬達以40%的電力旋轉360度、直走、啟用同步模式、使用電子煞車 RotateMoterEx(OUT_AC, 40,180,25,false,true); //AC馬達以40%的電力旋轉180度、微轉彎、無同步、使用電子煞車 RotateMoterEx(OUT_AC, 80,180,-50,true,false); //AC馬達以80%的電力旋轉180度、反向以單輪為圓心轉彎、啟用同步模式、無煞車 RotateMoterEx(OUT_AC, 80,360,100,false,false); //AC馬達以80%的電力旋轉360度、原地旋轉、無同步、無煞車 }

  7. 馬達過度負載 MotorOverload()指令,語法:MotorOverload(輸出端); MotorOverload可以偵測馬達是否有遇到阻力,當馬達遇到阻力時,也就是當馬達實際轉速小於目標值時就會回傳1,反之回傳0。 在使用MotorOverload()指令時,請務必注意此指令必須配合控制模式使用,因為控制模式具有回饋的功能,NXT才有辦法透過角度感應器知道馬達是否有遇到阻力。 task main(){ OnFwdReg(OUT_A, 50, OUT_REGMODE_SPEED); until(MotorOverload(OUT_A)==1); off(OUT_A); }

  8. 顏色感應器 顏色感應器可以辨別黑、白、紅、藍、黃與綠六種顏色,另外可以當作三色燈泡使用。顏色感應器有兩個燈泡,其中右上角的燈泡可以發出紅、綠與藍色的光,左上角則是接收資料。 SetSensorColorFull(輸入端); 如果要使用顏色感應器的顏色辨識功能就必須使用此指令,SetSensorColorFull()會讓感應器的紅、藍、綠燈同時亮起,以助辨識顏色。 若要讀取感應器的值,只要使用Sensor()指令即可,不同顏色會回傳不同的值。 回傳值為1 代表為黑色 回傳值為2 代表為藍色 回傳值為3 代表為綠色 回傳值為4 代表為黃色 回傳值為5 代表為紅色 回傳值為6 代表為白色

  9. 顏色感應器 若是要使用顏色感應器的燈泡功能,需要使用下列指令: SetSensorColorRed(輸入端); //開啟顏色感應器中的紅色燈 SetSensorColorBlue(輸入端);//開啟顏色感應器中的藍色燈 SetSensorColorGreen(輸入端);//開啟顏色感應器中的綠色燈 SetSensorColorNone(輸入端); //燈泡關閉

  10. 實作 實作一   將課本EX7-4使用RotateMotorEx()改寫。 實作二   使用MotorOverload()指令做出不需要觸碰感應器也可以偵測障礙物, 並改變行走方向。 PPT下載位址: http://oss.csie.fju.edu.tw/~neilsun100/program.html

More Related