diff --git a/server.js b/server.js index d56495f9b4911e171bb96a6056dabf53ff4980f2..a051316c17aadba04556779baea4823953d87960 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 0000000000000000000000000000000000000000..b242352c960f2b375fecff622e5fbdab15861a7b --- /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