【问题标题】:Touch sensor not working触摸传感器不工作
【发布时间】:2014-07-27 22:26:17
【问题描述】:

我正在尝试在 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。我通过查看积木本身的值来验证它工作正常。

机器人 C 版本:4.0

【问题讨论】:

  • 如果你说的是真的,你应该把while声明改成这样:while(sensorValue(touchSensor) == 1024){//Do Nothing },对吧?
  • 如果 sensorValue 永远不为 0,电机会旋转吗?
  • @FiddlingBits 问题是文档说它是 1 或 0,所以这是个问题。
  • @AustinMullins 他们从不旋转超过一毫秒。但是当我输出到调试日志时的问题是 180 或 1024 之间没有任何关系
  • 太棒了,考虑到这些值,这就是我所期望的。因此,将 while 语句更改为 while(sensorValue(touchSensor) > 500) 并让我知道会发生什么。

标签: c robot nxt


【解决方案1】:

显然,您的触摸传感器是stuck in SensorRaw mode。目前尚不清楚-从我可以找到的文档中-如何在代码中修复此问题,但解决方法是将传感器显式置于原始模式(以防将来情况发生变化),然后计算布尔值具有这样的函数的值:

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

【讨论】:

    猜你喜欢
    • 2015-07-02
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多