From 5bc9353bb4cd40b39d0e26764ed2895491e109f2 Mon Sep 17 00:00:00 2001 From: Mihai Tudor Panu Date: Mon, 21 Dec 2015 14:57:04 -0800 Subject: [PATCH] stepmotor: updated Java example, added python & node.js examples Signed-off-by: Mihai Tudor Panu --- examples/java/StepMotorSample.java | 49 +++++++++++---------- examples/javascript/stepmotor.js | 68 ++++++++++++++++++++++++++++++ examples/python/stepmotor.py | 64 ++++++++++++++++++++++++++++ 3 files changed, 158 insertions(+), 23 deletions(-) create mode 100644 examples/javascript/stepmotor.js create mode 100644 examples/python/stepmotor.py diff --git a/examples/java/StepMotorSample.java b/examples/java/StepMotorSample.java index ebe59a06..166c04d3 100644 --- a/examples/java/StepMotorSample.java +++ b/examples/java/StepMotorSample.java @@ -25,29 +25,32 @@ //NOT TESTED!!! public class StepMotorSample { - public static void main(String[] args) throws InterruptedException { - // ! [Interesting] - upm_stepmotor.StepMotor sensor = new upm_stepmotor.StepMotor(4, 6); + public static void main(String[] args) throws InterruptedException { + // ! [Interesting] + upm_stepmotor.StepMotor sensor = new upm_stepmotor.StepMotor(2, 3); - while (true) { - sensor.setSpeed(500); - sensor.stepForward(500); - Thread.sleep(10); - sensor.stepBackwards(500); - Thread.sleep(10); + while (true) { + System.out.println("One complete rotation forward and back at 60 rpm."); + sensor.setSpeed(60); + sensor.stepForward(200); + Thread.sleep(1000); + sensor.stepBackwards(200); + Thread.sleep(1000); - sensor.setSpeed(750); - sensor.stepForward(500); - Thread.sleep(10); - sensor.stepBackwards(500); - Thread.sleep(10); + System.out.println("One complete rotation forward and back at 150 rpm."); + sensor.setSpeed(150); + sensor.stepForward(200); + Thread.sleep(1000); + sensor.stepBackwards(200); + Thread.sleep(1000); - sensor.setSpeed(1000); - sensor.stepForward(500); - Thread.sleep(10); - sensor.stepBackwards(500); - Thread.sleep(10); - } - // ! [Interesting] - } -} \ No newline at end of file + System.out.println("One complete rotation forward and back at 300 rpm."); + sensor.setSpeed(300); + sensor.stepForward(200); + Thread.sleep(1000); + sensor.stepBackwards(200); + Thread.sleep(1000); + } + // ! [Interesting] + } +} diff --git a/examples/javascript/stepmotor.js b/examples/javascript/stepmotor.js new file mode 100644 index 00000000..c0de642a --- /dev/null +++ b/examples/javascript/stepmotor.js @@ -0,0 +1,68 @@ +/*jslint node:true, vars:true, bitwise:true, unparam:true */ +/*jshint unused:true */ +/* +* Author: Mihai Tudor Panu +* Copyright (c) 2015 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. +*/ + +var lib = require('jsupm_stepmotor'); + +// Instantiate a stepper motor driver on pins 2 (direction) and 3 (step) +var stepper = new lib.StepMotor(2, 3); + +function delay(milliseconds) { + var startTime = Date.now(); + while (Date.now() - startTime < milliseconds); +} + +stepper.quit = function() +{ + stepper = null; + lib.cleanUp(); + lib = null; + console.log("Exiting"); + process.exit(0); +}; + +// The driver is synchronous and blocking +console.log("Rotating 1 revolution forward and back at 60 rpm."); +stepper.setSpeed(60); +stepper.stepForward(200); +delay(1000); +stepper.stepBackwards(200); +delay(1000); + +console.log("Rotating 1 revolution forward and back at 150 rpm."); +stepper.setSpeed(150); +stepper.stepForward(200); +delay(1000); +stepper.stepBackwards(200); +delay(1000); + +console.log("Rotating 1 revolution forward and back at 300 rpm."); +stepper.setSpeed(300); +stepper.stepForward(200); +delay(1000); +stepper.stepBackwards(200); +delay(1000); + +stepper.quit(); diff --git a/examples/python/stepmotor.py b/examples/python/stepmotor.py new file mode 100644 index 00000000..f32d9874 --- /dev/null +++ b/examples/python/stepmotor.py @@ -0,0 +1,64 @@ +#!/usr/bin/python +# Author: Mihai Tudor Panu +# Copyright (c) 2015 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. + + +import time, sys, signal, atexit +import pyupm_stepmotor as mylib + +# Instantiate a StepMotor object on pins 2 (dir) and 3 (step) +stepper = mylib.StepMotor(2, 3) + +## Exit handlers ## +# This stops python from printing a stacktrace when you hit control-C +def SIGINTHandler(signum, frame): + raise SystemExit + +# This lets you run code on exit +def exitHandler(): + print "Exiting" + sys.exit(0) + +# Register exit handlers +atexit.register(exitHandler) +signal.signal(signal.SIGINT, SIGINTHandler) + +print "Rotating 1 revolution forward and back at 60 rpm." +stepper.setSpeed(60) +stepper.stepForward(200) +time.sleep(1) +stepper.stepBackwards(200) +time.sleep(1) + +print "Rotating 1 revolution forward and back at 150 rpm." +stepper.setSpeed(150) +stepper.stepForward(200) +time.sleep(1) +stepper.stepBackwards(200) +time.sleep(1) + +print "Rotating 1 revolution forward and back at 300 rpm." +stepper.setSpeed(300) +stepper.stepForward(200) +time.sleep(1) +stepper.stepBackwards(200) +time.sleep(1)