![Pololu SMC01A User Manual Download Page 9](http://html1.mh-extra.com/html/pololu/smc01a/smc01a_user-manual_1574968009.webp)
Byte 3: Motor Number and Direction (continued).
"
Bit 7 must be cleared since this is not a start byte.
To obtain the complete byte 3 value from a motor number and a direction, multiply the
motor number by 2 and add 1 if the direction is forward. For example, to make motor 5
go forward, byte three should be 5
x
2 + 1 = 11. To make motor 1 go backward, byte 3
should be 1
x
2 = 2. (Two efficient ways to multiply by 2 in a microcontroller program
are shifting left by one digit or adding the motor number to itself.)
Byte 4: Motor Speed.
The most significant bit must be zero since this is not a start
byte, and the remaining seven bits are available for specifying the speed. The possible
range of values for byte 4 is thus 0x00 to 0x7F (0 to 127 decimal). 0x00 turns the motor
off, and 0x7F turns the motor fully on; intermediate values correspond to intermediate
speeds.
Resetting the Motor Controller
The motor controller’s optional reset line should normally be kept high at +5V. Pull the
reset line low to 0V for at least 2 microseconds to reset the motor controller to its initial
state (all motors off, waiting for the first serial command). You do not need to reset the
motor controller to use it successfully. However, you may need to reset the motor
controller to ensure that spurious signals sent when your robot controller turns on do
not cause the motor controller to detect the baud rate incorrectly.
Controlling Multiple Motor Controllers with One Serial Line
To control a particular motor, you must specify its motor number in command byte 3.
For all motor controller boards, motor M1 responds to commands for motor number 0,
and M2 responds to commands for motor number 1. To control more than two motors
with a single serial line, you need to use motor numbers 2 through 63. Motor
controllers that are not specially ordered respond to numbers 2 and 3; you need to order
specially programmed motor controllers to use motor numbers 4 through 63.
For example, to control six motors independently, you need three motor controller
boards, each with different motor numbers. All three motor controllers respond to
commands for motor numbers 0 and 1. For controlling the six motors independently,
use motor numbers 2, 3, 4, 5, 6, and 7. (The exact numbers depend on which motor
numbers you request when you specially order additional motor controllers.)
You can individually control up to 62 motors at a time with a single serial line using 31
motor controllers: one with the default program and 30 that are specially programmed.
9
Pololu
© 2001
http://www.pololu.com/