C 触摸传感器不工作

C 触摸传感器不工作,c,robot,nxt,C,Robot,Nxt,我试图在RobotC中创建一个非常简单的程序。在此程序中,机器人将向前移动,直到触碰传感器 #pragma config(Sensor, S2, touchSensor, sensorTouch) void setMotors(int a, int b){ motor[motorA] = a; motor[motorB] = b; } task main(){ wait1Msec(100);//Wait for sensor to init s

我试图在RobotC中创建一个非常简单的程序。在此程序中,机器人将向前移动,直到触碰传感器

#pragma config(Sensor, S2,     touchSensor,    sensorTouch)

void setMotors(int a, int b){
    motor[motorA] = a;
    motor[motorB] = b;
}

task main(){
    wait1Msec(100);//Wait for sensor to init

    setMotors(50, 50);

    while(sensorValue(touchSensor) == 0){
        //Do Nothing
    }

    setMotors(0, 0);
}
该代码应使机器人向前移动,直到触发触摸传感器。 每当我尝试用触摸传感器做任何事情时,它都不起作用。当我将值输出到调试日志时,按下时显示180,释放时显示1024。我已经通过查看砖块本身的值来验证它是否正常工作


Robot C版本:4.0

显然,您的触摸传感器是。从我所能找到的文档中,不清楚如何在代码中解决这一问题,但解决方法是明确地将传感器置于原始模式(以防将来情况发生变化),然后使用如下函数计算布尔值:

bool sensorIsOn(short sensorRawValue)
{
    bool isOn = false;
    if(sensorRawValue > 512)
    {
        isOn = true;
    }
    return isOn;
}

如果您所说的是真的,您应该将
while
语句更改为:
while(sensorValue(touchSensor)==1024){//Do Nothing}
,对吗?如果sensorValue从不为0,马达是否旋转过?@FiddlingBits问题是医生说是1或0,所以这是个问题。@AustinMullins他们旋转的时间不会超过一毫秒。但当我输出到调试日志时,问题是180或1024之间没有任何值,这就是给定这些值时我所期望的。因此,将while语句更改为
while(sensorValue(touchSensor)>500)
,然后让我知道发生了什么。