私はCに非常によく似たRobotCコードを見てきました(そして新しいRobotCタグを作成するのに十分な評判がありません)、そして*=演算子に出くわしました。私はそれをかなりグーグルで検索しましたが、それがCのビット単位の演算子であることがわかります。しかし、それが何をするのか正確には誰も言っていないようです。
rot *= 5;
これが私が見つけたコードです。すべての機能は、ロボットが常に北を向くように向きを変えることです。
//Turns back to North
void TurnStraight(int cdegree) //cdegree is the sensor value read by the compass sensor
{
int rot = cdegree % 360;
int mot = 1;
//stop when the NXT facing North
if (cdegree == 0){
return;
}
//reset the encoders value to avoid overflaow
clear_motor_encoders();
if (cdegree > 180 && cdegree < 360){
rot = 360 - rot;
mot = 0;
}
rot *= 5; // ratio between the circumference of the tire to the circumference of the rotation circle around itself
switch (mot){
case 1:
moveTo(rot/2,1);
break;
case 0:
moveTo(rot/2,-1);
break;
case -1:
moveTo(rot,1);
break;
}
}
void clear_motor_encoders()
{
nMotorEncoder[motorA] = 0;
}
void moveTo(int rot, int direction)
{
nSyncedMotors = synchAC;
nSyncedTurnRatio = -100;
nMotorEncoderTarget[motorA] = rot;
motor[motorA] = direction * 50;
while (nMotorRunState[motorA] != runStateIdle) ;
motor[motorA] = 0;
}
もちろんこれは私のコードではありません。それがどのように機能するかを知りたいだけです。