diff --git a/controlsActions.pde b/controlsActions.pde index 7cc2001..8bca736 100644 --- a/controlsActions.pde +++ b/controlsActions.pde @@ -350,9 +350,9 @@ void button_mode_clearQueue() { resetQueue(); } -void button_mode_setPositionHome() +void button_mode_autoCalibrate() { - sendSetHomePosition(); + sendCalibrate(); } void button_mode_drawTestPenWidth() { diff --git a/controlsActionsWindows.pde b/controlsActionsWindows.pde index 3bf771d..b59e450 100644 --- a/controlsActionsWindows.pde +++ b/controlsActionsWindows.pde @@ -34,7 +34,7 @@ void button_mode_serialPortDialog() { - ControlWindow serialPortWindow = cp5.addControlWindow("changeSerialPortWindow",100,100,150,150); + ControlWindow serialPortWindow = cp5.addControlWindow("changeSerialPortWindow",100,100,150,350); serialPortWindow.hideCoordinates(); serialPortWindow.setBackground(getBackgroundColour()); diff --git a/controlsSetup.pde b/controlsSetup.pde index 67d9f1f..097496b 100644 --- a/controlsSetup.pde +++ b/controlsSetup.pde @@ -656,7 +656,7 @@ List getControlNamesForInputPanel() { List controlNames = new ArrayList(); controlNames.add(MODE_CLEAR_QUEUE); - controlNames.add(MODE_SET_POSITION_HOME); + controlNames.add(MODE_AUTO_CALIBRATE); controlNames.add(MODE_SET_POSITION); controlNames.add(MODE_DRAW_TO_POSITION); controlNames.add(MODE_DRAW_DIRECT); @@ -838,7 +838,7 @@ Map buildControlLabels() result.put(MODE_DRAW_TESTPATTERN, "test pattern"); result.put(MODE_PLACE_IMAGE, "place image"); result.put(MODE_LOAD_IMAGE, "Load image file"); - result.put(MODE_SET_POSITION_HOME, "Set home"); + result.put(MODE_AUTO_CALIBRATE, "Calibrate"); result.put(MODE_RETURN_TO_HOME, "Return to home"); result.put(MODE_INPUT_SINGLE_PIXEL, "Choose pixel"); result.put(MODE_DRAW_TEST_PENWIDTH, "Test pen widths"); @@ -954,8 +954,6 @@ Map buildControlLabels() result.put(MODE_FLIP_WEBCAM_INPUT, "Flip video"); result.put(MODE_ROTATE_WEBCAM_INPUT, "Rotate webcam"); - - return result; } @@ -984,7 +982,7 @@ Set buildControlNames() result.add(MODE_DRAW_TESTPATTERN); result.add(MODE_PLACE_IMAGE); result.add(MODE_LOAD_IMAGE); - result.add(MODE_SET_POSITION_HOME); + result.add(MODE_AUTO_CALIBRATE); result.add(MODE_RETURN_TO_HOME); result.add(MODE_INPUT_SINGLE_PIXEL); result.add(MODE_DRAW_TEST_PENWIDTH); @@ -1094,7 +1092,6 @@ Set buildControlNames() result.add(MODE_SHOW_WEBCAM_RAW_VIDEO); result.add(MODE_FLIP_WEBCAM_INPUT); result.add(MODE_ROTATE_WEBCAM_INPUT); - return result; } diff --git a/drawing.pde b/drawing.pde index 13ec7b1..e89ea3a 100644 --- a/drawing.pde +++ b/drawing.pde @@ -72,6 +72,7 @@ static final String CMD_DRAW_NORWEGIAN_OUTLINE = "C44,"; static final String CMD_SETPENLIFTRANGE = "C45,"; static final String CMD_SELECT_ROVE_SOURCE_IMAGE = "C46"; static final String CMD_RENDER_ROVE = "C47"; +static final String CMD_AUTO_CALIBRATE = "C48"; static final int PATH_SORT_NONE = 0; static final int PATH_SORT_MOST_POINTS_FIRST = 1; @@ -160,8 +161,10 @@ void sendMoveToPosition(boolean direct, PVector position) { String command = null; PVector p = getDisplayMachine().scaleToDisplayMachine(position); - p = getDisplayMachine().inSteps(p); - p = getDisplayMachine().asNativeCoords(p); + if (!cartesianOutput) { + p = getDisplayMachine().inSteps(p); + p = getDisplayMachine().asNativeCoords(p); + } sendMoveToNativePosition(direct, p); } @@ -184,7 +187,10 @@ int getMaxSegmentLength() void sendTestPattern() { - String command = CMD_DRAWDIRECTIONTEST+int(gridSize)+",6,END"; + float gSize = gridSize; + if (cartesianOutput) + gSize = getDisplayMachine().inMM(int(gridSize)); + String command = CMD_DRAWDIRECTIONTEST+int(gSize)+",6,END"; addToCommandQueue(command); } @@ -209,8 +215,11 @@ void sendTestPenWidth() void sendSetPosition() { PVector p = getDisplayMachine().scaleToDisplayMachine(getMouseVector()); - p = getDisplayMachine().convertToNative(p); - p = getDisplayMachine().inSteps(p); + if (!cartesianOutput) { + p = getDisplayMachine().convertToNative(p); + p = getDisplayMachine().inSteps(p); + } + print(p); String command = CMD_SETPOSITION+int(p.x+0.5)+","+int(p.y+0.5)+",END"; addToCommandQueue(command); @@ -228,11 +237,17 @@ void sendStartTextAtPoint() void sendSetHomePosition() { - PVector pgCoords = getDisplayMachine().asNativeCoords(getHomePoint()); + PVector pgCoords; + if (cartesianOutput) pgCoords = getDisplayMachine().inMM(getHomePoint()); + else pgCoords = getDisplayMachine().asNativeCoords(getHomePoint()); String command = CMD_SETPOSITION+int(pgCoords.x+0.5)+","+int(pgCoords.y+0.5)+",END"; addToCommandQueue(command); } +void sendCalibrate() +{ + addToCommandQueue(CMD_AUTO_CALIBRATE+",END"); +} int scaleDensity(int inDens, int inMax, int outMax) { @@ -892,10 +907,10 @@ List filterPointsLowPass(RPoint[] points, long filterParam, float scali PVector p = new PVector(firstPoint.x, firstPoint.y); p = PVector.mult(p, scaling); p = PVector.add(p, position); - p = getDisplayMachine().inSteps(p); - if (getDisplayMachine().getPage().surrounds(p)) +// p = getDisplayMachine().inSteps(p); + if (getDisplayMachine().getPage().surrounds(getDisplayMachine().inSteps(p))) { - p = getDisplayMachine().asNativeCoords(p); +// p = getDisplayMachine().asNativeCoords(p); scaled.add(p); } } diff --git a/polargraphcontroller.pde b/polargraphcontroller_esf.pde similarity index 99% rename from polargraphcontroller.pde rename to polargraphcontroller_esf.pde index 4c0b441..408669a 100644 --- a/polargraphcontroller.pde +++ b/polargraphcontroller_esf.pde @@ -60,6 +60,7 @@ ControlP5 cp5; boolean drawbotReady = false; boolean drawbotConnected = false; +boolean cartesianOutput = true; static final int HARDWARE_VER_UNO = 1; static final int HARDWARE_VER_MEGA = 100; static final int HARDWARE_VER_MEGA_POLARSHIELD = 200; @@ -200,7 +201,7 @@ static final String MODE_PLACE_IMAGE = "button_mode_placeImage"; static final String MODE_LOAD_IMAGE = "button_mode_loadImage"; static final String MODE_PAUSE_QUEUE = "button_mode_pauseQueue"; static final String MODE_RUN_QUEUE = "button_mode_runQueue"; -static final String MODE_SET_POSITION_HOME = "button_mode_setPositionHome"; +static final String MODE_AUTO_CALIBRATE = "button_mode_autoCalibrate"; static final String MODE_RETURN_TO_HOME = "button_mode_returnToHome"; static final String MODE_INPUT_SINGLE_PIXEL = "button_mode_inputSinglePixel"; static final String MODE_DRAW_TEST_PENWIDTH = "button_mode_drawTestPenWidth"; @@ -324,7 +325,6 @@ static final String MODE_SHOW_WEBCAM_RAW_VIDEO = "toggle_mode_showWebcamRawVideo static final String MODE_FLIP_WEBCAM_INPUT = "toggle_mode_flipWebcam"; static final String MODE_ROTATE_WEBCAM_INPUT = "toggle_mode_rotateWebcam"; - PVector statusTextPosition = new PVector(300.0, 12.0); static String currentMode = MODE_BEGIN; @@ -575,6 +575,7 @@ void setup() addEventListeners(); + noLoop(); //gamepad_init(); } void addEventListeners() @@ -603,9 +604,7 @@ void addEventListeners() void preLoadCommandQueue() { - addToCommandQueue(CMD_CHANGEPENWIDTH+currentPenWidth+",END"); - addToCommandQueue(CMD_SETMOTORSPEED+currentMachineMaxSpeed+",END"); - addToCommandQueue(CMD_SETMOTORACCEL+currentMachineAccel+",END"); + addToCommandQueue(CMD_AUTO_CALIBRATE+",END"); } void windowResized() @@ -949,13 +948,9 @@ void drawMoveImageOutline() void showCurrentMachinePosition() { noStroke(); - fill(255,0,255,150); - PVector pgCoord = getDisplayMachine().scaleToScreen(currentMachinePos); - ellipse(pgCoord.x, pgCoord.y, 20, 20); - - // also show cartesian position if reported fill(255,255,0,150); - ellipse(currentCartesianMachinePos.x, currentCartesianMachinePos.y, 15, 15); + PVector pgCoord = getDisplayMachine().scaleToScreen(currentCartesianMachinePos); + ellipse(pgCoord.x, pgCoord.y, 20, 20); noFill(); } @@ -2612,7 +2607,8 @@ void dispatchCommandQueue() } Checksum crc = new CRC32(); crc.update(lastCommand.getBytes(), 0, lastCommand.length()); - lastCommand = lastCommand+":"+crc.getValue(); + lastCommand = lastCommand+";"; +// lastCommand = lastCommand+":"+crc.getValue(); println("Last command:" + lastCommand); myPort.write(lastCommand); drawbotReady = false;