Updated default behavior of frame
Also added a parallel example of the logic to gpio.js
This commit is contained in:
parent
c49c6a5b8d
commit
418d33c8f7
|
@ -4,3 +4,16 @@
|
||||||
Class representing the bluetooth interface
|
Class representing the bluetooth interface
|
||||||
|
|
||||||
**Kind**: global class
|
**Kind**: global class
|
||||||
|
<a name="Blootstrap+on"></a>
|
||||||
|
|
||||||
|
### blootstrap.on(eventName, callback)
|
||||||
|
Blootstrap.on() -
|
||||||
|
Binds functions to events that are triggered by BLE messages
|
||||||
|
|
||||||
|
**Kind**: instance method of [<code>Blootstrap</code>](#Blootstrap)
|
||||||
|
|
||||||
|
| Param | Type | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| eventName | <code>string</code> | Name of the event to to bind |
|
||||||
|
| callback | <code>function</code> | Invoked when the event is triggered |
|
||||||
|
|
||||||
|
|
|
@ -4,3 +4,38 @@
|
||||||
Class representing the intval3 features
|
Class representing the intval3 features
|
||||||
|
|
||||||
**Kind**: global class
|
**Kind**: global class
|
||||||
|
|
||||||
|
* [Intval](#Intval)
|
||||||
|
* [._declarePins()](#Intval+_declarePins)
|
||||||
|
* [._undeclarePins()](#Intval+_undeclarePins)
|
||||||
|
* [.frame(dir, time, delay)](#Intval+frame)
|
||||||
|
|
||||||
|
<a name="Intval+_declarePins"></a>
|
||||||
|
|
||||||
|
### intval._declarePins()
|
||||||
|
Intval._declarePins() -
|
||||||
|
(internal function) Declares all Gpio pins that will be used
|
||||||
|
|
||||||
|
**Kind**: instance method of [<code>Intval</code>](#Intval)
|
||||||
|
<a name="Intval+_undeclarePins"></a>
|
||||||
|
|
||||||
|
### intval._undeclarePins()
|
||||||
|
Intval._undeclarePins() -
|
||||||
|
(internal function) Undeclares all Gpio in event of uncaught error
|
||||||
|
that interupts the node process
|
||||||
|
|
||||||
|
**Kind**: instance method of [<code>Intval</code>](#Intval)
|
||||||
|
<a name="Intval+frame"></a>
|
||||||
|
|
||||||
|
### intval.frame(dir, time, delay)
|
||||||
|
Intval.frame() -
|
||||||
|
Begin a single frame with set variables or defaults
|
||||||
|
|
||||||
|
**Kind**: instance method of [<code>Intval</code>](#Intval)
|
||||||
|
|
||||||
|
| Param | Type | Default | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| dir | <code>boolean</code> | <code></code> | (optional) Direction of the frame |
|
||||||
|
| time | <code>integer</code> | <code></code> | (optional) Exposure time, 0 = minimum |
|
||||||
|
| delay | <code>delay</code> | <code></code> | (optional) Delay after frame before another can be started |
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ const PINS = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Class representing the intval3 features */
|
||||||
class Intval {
|
class Intval {
|
||||||
constructor () {
|
constructor () {
|
||||||
this._pin = {}
|
this._pin = {}
|
||||||
|
@ -38,23 +39,38 @@ class Intval {
|
||||||
frame : {
|
frame : {
|
||||||
start : 0,
|
start : 0,
|
||||||
active : false,
|
active : false,
|
||||||
|
time : 0,
|
||||||
|
delay : 0,
|
||||||
val : 0,
|
val : 0,
|
||||||
expected : 0
|
expected : 0
|
||||||
|
},
|
||||||
|
release : {
|
||||||
|
time: 0,
|
||||||
|
active : false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this._declarePins()
|
this._declarePins()
|
||||||
process.on('SIGINT', () => {
|
process.on('SIGINT', this._undeclarePins)
|
||||||
this._undeclarePins()
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Intval._declarePins() -
|
||||||
|
* (internal function) Declares all Gpio pins that will be used
|
||||||
|
*
|
||||||
|
*/
|
||||||
_declarePins () {
|
_declarePins () {
|
||||||
this._pin.fwd = Gpio(4, 'out')
|
this._pin.fwd = Gpio(13, 'out')
|
||||||
this._pin.bwd = Gpio(5, 'out')
|
this._pin.bwd = Gpio(19, 'out')
|
||||||
this._pin.micro = Gpio(6, 'in', 'rising')
|
this._pin.micro = Gpio(5, 'in', 'rising') //
|
||||||
this._pin.release = Gpio(7, 'in', 'both')
|
this._pin.release = Gpio(6, 'in', 'both')
|
||||||
|
|
||||||
this._pin.release.watch(this._watchRelease)
|
this._pin.release.watch(this._watchRelease)
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Intval._undeclarePins() -
|
||||||
|
* (internal function) Undeclares all Gpio in event of uncaught error
|
||||||
|
* that interupts the node process
|
||||||
|
*
|
||||||
|
*/
|
||||||
_undeclarePins () {
|
_undeclarePins () {
|
||||||
this._pin.fwd.unexport()
|
this._pin.fwd.unexport()
|
||||||
this._pin.bwd.unexport()
|
this._pin.bwd.unexport()
|
||||||
|
@ -71,6 +87,9 @@ class Intval {
|
||||||
this._pin.bwd.set(1)
|
this._pin.bwd.set(1)
|
||||||
}
|
}
|
||||||
_watchMicro (err, val) {
|
_watchMicro (err, val) {
|
||||||
|
/* Microswitch + 10K ohm resistor */
|
||||||
|
/* 1 = open */
|
||||||
|
/* 0 = closed */
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
}
|
}
|
||||||
|
@ -78,10 +97,29 @@ class Intval {
|
||||||
//determine when to stop
|
//determine when to stop
|
||||||
}
|
}
|
||||||
_watchRelease (err, val) {
|
_watchRelease (err, val) {
|
||||||
|
const NOW = +new Date()
|
||||||
|
/* Button + 10K ohm resistor */
|
||||||
|
/* 1 = open */
|
||||||
|
/* 0 = closed */
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error(err)
|
return console.error(err)
|
||||||
}
|
}
|
||||||
console.log(`Release switch val: ${val}`)
|
console.log(`Release switch val: ${val}`)
|
||||||
|
if (val === 0) {
|
||||||
|
if (this._state.release.time === 0) {
|
||||||
|
this._state.release.time = NOW
|
||||||
|
this._state.release.active = true //maybe unncecessary
|
||||||
|
} else if (this._state.release.active) {
|
||||||
|
if (NOW - this._state.release.time > 100) {
|
||||||
|
this.frame()
|
||||||
|
} else if (NOW - this._state.release.time > 1000) {
|
||||||
|
this.sequence()
|
||||||
|
}
|
||||||
|
console.log(`Release closed for ${NOW - this._state.release.time}`)
|
||||||
|
this._state.release.time = 0
|
||||||
|
this._state.release.active = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setDir (val = true) {
|
setDir (val = true) {
|
||||||
if (typeof val !== 'boolean') {
|
if (typeof val !== 'boolean') {
|
||||||
|
@ -89,10 +127,38 @@ class Intval {
|
||||||
}
|
}
|
||||||
this._state.dir = val
|
this._state.dir = val
|
||||||
}
|
}
|
||||||
frame (dir = true, time = 0, delay = 0) {
|
/**
|
||||||
|
* Intval.frame() -
|
||||||
|
* Begin a single frame with set variables or defaults
|
||||||
|
*
|
||||||
|
* @param {boolean} dir (optional) Direction of the frame
|
||||||
|
* @param {integer} time (optional) Exposure time, 0 = minimum
|
||||||
|
* @param {delay} delay (optional) Delay after frame before another can be started
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
frame (dir = null, time = null, delay = null) { //may be overloaded, delay is suspect
|
||||||
|
if (dir === true || (dir === null && this._state.dir === true) ) {
|
||||||
|
dir = true
|
||||||
|
} else {
|
||||||
|
dir = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (time === null && this._state.time !== 0) {
|
||||||
|
time = this._state.time
|
||||||
|
} else {
|
||||||
|
time = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if (delay === null && this._state.delay !== 0) {
|
||||||
|
delay = this._state.delay
|
||||||
|
} else {
|
||||||
|
delay = 0
|
||||||
|
}
|
||||||
|
|
||||||
this._state.frame.start = +new Date()
|
this._state.frame.start = +new Date()
|
||||||
this._state.frame.active = true
|
this._state.frame.active = true
|
||||||
this._pin.micro.watch(this._watchMicro)
|
this._pin.micro.watch(this._watchMicro)
|
||||||
|
|
||||||
if (delay !== 0) {
|
if (delay !== 0) {
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
if (dir) {
|
if (dir) {
|
||||||
|
@ -110,7 +176,10 @@ class Intval {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_stop () {
|
sequence () {
|
||||||
|
console.log(`Started sequence`)
|
||||||
|
}
|
||||||
|
_stop () {
|
||||||
this._pin.fwd.set(0)
|
this._pin.fwd.set(0)
|
||||||
this._pin.bwd.set(0)
|
this._pin.bwd.set(0)
|
||||||
|
|
||||||
|
|
|
@ -6,11 +6,32 @@ const btn = Gpio(5, 'in', 'both')
|
||||||
|
|
||||||
console.log('Watching input on GPIO 05')
|
console.log('Watching input on GPIO 05')
|
||||||
|
|
||||||
|
let saveTime = 0
|
||||||
|
let active = false
|
||||||
btn.watch((err, val) => {
|
btn.watch((err, val) => {
|
||||||
|
const NOW = +new Date()
|
||||||
|
/* Button + 10K ohm resistor */
|
||||||
|
/* 1 = open */
|
||||||
|
/* 0 = closed */
|
||||||
if (err) {
|
if (err) {
|
||||||
return console.error(err)
|
return console.error(err)
|
||||||
}
|
}
|
||||||
console.log(val)
|
console.log(`Release switch val: ${val}`)
|
||||||
|
if (val === 0) {
|
||||||
|
if (saveTime === 0) {
|
||||||
|
saveTime = NOW
|
||||||
|
active = true //maybe unncecessary
|
||||||
|
} else if (active) {
|
||||||
|
if (NOW - saveTime > 100) {
|
||||||
|
console.log('Started Frame')
|
||||||
|
} else if (NOW - saveTime > 1000) {
|
||||||
|
console.log('Started Sequence')
|
||||||
|
}
|
||||||
|
console.log(`Release closed for ${NOW - saveTime}`)
|
||||||
|
saveTime = 0
|
||||||
|
active = false
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
/*setInterval(() => {
|
/*setInterval(() => {
|
||||||
|
|
Loading…
Reference in New Issue