C 触摸传感器不工作
我试图在RobotC中创建一个非常简单的程序。在此程序中,机器人将向前移动,直到触碰传感器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
#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)
,然后让我知道发生了什么。