【RobotC編程】VEX IQ機器人「底盤車」遙控程序怎麼寫?
來自專欄玩轉VEX IQ機器人
方法一:圖形化RobotC編程
(Graphical ROBOTC for VEX Robotics 4.X)
01 點擊New File,新建程序,打開Motors and Sensors Setup。
02 將所有原來的馬達和感測器的默認設置統統先清空,然後自定義左、右馬達和平移馬達。
注意:左、右兩個馬達必須在Drive Motor Side選項框內,分別選擇Left和Right。
03 點擊Compile Program(編譯程序),然後根據提示框,先保存程序。
04 拖入下列程序積木、更改參數,完成所有圖形化編程。
05 選中Robot→VEX IQ Controller Mode→TeleOp - Remote Controller Required,確保機器人切換到遙控器遙控模式。
06 打開遙控器電源後,點擊Download to Robot下載程序 。
補充說明:
「平移輪」的編程方法,也就是在遙控器(Joystick)上為「按鈕」設置相應功能的編程方法。
因此,如果學會了如何編寫控制平移輪的程序,也就學會了如何用按鈕控制「吃球」和「吐球」(得分)的編程方法。
從整體上來說,如果學會了編寫這個底盤車的程序,也就學會了如何編寫擁有6個馬達的VEX IQ競賽機器人的基礎遙控程序。
方法二:文本型RobotC編程
(ROBOTC for VEX Robotics 4.X)
01 新建程序,打開Motors and Sensors Setup,自定義左右馬達和平移馬達。
02 點擊Compile Program(編譯程序),然後根據提示框,先保存程序。
03 對應於方法一的圖形化程序,相同功能的文本型C語言代碼如下:
#pragma config(Motor, motor1, LMtr, tmotorVexIQ, PIDControl, encoder)#pragma config(Motor, motor2, RMtr, tmotorVexIQ, PIDControl, encoder)#pragma config(Motor, motor6, PMtr, tmotorVexIQ, PIDControl, encoder)//*!!Code automatically generated by ROBOTC configuration wizard!!*//task main(){ int Lspd=0,Rspd=0; while(1){ displayCenteredBigTextLine(0,"%.2fV",(float)nImmediateBatteryLevel/1000.0); Lspd = getJoystickValue(ChA) + getJoystickValue(ChC); Rspd = getJoystickValue(ChA) - getJoystickValue(ChC); setMotorSpeed(LMtr,Lspd); setMotorSpeed(RMtr,-Rspd); if(getJoystickValue(BtnLUp)==1 && getJoystickValue(BtnLDown)==0){ setMotorSpeed(PMtr,-100); } else if(getJoystickValue(BtnLUp)==0 && getJoystickValue(BtnLDown)==1){ setMotorSpeed(PMtr,100); } else if(getJoystickValue(BtnLUp)==0 && getJoystickValue(BtnLDown)==0){ setMotorSpeed(PMtr,0); } }}
或:
#pragma config(Motor, motor1, LMtr, tmotorVexIQ, PIDControl, encoder)#pragma config(Motor, motor2, RMtr, tmotorVexIQ, PIDControl, encoder)#pragma config(Motor, motor6, PMtr, tmotorVexIQ, PIDControl, encoder)//*!!Code automatically generated by ROBOTC configuration wizard!!*//task main(){ int Lspd=0,Rspd=0; while(1){ displayCenteredBigTextLine(0,"%.2fV",(float)nImmediateBatteryLevel/1000.0); Lspd = getJoystickValue(ChC) + getJoystickValue(ChA); Rspd = getJoystickValue(ChC) - getJoystickValue(ChA); setMotorSpeed(LMtr,Lspd); setMotorSpeed(RMtr,Rspd); if(getJoystickValue(BtnLUp)==1 && getJoystickValue(BtnLDown)==0){ setMotorSpeed(PMtr,-100); } else if(getJoystickValue(BtnLUp)==0 && getJoystickValue(BtnLDown)==1){ setMotorSpeed(PMtr,100); } else if(getJoystickValue(BtnLUp)==0 && getJoystickValue(BtnLDown)==0){ setMotorSpeed(PMtr,0); } }}
註:文本型編程,寫出了arcadeControl函數的「底層」代碼,底層中,將遙控器上的兩個搖桿(joystick)上的各一個通道:ChA和ChC,進行了數值「疊加」的處理。
04 選中Robot→VEX IQ Controller Mode→TeleOp - Remote Controller Required,確保機器人切換到遙控器遙控模式。
05 打開遙控器電源後,點擊Download to Robot下載程序 。
推薦閱讀: