我們正在為 FTC Skystone 制定停車代碼,其中顏色傳感器正在尋找色調值的變化來停止機器人。大多數情況下它都能工作,但如果我們按下停止按鈕,代碼就會繼續執行,并會出現錯誤,OpMode 會卡在 stop() 中。除此之外,傳感器只會讀取五次中的四次,我們不知道還能做什么來讓它發揮作用。這是我們的代碼:@Overridepublic void runOpMode(){ // Drive train initialization motorFrontRight = hardwareMap.dcMotor.get("FR"); motorFrontLeft = hardwareMap.dcMotor.get("FL"); motorBackLeft = hardwareMap.dcMotor.get("BL"); motorBackRight = hardwareMap.dcMotor.get("BR"); motorFrontLeft.setDirection(DcMotor.Direction.FORWARD); motorFrontRight.setDirection(DcMotor.Direction.REVERSE); motorBackLeft.setDirection(DcMotor.Direction.FORWARD); motorBackRight.setDirection(DcMotor.Direction.REVERSE); // Color sensor initialization sensorColor = hardwareMap.get(ColorSensor.class, "color_sensor"); color2 = hardwareMap.get(ColorSensor.class, "color2"); sensorDistance = hardwareMap.get(DistanceSensor.class, "color_sensor"); // Color Sensor Values float hsvValues[] = {0F, 0F, 0F}; final float values[] = hsvValues;. final double SCALE_FACTOR = 255; telemetry.addData("Status: ", "Initialized"); telemetry.addData(">", "Press Play to start op mode"); telemetry.update(); waitForStart(); while (opModeIsActive()){ // Color Sensor Code Color.RGBToHSV((int) (color2.red() * SCALE_FACTOR), (int) (color2.green() * SCALE_FACTOR), (int) (color2.blue() * SCALE_FACTOR), hsvValues); Color.RGBToHSV((int) (sensorColor.red() * SCALE_FACTOR), (int) (sensorColor.green() * SCALE_FACTOR), (int) (sensorColor.blue() * SCALE_FACTOR), hsvValues); } }
1 回答

縹緲止盈
TA貢獻2041條經驗 獲得超4個贊
我們通過 FTC 論壇了解到 while (step == 0){
if (opModeIsActive()){
到
while (step == 0 && opModeIsActive()){
添加回答
舉報
0/150
提交
取消