Skip to content

Commit

Permalink
Adding Modules and Servo code
Browse files Browse the repository at this point in the history
  • Loading branch information
jazeee committed Jan 10, 2016
1 parent 747dc68 commit f8235b0
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 46 deletions.
49 changes: 49 additions & 0 deletions Motor.coffee
@@ -0,0 +1,49 @@
gpio = require "pi-gpio"
Promise = require "bluebird"

Promise.promisifyAll gpio

class Motor
constructor: (ports) ->
@speed = 0
@ports = ports

updateMotorPort: (portIndex) =>
speed = Math.abs @speed
timeDelay = 99 / speed
console.log new Date(), timeDelay
otherPortIndex = 1 - portIndex
gpio.writeAsync @ports[otherPortIndex], 0
.then => gpio.writeAsync @ports[portIndex], 1
.delay 100 - timeDelay
.then => gpio.writeAsync @ports[portIndex], 0
.delay timeDelay

startMotor: =>
if @speed > 0
@updateMotorPort 0
.then @startMotor
else if @speed < 0
@updateMotorPort 1
.then @startMotor
else
gpio.writeAsync @ports[0], 0
.then => gpio.writeAsync @ports[1], 0
.delay 50
.then @startMotor

goFaster: =>
@speed++
@speed = Math.min 99, @speed

goSlower: =>
@speed--
@speed = Math.max -99, @speed

goMaxSpeed: =>
@speed = 99

stop: =>
@speed = 0

modules.export = {Motor}
25 changes: 25 additions & 0 deletions Servo.coffee
@@ -0,0 +1,25 @@
gpio = require "pi-gpio"
Promise = require "bluebird"
now = require "performance-now"

class Servo
constructor: (port) ->
@position = 0
@port = port

start: =>
delay = 0.5 + (@position / 180) * 2.0
start = now()
gpio.writeAsync @port, 1
.then =>
while 1
if (now() - start) >= delay
break
gpio.writeAsync @port, 0
.delay 20
.then @start

setPosition: (position) ->
@position = position

module.exports = {Servo}
56 changes: 10 additions & 46 deletions mad-jaz-fury-robot.coffee
Expand Up @@ -4,61 +4,21 @@ http = require "http"
express = require "express"
app = express()
fs = require "fs"

Promise.promisifyAll gpio
Motor = require "./Motor"
Servo = require "./Servo"

isDebug = false

leftPorts = [16, 18]
rightPorts = [3, 5]
servoPort = 7
ports = [leftPorts..., rightPorts...]

class Motor
constructor: (ports) ->
@speed = 0
@ports = ports

updateMotorPort: (portIndex) =>
speed = Math.abs @speed
timeDelay = 99 / speed
console.log new Date(), timeDelay
otherPortIndex = 1 - portIndex
gpio.writeAsync @ports[otherPortIndex], 0
.then => gpio.writeAsync @ports[portIndex], 1
.delay 100 - timeDelay
.then => gpio.writeAsync @ports[portIndex], 0
.delay timeDelay

startMotor: =>
if @speed > 0
@updateMotorPort 0
.then @startMotor
else if @speed < 0
@updateMotorPort 1
.then @startMotor
else
gpio.writeAsync @ports[0], 0
.then => gpio.writeAsync @ports[1], 0
.delay 50
.then @startMotor

goFaster: =>
@speed++
@speed = Math.min 99, @speed

goSlower: =>
@speed--
@speed = Math.max -99, @speed

goMaxSpeed: =>
@speed = 99

stop: =>
@speed = 0

leftMotor = new Motor leftPorts
rightMotor = new Motor rightPorts

servo = new Servo servoPort

app.use "/resources", express.static 'resources'
app.get "/left/faster", (request, response) ->
response.writeHead 200, {'Content-type': "text/plain"}
Expand Down Expand Up @@ -94,7 +54,11 @@ app.get "/stop", (request, response) ->
response.end "Stopping"
leftMotor.stop()
rightMotor.stop()

app.get "/servo-port", (request, response) ->
position = 180 * Math.random()
response.writeHead 200, {'Content-type': "text/plain"}
response.end "Moving Servo to #{position}"
servo.setPosition position

app.get "/", (request, response) ->
response.writeHead 200, 'Content-Type': 'text/html'
Expand Down
5 changes: 5 additions & 0 deletions mad-jaz-fury-robot.html
Expand Up @@ -18,6 +18,11 @@ <h1>Mad Jaz Fury Robot</h1>
<br/>
<button value="stop">Stop</button>

<img src="resources/control.pad.png" usemap="control-pad" />
<map name="control-pad" id="control-pad">
<area shape="rect" class="control-pad-area" coords="" value="[1,0]" />
</map>

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
console.log("Start");
Expand Down
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -3,6 +3,7 @@
"dependencies": {
"bluebird": "^3.1.1",
"express": "^4.13.3",
"performance-now": "^0.2.0",
"pi-gpio": "0.0.8"
}
}

0 comments on commit f8235b0

Please sign in to comment.