var servo = false; var penupval = 128; var pendownval = 128; if (localStorage.getItem("servo-calibration")) { servo = JSON.parse(localStorage.getItem("servo-calibration")); penupval = servo.up; pendownval = servo.down; } else { servo = false; penupval = 128 pendownval = 128 } $(document).ready(function() { $('#pP').on('click', function(ev) { console.log('pen up') if (servo) { socket.emit('runCommand', "M3S"+servo.up+"\n"); } else { servocalibrate() } }) $('#pM').on('click', function(ev) { console.log('pen down') if (servo) { socket.emit('runCommand', "M3S"+servo.down+"\n"); } else { servocalibrate() } }) }); // Calibration Wizard function penUpSend(data) { console.log("Move to " + data) sendGcode("M3 S"+data); } function penDownSend(data) { console.log("Move to " + data) sendGcode("M3 S"+data); } var servocaltemplate = `
Step 1: Find the Pen Up Value
This wizard, will allow you to find the S-values specific to your servo
To get started, use the slider below to find the position where the Pen is lifted all the way up

Note: Do not push the servo into a hard-stop condition it may damage the servo. Just move it far enough to lift the pen up without straining
` function servocalibrate() { Metro.dialog.create({ clsDialog: 'dark', id: "servocalibratedialog", title: " Servo Calibration: Pen-Up/Pen-Down Positions", content: servocaltemplate, width: 750, actions: false, defaultAction: false }); setTimeout(function() { $('#penupslider').data('slider').val(penupval) }, 500); } function servocalslide1() { $('#servocalstep1').show(); $('#servocalstep2').hide(); $('#servocalstep3').hide(); } function servocalslide2() { $('#servocalstep1').hide(); $('#servocalstep2').show(); $('#servocalstep3').hide(); setTimeout(function() { $('#pendownslider').data('slider').val(pendownval) }, 500); } function servocalslide3() { $('#servocalstep1').hide(); $('#servocalstep2').hide(); $('#servocalstep3').show(); $('#penupval2').val($('#penupslider').data('slider').val()); $('#pendownval2').val($('#pendownslider').data('slider').val()); $('#penupval3').html($('#penupslider').data('slider').val()); $('#pendownval3').html($('#pendownslider').data('slider').val()); } function closeServoCal() { console.log("Saving calibration: up: " + $('#penupslider').data('slider').val() + ", down: " + $('#pendownslider').data('slider').val()) servo = { up: $('#penupslider').data('slider').val(), down: $('#pendownslider').data('slider').val() } penupval = $('#penupslider').data('slider').val(); pendownval = $('#pendownslider').data('slider').val(); localStorage.setItem("servo-calibration", JSON.stringify(servo)); Metro.dialog.close($('#servocalstep1').parent().parent()); console.log(servo) }