diff --git a/doc/main/motors.rst b/doc/main/motors.rst index d14c933..a427b97 100644 --- a/doc/main/motors.rst +++ b/doc/main/motors.rst @@ -1,101 +1,6 @@ More about Motors =========================================== -.. Motor Tips & Tricks -.. ^^^^^^^^^^^^^^^^^^^ - -.. The difference between ``run_angle`` and ``run_target`` -.. ------------------------------------------------------- - -.. *TODO* - -.. .. _absangles: - -.. Absolute angles -.. ---------------------------- - -.. .. todo:: - -.. This section will be included in a future release. - -.. .. _stalled: - -.. Using stall detection -.. --------------------- - -.. .. todo:: - -.. This section will be included in a future release. - -.. When a motor cannot move any further despite using the maximally allowed -.. torque we say that the motor is stalled. Something could be blocking the -.. motor, or the load is just too heavy. For example, if you manually hold -.. the motor shaft still while the motor is busy executing a command, the -.. motor will stall. - -.. What can I do with stall detection? -.. +++++++++++++++++++++++++++++++++++ - -.. Stall detection is useful to detect that a motor can't move any further. -.. This can be used to detect an endpoint of a mechanism. For example, you -.. can detect whether a robotic hand is fully closed, because the gripper -.. motor simply can't go further. This way, you don't need a touch or light -.. sensor to detect this. - -.. *TODO: How, what, why. Explain run_until_stalled. Rack & pinion example.* - -.. When is a motor stalled? -.. ++++++++++++++++++++++++ - -.. TODO - -.. .. _gears: - -.. Using gears -.. ----------------- - -.. .. todo:: - -.. This section will be included in a future release. - -.. Many LEGO robots use mechanisms with gears to change the speed and torque -.. output of a motor. Let's consider the following dial mechanism. - -.. *TODO: INSERT PICTURE OF MOTOR WITH 12z gear AND 36z gear.* - -.. This gear train slows down the dial on the output axle by a factor of 3. -.. Therefore, if you want to rotate the dial by 90 degrees, the motor has to -.. rotate by 270 degrees. To turn at 200 degrees per second, the motor has to -.. turn at 600 degrees per second, and so on. - -.. To avoid using this factor 3 everywhere in your program, you can use the -.. `gears` setting of the ``Motor`` object, as shown in this example:: - -.. # This example uses the EV3 brick, but the same -.. # technique applies to other programmable hubs. -.. ev3 = EV3Brick() - -.. # Initialize the motor. See picture above. -.. dial = Motor(Port.C, Direction.COUNTERCLOCKWISE, gears=[12, 36]) - -.. # Turn the dial by 90-degrees -.. dial.run_angle(500, 90) - -.. # Print the dial angle -.. print(dial.angle()) - -.. # Turn the dial back to the original position -.. dial.run_target(500, 0) - -.. When you use any of the other methods, the same scaling is applied. For -.. example, you can print the angle of the dial as shown above. This will print -.. 90 (approximately), even though the motor has turned 270 degrees. - -.. Notice that there is no magic going on. It is just a convenient scaling -.. function. This helps you organize your code. For example, if you change -.. your mechanism to use different gears, you only have to change the first -.. line of this example. - .. _control: The Control Class