RobotC: Управление моторами

Управление одним мотором


setMotorSpeed(nMotorIndex, nSpeed); -- задаём мотор и его мощность (скорость)
setMotorSpeed(motorB, 50); 

moveMotorTarget(nMotorIndex, nPosition, nSpeed); - задаём мотор, количество градусов и мощность;
moveMotorTarget(motorB, 1000, 50);


setMotorTarget(nMotorIndex, nPosition, nSpeed); - довернуть мотор в положение n градусов. (Если указать 350*, а мотор уже проехал 200*, то он повернётся ещё на 150*)


setMotorReversed(nMotorIndex, bReversed); - меняет положительное направление мотора.
setMotorReversed(motorA, true);

Управление двумя моторами (рулевое управление)

setMotorSync(nMotorOne, nMotorTwo, nTurnRatio, nSignedPower); -- задаём два мотора, направление (0 - прямо) и мощность.
setMotorSync(motorB, motorС, 0, -50);

setMotorSyncEncoder(nMotorOne, nMotorTwo, nTurnRatio, nEncoderCount, nSignedPower);  -- задаём два мотора, направление (0 - прямо, количество градусов и мощность.
setMotorSyncEncoder(motorB, motorС, 0,1000, 50);


setMotorSyncTime(nMotorOne, nMotorTwo, nTurnRatio, nTimeMsec, nSignedPower); -- два мотора, направление, время (в мс), мощность.


Энкодер

getMotorEncoder(nMotorIndex); -- получаем показания энкодера;
getMotorEncoder(motorB);

resetMotorEncoder(nMotorIndex);  -- сбрасываем показания энкодера;

getMotorRPM(nMotorIndex); -- получаем мощность мотора;

Чтобы работало

Особенность среды такова, что даже если мы указали количество градусов поворота мотора, программа не ждёт, пока он повернётя. Если не сделать задержку, программа закончится слишком быстро и мотор не успеет выполнить все запланированные дела. Чтобы этого не произошло, используем две функции:

sleep
(1000) -- ждать 1 секунду. Тогда программа не закончится ещё целую секунду. Её же можно использовать для блоков вроде setMotorSpeed, чтобы они не пролетали мгновенно.


waitUntilMotorStop(motorA); - ждать, пока мотор не остановится.


0 коммент.: