The friendly Operating System for the Internet of Things
High-level driver for servo motors. More...
|High-level driver for easy handling of servo motors. |
|Descriptor struct for a servo. More...|
|int||servo_init (servo_t *dev, pwm_t pwm, int pwm_channel, unsigned int min, unsigned int max)|
|Initialize a servo motor by assigning it a PWM device and channel. More...|
|void||servo_set (servo_t *dev, unsigned int pos)|
|Set the servo motor to a specified position. More...|
Digital servos are controlled by regular pulses sent to them. The width of a pulse determines the position of the servo. A pulse width of 1.5ms puts the servo in the center position, a pulse width of about 1.0ms and about 2.0ms put the servo to the maximum angles. These values can however differ slightly from servo to servo, so the min and max values are parameterized in the init function.
The servo is initialized with default PWM values:
These default values can be changed by setting SERVO_RESOLUTION and SERVO_FREQUENCY macros. Caution: When initializing a servo, the PWM device will be reconfigured to new frequency/resolution values. It is however fine to use multiple servos with the same PWM device, just on different channels.
|[out]||dev||struct describing the servo|
|[in]||pwm||the PWM device the servo is connected to|
|[in]||pwm_channel||the PWM channel the servo is connected to|
|[in]||min||minimum pulse width (in the resolution range)|
|[in]||max||maximum pulse width (in the resolution range)|
|void servo_set||(||servo_t *||dev,|
The position of the servo is specified in the pulse width that controls the servo. With default configurations, a value of 1500 means a pulse width of 1.5 ms, which is the center position on most servos.
In case pos is larger/smaller then the max/min values, pos will be set to these values.
|[in]||dev||the servo to set|
|[in]||pos||the position to set the servo (in the resolution range)|