320 likes | 455 Views
組裝及控制機器人. Outline. 聲控自走車組裝 開發環境安裝及設定 Lejos 控制 NXT 說明 實驗 - 聲控自走車 練習. 開發環境安裝及設定. 1. 安裝 Java JDK 2. LEGO 驅動程式安裝 3. 安裝 Lejos Library 4. Firmware 更新成 Lejos 5. Window XP 環境變數設定. 開發環境安裝及設定. 安裝 Java JDK 1.6
E N D
Outline • 聲控自走車組裝 • 開發環境安裝及設定 • Lejos控制NXT說明 • 實驗-聲控自走車 • 練習
開發環境安裝及設定 • 1. 安裝Java JDK • 2. LEGO驅動程式安裝 • 3. 安裝Lejos Library • 4. Firmware 更新成Lejos • 5. Window XP 環境變數設定
開發環境安裝及設定 • 安裝Java JDK 1.6 • 網址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7u7-downloads-1836413.html (Windows x86(32bit) or Windows x64(64bit)) • LEGO驅動程式安裝 • 安裝LEGO原廠驅動程式NXT_Driver_v1.1 • LegoMindstormsNXTdriver32.msi(32bit) or LegoMindstormsNXTdriver64.msi(64bit) • 安裝Lejos Library • 執行leJOS_NXJ_0.8.5-Setup.exe • 安裝LEGO Lejos驅動程式 • 執行libusb-win32-devel-filter-1.2.6.0.exe
開發環境安裝及設定 • 4. Firmware 更新成Lejos(人工智慧課程學生不需更新) • Setp0: 按住reset按紐約5秒 • Setp1: 改變目錄至C:\lejos_nxj\bin目錄底下 • Setp2: 執行nxjflash.exe • Setp3: 更新成功畫面如下所示
開發環境安裝及設定 • 5. Window XP環境變數設定 • • Path :再加入下列二個路徑 • C:\Program Files\leJOS NXJ\bin;(NXJ安裝路徑) • C:\Program Files\Java\jdk1.6.0_07\bin;(Java安裝路徑)
Lejos控制NXT說明 • 1. Cross-Compile LEGO program • 2. Lego機器人模組基本元件馬達的控制
Cross-compile Java program • 1. Compile java program • nxjc MySrceen.java • 2. Upload to LEGO Robot • nxj MySrceen • 結果如下所示:
Lego機器人模組基本元件馬達的控制NXT基本語法-馬達控制Lego機器人模組基本元件馬達的控制NXT基本語法-馬達控制 Motor類別-靜態類別(Static) : • 需Import的類別庫: • import lejos.nxt.Motor; • 可使用的Method: • setPower(int); //括弧內為0-100 • setPower(int); //括弧內為0-100 • forward(); //前進 • backward(); //後退 • isForward(); //是否正在前進 • flt(); //順勢轉動直到停止 • rotate(int); //旋轉度數,括弧內可放負數 • stop(); //馬上停止 • 程式範例: • Motor.A. forward(); //連接Port A 的馬達前進 • Motor.A.backward(); // 連接Port A 的馬達後退 • Motor.A.isForward(); // 連接Port A 的馬達是否正在前進 • Motor.B.flt(); //連接Port B 的馬達順勢轉動直到停止 • Motor.C.rotate(35); // 連接Port C 的馬達旋轉35度數 • Motor.C.stop(); // 連接Port C 的馬達馬上停止
實驗-聲控自走車 • 目的: • 熟悉Sound sensor之使用 • 動作說明: • 自動車在往前行駛中,接收到聲音訊號,改變成後退行駛 • 自動車在後退行駛中,接收到聲音訊號,改變成往前行駛 • 示意圖如下所示:
NXT基本語法–聲音感測器 • SoundSensor類別: • 需Import的類別庫: • import lejos.nxt.SoundSensor; • import lejos.nxt.SensorPort; • 須先指定其連接port number • SensorPort.S1 : SensorPort S1的Object • 可使用的Method: • readValue() //讀取聲音分貝值 • setDBA(Boolean dba) //設定單位, true 讀取聲音單位為分貝 • 程式範例: • 將Sound Sensor 連接到port1: • SoundSensor mySound = new SoundSensor(SensorPort.S1); • Method 呼叫: • int soundValue=mySound.readValue(); //讀取聲音分貝值給soundValue 變數 • mySound. setDBA(true); //設定單位
完整範例程式 } public void carStateControl(int state) throws Exception{ if(state ==1) carForward(); else if(state ==2) carBackward(); } public void carForward() throws Exception{ Motor.B.forward(); Motor.C.forward(); lcdShow("forward"); } public void carBackward() throws Exception{ Motor.B.backward(); Motor.C.backward(); lcdShow("backward"); } public void lcdShow(String showStr) throws Exception{ LCD.clear(); LCD.drawString(showStr,0,4); LCD.refresh(); Thread.sleep(1000); } }//end clases import lejos.nxt.*; import lejos.nxt.addon.*; import java.lang.System; public class MySoundControl{ static int state = 1; static int s=0; static boolean flag=true; SoundSensor mysound = new SoundSensor(SensorPort.S3);//sound public static void main(String[] args) throws Exception{ MySoundControl msc = new MySoundControl(); while(!Button.LEFT.isPressed()){ if(msc.isHighSound()){ if(msc.state==1) msc.state=2; else if(msc.state==2) msc.state=1; } msc.carStateControl(msc.state); }//end while }//end main public boolean isHighSound(){ if(mysound.readValue()>70) return true; else return false;
練習 • 自動車在往前行駛中,接收到聲音訊號,左轉九十度,改變成往前行駛 • 自動車在後退行駛中,接收到聲音訊號,右轉九十度,改變成往前行駛
伺服馬達 燈泡 LCD螢幕 左右按鈕 Enter NXT主機 Esc Touch Sound Light Ultrasonic