From 27ccb5798749435302efa3ac1e48c4935a6519d4 Mon Sep 17 00:00:00 2001 From: Zion Orent Date: Wed, 7 Jan 2015 18:12:25 -0500 Subject: [PATCH] grove servo: JavaScript example for servo motor in Grove starter kit Signed-off-by: Zion Orent Signed-off-by: Jon Trulson --- examples/javascript/servo.js | 71 ++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 examples/javascript/servo.js diff --git a/examples/javascript/servo.js b/examples/javascript/servo.js new file mode 100644 index 00000000..199bd1c9 --- /dev/null +++ b/examples/javascript/servo.js @@ -0,0 +1,71 @@ +/*jslint node:true, vars:true, bitwise:true, unparam:true */ +/*jshint unused:true */ +/*global */ +/* + * Author: Zion Orent + * Copyright (c) 2014 Intel Corporation. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +//Load servo module. +var servoModule = require("jsupm_servo"); + +//Instantiate Servo module on GPIO 5 +var servo = new servoModule.Servo(5); +servo.setMinPulseWidth(600); +servo.setMaxPulseWidth(2200); + +// function to initialize servo + // timeOffset: how long after hitting "run" + // should we start this servo instance + // timeInterval: how frequently should this instance run after timeOffset + // angle: the angle for this instance +function startServo(timeOffset, timeInterval, angle) +{ + // Start running this instance after timeOffset milliseconds + setTimeout(function() + { + console.log("Starting angle is " + angle); + // run this instance every timeInterval milliseconds + setInterval(function() + { + servo.setAngle(angle); + }, timeInterval); + }, timeOffset); + // timeOffset tells setTimeout when + // to execute the function specified in the first param + // angle is passed as a param to the specified function +} +// start immediately, run every 3 seconds, go 0 degrees +startServo(0, 3000, 0); + +// start in 1 second, run every 3 seconds, go 90 degrees +startServo(1000, 3000, 90); + +// start in 2 seconds, run every 3 seconds, go 180 degrees +startServo(2000, 3000, 180); + +// Print message when exiting +process.on('SIGINT', function() +{ + console.log("Exiting..."); + process.exit(0); +});