From fc639ed1f5a8bfe74edc49503bd8405b84b4d5dc Mon Sep 17 00:00:00 2001 From: Jake Read <jake.read@cba.mit.edu> Date: Fri, 2 Nov 2018 20:14:42 -0400 Subject: [PATCH] probably just about to break everything --- server.js | 1 + src/hardware/atkbbb.js | 63 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/hardware/atkbbb.js diff --git a/server.js b/server.js index d56495f..a051316 100644 --- a/server.js +++ b/server.js @@ -239,6 +239,7 @@ t6.outputs.packet.attach(bridge.inputs.F) bridge.outputs.F.attach(t6.inputs.packet) //bridge.state.rF = '0' */ + t7.outputs.packet.attach(bridge.inputs.G) bridge.outputs.G.attach(t7.inputs.packet) diff --git a/src/hardware/atkbbb.js b/src/hardware/atkbbb.js new file mode 100644 index 0000000..b242352 --- /dev/null +++ b/src/hardware/atkbbb.js @@ -0,0 +1,63 @@ +// boilerplate atkapi header +const InOut = require('../../lib/inout.js') +let Input = InOut.Input +let Output = InOut.Output +let State = InOut.State +let Button = InOut.Button + +const PCKT = require('../../lib/packets.js') + +// a constructor, a fn, a javascript mess +function ATKBreadBoardServo(port) { + + var atkbbs = { + // descriptions are used in UI + description: { + name: 'Breadboard Servo Signal Generator', + alt: 'servo', + isHardware: true + } + } + + atkbbs.state = State() + // alias ! + var state = atkbbs.state + + state.button = Button('SEND') + state.onChange('button', onButtonPress) + state.servoVal = 0 // 0->100 does 1 -> 2ms duty on 20ms period + state.onChange('servoVal', onButtonPress) + + atkbbs.inputs = { + packet: Input('headless packet', onPacketReturn) // makes anything into '1' event + } + + atkbbs.outputs = { + packet: Output('number') + } + + function onButtonPress(evt) { + var pwm = state.servoVal + if(pwm > 100){ + pwm = 100 + } else if (pwm < 0){ + pwm = 0 + } + + var microval = Math.round(7.5 * pwm) + console.log('pwm on line', microval) + + var pwmpack = PCKT.pack32(microval) + pwmpack.unshift(141) + + atkbbs.outputs.packet.emit(pwmpack) + } + + function onPacketReturn(evt) { + } + + return atkbbs +} + +// exports +module.exports = ATKBreadBoardServo \ No newline at end of file -- GitLab