Package Exports
- node-red-contrib-servo
- node-red-contrib-servo/servo.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-red-contrib-servo) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
node-red-contrib-servo
node-red-contrib-servo
is a Node-RED node designed to control servo motors by stepping from one position to another. It receives values via topics for from
, to
, and duration
to control the motor's movement. This node handles the precise positioning of servo motors and includes error handling to ensure the input values are valid.
Features
- Configurable via Topics: Specify the
from
,to
, andduration
parameters dynamically using MQTT or inject nodes. - Start/Stop/Resume Functionality: Control the motor's movement using commands like
start
,stop
, andresume
. - Error Handling: Ensures that the
from
,to
, andduration
parameters are valid numbers before initiating motor movement. - Accurate Movement: Avoids unnecessary resets of the servo motor to its home position after stepping, maintaining its accuracy.
Installation
Install via the Node-RED palette manager or run the following command in your Node-RED user directory (typically ~/.node-red
):
npm install node-red-contrib-servo
Usage
Send Control Messages:
- Use
start
,stop
, andresume
commands to control the servo motor. - Send these commands with a
true
payload via MQTT or inject nodes.
- Use
Set Movement Parameters:
- Send numeric payloads for
from
,to
, andduration
to set the servo's stepping range and speed.
- Send numeric payloads for
Example Flow
Here’s a simple example flow to control the servo motor:
[{"id":"inject_start","type":"inject","z":"flow_id","name":"Start","props":[{"p":"payload","v":"true","vt":"bool"},{"p":"topic","v":"start","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"start","payload":"true","payloadType":"bool"},{"id":"inject_stop","type":"inject","z":"flow_id","name":"Stop","props":[{"p":"payload","v":"true","vt":"bool"},{"p":"topic","v":"stop","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"stop","payload":"true","payloadType":"bool"},{"id":"servo_node","type":"servo","z":"flow_id","name":"Servo Controller","from":"","to":"","duration":"","x":400,"y":200,"wires":[[]]}]
In this flow:
- Use an
inject
node to send thestart
,stop
, andresume
commands. - Use another
inject
node to send numeric payloads forfrom
,to
, andduration
to control the servo motor.
Topics
- start: Starts stepping the servo motor from the
from
position to theto
position within the definedduration
. - stop: Pauses the stepping.
- resume: Resumes the stepping from where it was paused.
- from: Defines the starting position for the servo (numeric payload).
- to: Defines the target position for the servo (numeric payload).
- duration: Defines the time (in milliseconds) it takes for each step (numeric payload).
Error Handling
The node will check the input parameters for validity:
from
,to
, andduration
must all be valid numbers.- If an invalid value is received, an error message will be displayed in the debug panel.
Node Status
- Blue Dot: Ready to receive commands.
- Blue Ring: Stepping in progress.
- Red Ring: Stepping paused.
- Green Dot: Stepping completed.
License
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.