【正文】
模擬端口名], [鍵值] )命令說明: 該指令是在MRC3000系統(tǒng)中從AD轉(zhuǎn)換器的端口(模擬端口)讀取16個鍵值。 0~ 7端口的信號同時給 ABYTEOUT:語法結(jié)構(gòu): BYTEOUT [字節(jié)端口名] , [輸出值]命令說明: 輸出信號以字節(jié)為單位,字節(jié)端口名可以是數(shù)字,常量和變量,輸出值可以是0255的數(shù)字,常量和字節(jié)型的變量。IN ( ):語法結(jié)構(gòu): IN(端口名)命令說明: 將一個端口輸入的數(shù)字信號保存為到一個變量中。 該命令可以使用嵌套調(diào)用。 變量用來處理傳感器的值或者模擬信號轉(zhuǎn)換的值。在minirobot控制中,一個變量是范圍是有限的,所以在變量聲明時要去合適的占用內(nèi)存最小的類型。所以當(dāng)一個數(shù)據(jù)前有+或號時會產(chǎn)生錯誤。 文中③符號表示該命令只適用于MRC3000系列控制器。數(shù)字符號??文本符號??字符串:標(biāo)志=相等或替換不相等不相等左移一位右移一位表達(dá)式和運算符:表達(dá)式由常量,變量和運算符號組成,在roboBASIC中,運算符分類如下表所示:分類功能算數(shù)運算符執(zhí)行數(shù)學(xué)運算關(guān)系運算符比較數(shù)值大小邏輯運算符比較組合條件或執(zhí)行位操作位運算符操作位或執(zhí)行位運算算數(shù)運算符:算數(shù)運算符是執(zhí)行計算的標(biāo)識符。在roboBASIC可以使用二進制(Bin),八進制(Oct),十進制(Dec)和十六進制(Hex)。(4) 聲明的常量超過65535會出錯位指示符(位操作): 在roboBASIC中,變量可按位操作,使用點操作符(.)。 MRC2000可用的變量大小為30字節(jié)。例子: DIM LED_ PORT AS INTEGER LED_PO RT = 1START: ........ ..... ........... .. GOSUB LED_TO GGLE ........... ... . GOTO START END LED_TOG G LE: TOGG LE LED_P ORT RETURNEND:語法結(jié)構(gòu): END命令說明: 在一個程序的最后,防止程序跑飛。例子:DIM A AS BY TE A = IN ( 0 ) OUT:語法結(jié)構(gòu): OUT [端口名] , [輸出值]命令說明: 控制器向端口輸出數(shù)字信號,當(dāng)輸出值為0時,端口輸出低電平(0V),當(dāng)輸出值為1時端口輸出+5V的高電平。h1010101 0 39。例子:DIM K AS BYTE K = KEYIN(0, 16)‘Input the values of 16 keys which are connected in AD port 0 as K第六章 內(nèi)存指令說明 機器人控制使用的是一塊CPU和內(nèi)存,通常描述為微型控制器(MCU).在內(nèi)存中,程序的保存和計算是很重要的部分。h40, 100 ‘寫10 0到 RAM 中地址為 40的內(nèi)存.ROMPEEK ( ):語法結(jié)構(gòu): ROMPEEK ([ROM存儲器])命令說明: 機器人控制器使用一個EEPROM來保存程序和其他目標(biāo)。該命令僅僅只是擦除字符。字符以黑色顯示。(4) 在聯(lián)機調(diào)試時移動電機到0位置。servo group 6A (0~5 ) will be u s ed. MOTOR G6C 39。在MRC3000中: 伺服電機的端口可PWM端口是不同的,所以,可以同時使用MOVE 和PWM指令。 電機方向使用常量或數(shù)字0(反轉(zhuǎn)/左轉(zhuǎn))或1(正轉(zhuǎn)/右轉(zhuǎn)),系統(tǒng)默認(rèn)值為0.例子: 在MRC2000中:DIR 0, 1, 1, 0, 1, 0 DIR , , 0 在MRC3000中:DIR G8A, 0, 1, 0, 0, 1, 0, 0 , 0 DIR G8B, 1 , 0 , 1 , 1 , 0 , 1 , 1 , 1 PTP: 打開或者關(guān)閉多電機的同時控制。[電機號]是電機的端口號。Set high speed mode.M OVEPOS: 移動位置POS: 電機位置 設(shè)置移動位置或者電機位置。電機號可以是數(shù)字,常量或字節(jié)型的變量。如果是0,將值為100的電機移動到初始位置。他們的名字分別為低中和高音階。 例子:Retry: ERX 9600, A, RetryETX: 發(fā)送RS232信號語法結(jié)構(gòu): ETX [端口速率], [發(fā)送數(shù)據(jù)] 命令說明: [端口速率]數(shù)據(jù)如下: [發(fā)送數(shù)據(jù)]可以使用數(shù)字,常量和變量。例子: GYRODIR G6A, 1, 1, 0, 0, 1, 0GYROSET: 設(shè)置一個特定的陀螺儀控制某個指定的電機組語法結(jié)構(gòu): GYROSET [電機組], [電機n的陀螺儀] … 命令說明: 略例子:GYROSET G6B, 1, 1, 2, 2, 0, 0 6 servo receives Gyro sensor 1 and processes it. 7 servo receives Gyro sensor 1 and processes it. 8 servo receives Gyro sensor 2 and processes it. 9 servo receives Gyro sensor 2 and processes it. 10 and 11 servos do no t use Gyro sensor. GYROSENSE: 設(shè)置伺服電機的陀螺儀的靈敏度語法結(jié)構(gòu): GYROSENSE [電機組], [電機N陀螺儀的靈敏度] … 命令說明: [電機N陀螺儀的靈敏度]可以使用0到255的數(shù)字或常量。例子:DIM A AS BY TE A = RCIN( 0 ) A Received signal from the RC Receipt Port is saved as variable A. GYRODIR: 當(dāng)支持使用陀螺儀時,設(shè)置伺服系統(tǒng)的方向語法結(jié)構(gòu): GYRODIR [電機組], [電機方向] …命令說明: 當(dāng)一個MRC3000系統(tǒng)的一個AD端口使用陀螺儀時,可以控制伺服系統(tǒng)的方向,陀螺儀最多可以使用四個。h80 THEN OUT 0, 0 ELSE OUT 0, 1 ENDIF GOTO Retry TX: 發(fā)送RS232信號語法結(jié)構(gòu): TX [端口速率], [數(shù)據(jù)]命令說明: 在MRC2000系統(tǒng)中,使用10端口發(fā)送RS232信號。 在MRC3000系統(tǒng)中,使用命令OUT來控制蜂鳴器。 為防止損壞,最初可以設(shè)置為初始位置之外的其他值。 一個微控芯片是安裝在AI電動機,它能與MRC通過RS232進行通訊。例子: FASTSERVO 2,190 39。但是電機1 的移動速度只有電機2的一般。電機會迅速的旋轉(zhuǎn)至設(shè)定的角度。[電機n的角度] 1,3,4可以這樣做: MOVE 6 0 , , 100, 120 如果只想操作2可以這樣做: MOVE , 140 這個過程是很困難的,特別是六個電機同時運行時。每個電機對應(yīng)一個電機號。設(shè)置的0點將會存儲在EEPROM中防止掉電丟失。例子:CLS PRINT miniROBOT , 1 FORMAT() DEC() HEX() BIN(): 指定的進制數(shù)字格式顯示語法結(jié)構(gòu): FORMAT ([變量], [輸出類型], [位置] )命令說明:當(dāng)輸出一個變量時,LCD模塊會按照一種特定的格式輸出。LCDINIT: 初始化LCD模塊語法結(jié)構(gòu): LCDINIT命令說明: 液晶顯示模塊必須使用該命令初始化,以防止出現(xiàn)不可預(yù)知的錯誤。例子:DIM A AS BY TE A = PEEK(43) ‘讀取RAM中地址為43 的值給APOKE:語法結(jié)構(gòu): POKE [RAM存儲器], [data]命令說明: POKE指令用于寫數(shù)據(jù)到內(nèi)部存儲器。Send signal “1” to port 3. TOGGLE 3 39。MRC2000系統(tǒng):字節(jié)端口端口00~7 ( 0是字節(jié)的最低位)18~11 (8 是字節(jié)的最低位)MRC3000系統(tǒng):字節(jié)端口端口00~7( 0是字節(jié)的最低位)18~15( 8是字節(jié)的最低位)216 ~2 3( 16是字節(jié)的最低位)324 ~3 1( 24是字節(jié)的最低位)432 ~3 9( 32是字節(jié)的最低位)例子: A = BYTEIN(0) 39。各口有不同的功能,參考“控制器解釋”以獲得更多的信息。使得程序簡潔清晰。變量名不區(qū)分大小寫,不能重命名。 一個變量是程序使用的一片內(nèi)存的名字。其范圍如下表所示:數(shù)據(jù)類型大小范圍Byte1byte(8bit)0255INTEGER2Byte(16bit)065535roboBASIC不支持復(fù)數(shù)。 文中②符號表示該命令只適用于MRC2000系列控制器。和basic語言一樣,加減乘除和取余。真數(shù)聲明例子Binamp。07,015 例: DIM A AS INTEGER CONST BIT_2 = 2 = 1 = 0 = IN(1) ‘從端口1讀數(shù)據(jù)并賦給A的第三位(?應(yīng)該是第四位吧) OUT 2, ‘將A的第一位傳給端口2(?應(yīng)該是第二位吧)注釋說明: 程序中合理的代碼注釋能提高代碼的編寫和維護效率。MRC3000可用的變量大小為256字節(jié)。例子:(1) 在一段代碼執(zhí)行完成后DIM A AS BY TE START: A = IN(0) IF A = 1 THEN END ........... GOTO START(2) 一個主程序結(jié)束后DIM A AS BYTE A = BYTEIN(0) IF A = 1 THEN GOSUB L1 ELSEIF A = 3 THEN GOSUB L2 ELSEIF A = 4 THEN GOSUB L3 ELSE GOSUB L4 ENDIF END L1: .............. RETURN L2: ............. RETURN L3: ............ RETURN L4: ........... RETURNSTOP/RUN:語法結(jié)構(gòu): STOP/RUN命令說明: 使用stop停止程序,使用run來從新開始程序WAIT:語法結(jié)構(gòu): WAIT命令說明: 機器人控制器中的操作系統(tǒng)有最新的實時控制程序。輸出值可以是0或常量或者是變量。Send 1 valu e(5v ) to 1, 3 ,5,7 ports ’Send 0 valu e(0v ) to 0, 2 ,4,6 portsI NK EY:語法結(jié)構(gòu): INKEY ([端口名] )命令說明: 按下開關(guān)時,實際上在電氣上和機械上被按了很多次。外部寄存器通常是EEPROM(電可擦除只讀存儲器),通常用來儲存用戶代碼。ROMPEEK或ROMPOKE可以對外部存儲器進行操作。但LCDINIT命令是刪除包括內(nèi)部變量在內(nèi)的所有信息。使用cont命令,可以調(diào)整顏色的深淺。(5) 使用ZERO命令保存這個0位置。servo group 6C (1 2~17) will be used. Ex 3) MOTOR G8A 39。例子: 在MRC2000中:MOVE 100, 5 0, 140, 120, 80, 40 MOVE 120, , , 160 MOVE , 70, 100 MOVE , , , , , 100 在MRC3000中:EX 1) M O VE G6A, 85 , 113, 72 , 117, 115 , 100 M O VE G6C, 75 , , 96, 123, , 122 M O VE G8A, 85 , 113, 72 , 117, 115 , 100, 95, 45 EX 2) M O VE G24 ,85 , 113, 72, 117, 115, 100 Is the same as。語法結(jié)構(gòu): 在MRC2000中: PTP [設(shè)定值] 在MRC3000中: PTP [SETON/SETOFF/ALLON/ALLOFF]命令說明: 對于多個運動和不同角度的運動,運動完成的時間是不同的。在控制中[角度]是10190,使用數(shù)字,常量和字節(jié)型變量。語法結(jié)構(gòu): MOVEPOS [line label] …………