UC2 Logo OpenUC2 Online Tool

A Web Serial interface to control a UC2 ESP device using your browser.

Microscope Webcam Livestream
Timelapse Settings

Snaps Taken: 0

Hardware Control

Light Source / PWM Control
Slider only active when the channel is On. Range: 0–1023.
Motor Control
Each axis moves in steps. Axis mapping: A=0, X=1, Y=2, Z=3.
LED Array
8×8 LED Matrix
Enable Motors
Once enabled, the motors will remain powered even after movement.
Pair with PS4 Controller
Advanced Motor/Driver Control
TMC Stepper Driver
Only relevant if using CAN-based motor drivers. Axis: 0=A, 1=X, 2=Y, 3=Z.

CAN Address
Hint: MASTER=1, X=11, Y=12, Z=13, A=10, LED=30, Laser=20

Homing
Serial Terminal

Port Status: Disconnected


# TMC Act
{"task":"/tmc_act", "msteps":16, "rms_current":700, "sgthrs":15, "semin":5, "semax":2, "blank_time":24, "toff":4, "axis":2}

# CAN Act
{"task":"/can_act", "address":256}  // MASTER=256, X=273, Y=274, Z=275, A=272

# Home Act
{"task":"/home_act", "home":{"steppers":[{"stepperid":2,"timeout":20000,"speed":15000,"direction":-1,"endstoppolarity":0}]}}

# Motor Act
{"task":"/motor_act","motor":{"steppers":[{"stepperid":1,"position":4800,"speed":30000,"isabs":0,"isaccel":0,"accel":100000}]}}

# modules

{"task":"/modules_get"}
{"task":"/modules_set", "modules" : {"led" : 1, "motor": 1, "slm" : 0, "home":1, "analogin" : 0, "pid" : 0, "laser" : 1, "dac" : 0, "analogout" : 0, "digitalout" : 0, "digitalin" : 1, "scanner" : 0}}
{"task":"/modules_set", "modules" : {"led" : 0, "motor": 1, "slm" : 0, "home":0, "analogin" : 0, "pid" : 0, "laser" : 0, "dac" : 0, "analogout" : 0, "digitalout" : 0, "digitalin" : 1, "scanner" : 0}}
{"task":"/state_get"}
# DAC
{"task":"/dac_act_fct", "dac_channel":1, "frequency":1000, "offset":0, "amplitude":1}


{"task":"/linearencoder_get", "linencoder": { "posval": 1,    "id": 1  }}
{"task":"/linearencoder_get", "linencoder": { "posval": 1,    "id": 2  }}
# Encoder
{"task": "/linearencoder_act", "moveP": {"steppers": [ { "stepperid": 3, "position": -100 , "isabs":0, "speed": 10000, "cp":100.0, "ci":1.0, "cd":1.0} ]}}
{"task": "/linearencoder_act", "calpos": {"steppers": [ { "stepperid": 1, "calibsteps": -32000 , "speed": 10000} ]}}
{"task": "/linearencoder_act", "setup": {"steppers": [ { "stepperid": 1, "position": 0}]}}
{"task":"/linearencoder_get", "linencoder": { "posval": 3,    "id": 1  }}

{"task": "/linearencoder_act", "moveP": {"steppers": [ { "stepperid": 2, "position": 500 , "speed": 10000} ]}}       
{"task": "/linearencoder_act", "moveP": {"steppers": [ { "stepperid": 1, "isabs":1, "position": -10000 , "speed": 0, "cp":10, "ci":10.0, "cd":1.0} ]}}
{"task": "/linearencoder_act", "moveP": {"steppers": [ { "stepperid": 2, "position": -40000 , "speed": 10000, "cp":10.0, "ci":5.0, "cd":0.0} ]}}
{"task":"/motor_act", "motor": { "steppers": [ { "stepperid": 1, "position": 4800, "speed": 30000, "isabs": 0, "isaccel":0, "accel":100000} ] } }
# MOTOR
# X,Y,Z,A => 1,2,3,0
{"task":"/motor_act", "motor": { "steppers": [ { "stepperid": 0, "position": 10000, "speed": 20000, "isabs": 0, "isaccel":0, "accel":10000} ] } }
{"task":"/motor_act", "motor": { "steppers": [ { "stepperid": 1, "position": 4800, "speed": 3000, "isabs": 0, "isaccel":0, "accel":100000} ] } }
{"task":"/motor_act", "motor": { "steppers": [ { "stepperid": 2, "position": -4800, "speed": 30000, "isabs": 0, "isaccel":0, "accel":100000} ] } }
{"task":"/motor_act", "motor": { "steppers": [ { "stepperid": 1, "position": -4800, "speed": 30000, "isabs": 0, "isaccel":0, "accel":100000} ] } }
{"task":"/motor_act",
    "motor":
    {
        "steppers": [
            { "stepperid": 1, "position": -20000, "speed": 20000, "isabs": 0, "isaccel":0, "accel":10000}
        ]
    }
}
{"task":"/motor_act",
    "motor":
    {
        "steppers": [
            { "stepperid": 1, "position": -1000, "speed": 1000, "isabs": 0, "isaccel":0, "accel":200000}
        ]
    }
}
{"task":"/motor_act",
    "motor":
    {
        "steppers": [
            { "stepperid": 3, "isforever": 1, "speed": 2000}
        ]
    }
}
//en/dis/able
{"task":"/motor_act", "isen":0}
{"task":"/motor_act", "isen":1}
//forever
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "isforever": 1, "speed": -2000}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "isforever": 1, "speed": -2000}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "isforever": 0}]}}
//relativ
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 2, "position": -1000, "speed": -100}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 0, "position": -10000, "speed": 1000}]}}
{"task":"/b"}
//absolute
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": 10000, "speed": 10000,"isabs": 1}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": -500, "speed": 100,"isabs": 1}]}}


{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": 5000, "speed": 15000, "isabs": 0, "isaccel":0}]}}



# DIGITAL OUT 
// trigger 
{"task":"/digitalout_set", "digitaloutid":1, "digitaloutpin":4}
{"task":"/digitalout_act", "digitalout1TriggerDelayOn":100, "digitalout1TriggerDelayOff":10, "digitalout1IsTrigger":1,  "digitalout2TriggerDelayOn":10, "digitalout2TriggerDelayOff":100, "digitalout2IsTrigger":1}
{"task":"/digitalout_act", "digitaloutistriggerreset":1}


# DIGITAL IN
{"task": "/digitalin_get", "digitalinid":1}
{"task": "/digitalin_get", "digitalinid":2}
{"task": "/digitalin_get", "digitalinid":3}



# LASER
{
    "task": laser_act,
    "LASERid": 1,
    "LASERval": 512,
    "LASERdespeckle": 50,
    "LASERdespecklePeriod": 30,
}
{"task": "/laser_act", "LASERid":3, "LASERval": 200}
{"task": "/laser_act", "LASERid":1, "LASERval": 1000, "LASERdespeckle": 50,  "LASERdespecklePeriod": 30}
{"task":"/laser_act", "LASERid":1 ,"LASERFreq":50} // for servo
{"task": "/laser_act", "LASERid":1, "LASERval": 100}
{"task": "/laser_act", "LASERid":2, "LASERval": 100}
{"task": "/laser_act", "LASERid":2, "LASERval": 1023}
{"task": "/laser_act", "LASERid":3, "LASERval": 1000}
# HOME
{"task": "/home_get"}

{"task":"/home_act", "home": {"steppers": [{"stepperid":1, "timeout": 20000, "speed": 3000, "direction":-1, "endstoppolarity":0}]}}
{"task":"/home_act", "home": {"steppers": [{"stepperid":2, "timeout": 20000, "speed": 1000, "direction":-1,  "endstoppolarity":1}]}}



{"task":"/home_act", "home": {"steppers": [{"stepperid":3, "timeout": 2000, "speed": 10000, "direction":1,  "endstoppolarity":0}]}}

{"task":"/motor_act", "setaxis": {"steppers": [{"stepperid": 1, "stepperaxis": 1}]}}

# maikcorsocpe 
{"task":"/tmc_act", "msteps":16, "rms_current":800, "stall_value":100, "sgthrs":100, "semin":5, "semax":2, "blank_time":24, "toff":4, "axis":1}
{"task":"/tmc_act", "msteps":16, "rms_current":400, "axis": 1}

First (MAIK):
mm-per-step XY: 0.00635 -> 200 steps/rev 1.27mm/revolution 5.039,3700787402
mm-per-step Z: 0.005 -> 200 steps/rev 1mm/revolution

# drive home on axis Y
{"task":"/home_act", "home": {"steppers": [{"stepperid":2, "timeout": 10000, "speed": 15000, "direction":-1, "endstoppolarity":-1}]}}
{"task":"/home_act", "home": {"steppers": [{"stepperid":1, "timeout": 10000, "speed": 20000, "direction":-1, "endstoppolarity":-1}]}}
{"task":"/home_act", "home": {"steppers": [{"stepperid":3, "timeout": 20000, "speed": 10000, "direction":1, "endstoppolarity":-1}]}}
{"task":"/home_act", "home": {"steppers": [{"stepperid":0, "timeout": 20000, "speed": 20000, "direction":-1, "endstoppolarity":-1}]}}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "isstop": 1}]}}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": 5000, "speed": 20000, "isabs": 0, "isaccel":0, "maxspeed":1000000, "isen":1, "accel":40000}]}}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": 5000, "speed": 2000, "isabs": 0, "accel":100000, "isaccel":0}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 3, "position": 5000, "speed": 2000, "isabs": 0, "isaccel":1, "accel":50000}]}}

{"task": "/motor_act", "setpos": {"steppers": [{"stepperid": 1, "posval": 100}]}}
{"task":"/motor_get"}
{"task":"/i2c_get"}

{"task": "/state_act", "restart": 1}

# set the i2c address based on the motor axis (e.g. stepperaxis 1 = x, 2 = y, 3 = z; stepperid is always 1 since the remote motor driver runs on a single axis only), motor will restart 
{"task":"/motor_act", "setaxis": {"steppers": [{"stepperid": 1, "stepperaxis": 2}]}}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 0, "position": -5039, "speed": 20000, "isabs": 0, "isaccel":0, "isen":1, "accel":1000000}]}}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 3, "position": -9999, "speed": 10000, "isabs": 0, "isaccel":0, "isen":1, "accel":40000}]}}
{"task":"/motor_get"}
{"task":"/can_act", "motor": {"axis": 1, "speed": 1000, "position": 1000, "acceleration": 1000, "direction": 1, "isforever": 1}} //  single update

{"task": "/motor_act", "softlimits": {"steppers": [{"stepperid": 1, "min": -10000, "max": 10000, "isen": 1}]}}

{"task":"/can_act", "motor": {"axis": 1, "speed": 1000, "position": 1000, "acceleration": 1000, "direction": 1, "isforever": 1}}

{"task":"/objective_act","calibrate":1}
		{"task":"/objective_act","calibrate":1, "homeDirection": -1, "homeEndStopPolarity": -1} calibrate with direction and polarity (e.g. homing to set 0 position, objective positions are aboslute)
		{"task":"/objective_act","toggle":1, "speed": 26000, "accel": 400000} 			toggle between x1 and x2 objective positions (i.e. slot 1 or slot 2)
		{"task":"/objective_act","move":1,"speed":20000,"accel":20000,"obj":1}			explictely move to slot x1 or x2
		{"task":"/objective_act","x1":  5000, "x2": 35000} set explicit positions (in steps )
		{"task":"/objective_act","x1": -1, "x2": 2000}	set current position as x1 and explicit position for x2
		{"task":"/home_act", "home": {"steppers": [{"stepperid":0, "timeout": 20000, "speed": 10000, "direction":-1, "endstoppolarity":1}]}}
		{"task":"/tmc_act", "msteps":16, "rms_current":600, "sgthrs":15, "semin":5, "semax":2, "blank_time":24, "toff":4, "axis":0}


		{"task":"/home_act", "home": {"steppers": [{"stepperid": 3 , "timeout": 20000, "speed": 10000, "direction":-1, "endstoppolarity":1}]}}

# testing reduced motor transfers
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 1, "position": 10000, "speed": 10000, "isabs": 0, "isaccel": 1, "isen": 1, "accel": 500000}]}, "qid": 23}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "isstop": 1}]}}
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 1, "position": 1000, "speed":10000, "redu":2}]}, "qid": 23}

{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 1, "position": 1000, "speed": 10000, "isabs": 1, "isaccel": 1, "isen": 1, "accel": 500000, "redu":1}]}, "qid": 23}

{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 1, "position": 1000, "isabs":0, "speed":10000, "redu":0}]}, "qid": 23}

{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 2, "position": 1000, "isabs":0, "speed":10000, "redu":1}]}, "qid": 23}

{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 2, "position": 1000, "isabs":0, "speed":10000, "redu":1}]}, "qid": 23}

{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 2, "position": 1000, "isabs":0, "speed":10000, "redu":2}]}, "qid": 23}
{"task":"/motor_get"}

# set parameters on TMC stepper driver 
{"task":"/tmc_act", "msteps":16, "rms_current":1000, "sgthrs":15, "semin":5, "semax":2, "blank_time":24, "toff":4, "axis":0}
{"task":"/tmc_act", "msteps":16, "rms_current":1000, "sgthrs":15, "semin":5, "semax":2, "blank_time":24, "toff":4, "axis":1}
{"task":"/tmc_act", "msteps":16, "rms_current":700, "sgthrs":15, "semin":5, "semax":2, "blank_time":24, "toff":4, "axis":2}
{"task":"/tmc_act", "msteps":16, "rms_current":1000, "sgthrs":15, "semin":5, "semax":2, "blank_time":24, "toff":4, "axis":3}
{"task":"/tmc_get"}

{"task":"/can_act", "address": 1} // MASTER
{"task":"/can_act", "address": 11} // X
{"task":"/can_act", "address": 12} // Y 
{"task":"/can_act", "address": 13} // Z 
{"task":"/can_act", "address": 10} // A
{"task":"/can_act", "address": 30} // LED
{"task":"/can_get", "address": 1}
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 2, "speed": 10000, "redu":2}]}, "qid": 5}
{"task":"/can_get"}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": -500, "speed": -1500, "isabs": 0, "isaccel":0}]}}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": 5000, "speed": 15000, "isabs": 0, "isaccel":0, "red":1}]}}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 2, "position": 5000, "speed": 15000, "isabs": 0, "isaccel":0, "red":1}]}}


{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 0, "position": 2, "speed": 1000, "isabs": 0, "isaccel": 1, "isen": 1, "accel": 500000}]}, "qid": 13}


{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": -5000, "speed": -15000, "isabs": 0, "isaccel":0}]}} 
{"task":"/home_act", "home": {"steppers": [{"stepperid":2, "timeout": 20000, "speed": 12000, "direction":-1, "endstoppolarity":1}]}}

{"task":"/home_act", "home": {"steppers": [{"stepperid":1, "timeout": 20000, "speed": 15000, "direction":1, "endstoppolarity":1}]}}
{"task":"/home_act", "home": {"steppers": [{"stepperid":0, "timeout": 20000, "speed": 15000, "direction":-1, "endstoppolarity":1}]}}

{"task": "/laser_act", "LASERid":1, "LASERval": 0}
{"task": "/laser_act", "LASERid":2, "LASERval": 1023}
{"task": "/laser_act", "LASERid":1, "LASERval": 1023}



{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": -500, "speed": -1500, "isabs": 0, "isaccel":0}]}}

{"task": "/laser_act", "LASERid":1, "LASERval": 100} 

{"stepperid":2, "timeout": 20000, "speed": 15000, "direction":1, "endposrelease":3000}]}}

{"task":"/home_act", "home": {"steppers": [{"stepperid":1, "timeout": 20000, "speed": 3000, "direction":-1, "endstoppolarity":0}]}}
# Heating
 {"task": "/heat_act", "active":1, "Kp":100, "Ki":0.1, "Kd":0.1, "target":30, "updaterate":1000, "qid":1}
  {"task": "/heat_act", "active":1, "Kp":1000, "Ki":0.1, "Kd":0.1, "target":22, "timeout":600000, "updaterate":1000, "qid":1}
 {"task": "/heat_act", "active":0}
 {"task": "/heat_get"}


{"task":"/wifi/scan"}
{"task":"/wifi/connect","ssid":"Test","PW":"12345678", "AP":false}



{"task":"/ledarr_act", "qid":1, "led":{"LEDArrMode":1, "led_array":[{"id":0, "r":255, "g":255, "b":255}]}}
{"task":"/ledarr_act", "led":{"LEDArrMode":1, "led_array":[{"id":0, "r":0, "g":0, "b":0}]}}
{"task":"/ledarr_act", "led":{"LEDArrMode":0, "led_array":[{"id":0, "r":0, "g":5, "b":0}]}}

# center spot 
{"task":"/ledarr_act", "led":{"LEDArrMode":8, "led_array":[
    {"id":0, "r":255, "g":255, "b":255}]}}
{"task":"/ledarr_act", "led":{"LEDArrMode":8, "led_array":[
    {"id":0, "r":0, "g":0, "b":0}]}}


# middle ring 
{"task":"/ledarr_act", "led":{"LEDArrMode":8, "led_array":[
    {"id":1, "r":255, "g":255, "b":255},
    {"id":2, "r":255, "g":255, "b":255},
    {"id":3, "r":255, "g":255, "b":255},
    {"id":4, "r":255, "g":255, "b":255},
    {"id":5, "r":255, "g":255, "b":255},
    {"id":6, "r":255, "g":255, "b":255},
    {"id":7, "r":255, "g":255, "b":255},
    {"id":8, "r":255, "g":255, "b":255},
    {"id":9, "r":255, "g":255, "b":255}]}}

{"task":"/ledarr_act", "led":{"LEDArrMode":8, "led_array":[
    {"id":1, "r":0, "g":0, "b":0},
    {"id":2, "r":0, "g":0, "b":0},
    {"id":3, "r":0, "g":0, "b":0},
    {"id":4, "r":0, "g":0, "b":0},
    {"id":5, "r":0, "g":0, "b":0},
    {"id":6, "r":0, "g":0, "b":0},
    {"id":7, "r":0, "g":0, "b":0},
    {"id":8, "r":0, "g":0, "b":0},
    {"id":9, "r":0, "g":0, "b":0}]}}

# outer ring
{"task":"/ledarr_act", "led":{"LEDArrMode":8, "led_array":[
    {"id":9, "r":255, "g":255, "b":255},
    {"id":10, "r":255, "g":255, "b":255},
    {"id":11, "r":255, "g":255, "b":255},
    {"id":12, "r":255, "g":255, "b":255},
    {"id":13, "r":255, "g":255, "b":255},
    {"id":14, "r":255, "g":255, "b":255},
    {"id":15, "r":255, "g":255, "b":255},
    {"id":16, "r":255, "g":255, "b":255},
    {"id":17, "r":255, "g":255, "b":255},
    {"id":18, "r":255, "g":255, "b":255},
    {"id":19, "r":255, "g":255, "b":255},
    {"id":20, "r":255, "g":255, "b":255},
    {"id":21, "r":255, "g":255, "b":255},
    {"id":22, "r":255, "g":255, "b":255}, 
    {"id":23, "r":255, "g":255, "b":255},
    {"id":24, "r":255, "g":255, "b":255}]}}

{"task":"/ledarr_act", "led":{"LEDArrMode":8, "led_array":[
    {"id":9, "r":0, "g":0, "b":0},
    {"id":10, "r":0, "g":0, "b":0},
    {"id":11, "r":0, "g":0, "b":0},
    {"id":12, "r":0, "g":0, "b":0},
    {"id":13, "r":0, "g":0, "b":0},
    {"id":14, "r":0, "g":0, "b":0},
    {"id":15, "r":0, "g":0, "b":0},
    {"id":16, "r":0, "g":0, "b":0},
    {"id":17, "r":0, "g":0, "b":0},
    {"id":18, "r":0, "g":0, "b":0},
    {"id":19, "r":0, "g":0, "b":0},
    {"id":20, "r":0, "g":0, "b":0},
    {"id":21, "r":0, "g":0, "b":0},
    {"id":22, "r":0, "g":0, "b":0}, 
    {"id":23, "r":0, "g":0, "b":0},
    {"id":24, "r":0, "g":0, "b":0}]}}

{"task":"/motor_get"}
{"task":"/bt_scan"}

// Stage scan
{"task": "/motor_act", "isDualAxisZ": 1, "qid":1}
{"task": "/motor_act", "isDualAxisZ": 0}
{"task": "/motor_act", "setpos": {"steppers": [{"stepperid": 0, "posval": 100}, {"stepperid": 1, "posval": 0}, {"stepperid": 2, "posval": 0}, {"stepperid": 3, "posval": 0}]}}
{"task": "/motor_act", "stagescan": {"nStepsLine": 100, "dStepsLine": 1, "nStepsPixel": 100, "dStepsPixel": 2, "delayTimeStep": 10, "stopped": 0, "nFrames": 50}}
	// {"task": "/motor_act", "stagescan": {"nStepsLine": 256, "dStepsLine": 25, "nStepsPixel": 256, "dStepsPixel": 25, "delayTimeStep": 25, "stopped": 0, "nFrames": 50}}}
	// {"task": "/motor_act", "stagescan": {"stopped": 1"}}
	// {"task": "/motor_act", "stagescan": {"nStepsLine": 1{"task": "/motor_act", "stagescan": {"nStepsLine": 10, "dStepsLine": 1, "nTriggerLine": 1, "nStepsPixel": 10, "dStepsPixel": 1, "nTriggerPixel": 1, "delayTimeStep": 10, "stopped": 0, "nFrames": 5}}"}}0, "dStepsLine": 1, "nTriggerLine": 1, "nStepsPixel": 10, "dStepsPixel": 1, "nTriggerPixel": 1, "delayTimeStep": 10, "stopped": 0, "nFrames": 5}}"}}

		// { "task": "/ledarr_act", "qid": 17, "led": { "LEDArrMode": 1, "action": "rings", "region": "left", "radius": 4, "r": 255, "g": 255, "b": 255, "ledIndex": 12, "led_array": [ { "id": 0, "r": 255, "g": 255, "b": 0 }, { "id": 5, "r": 128, "g": 0,   "b": 128 } ] } }
		// { "task": "/ledarr_act", "qid": 17, "led": { "action": "off" } }
		// { "task": "/ledarr_act", "qid": 17, "led": { "action": "single", "ledIndex": 12, "r": 255, "g": 255, "b": 255 } }
		// { "task": "/ledarr_act", "qid": 17, "led": { "action": "halves", "region": "left", "r": 255, "g": 255, "b": 255 } }
		// { "task": "/ledarr_act", "qid": 17, "led": { "action": "halves", "region": "right", "r": 15, "g": 15, "b": 15} }
		// { "task": "/ledarr_act", "qid": 17, "led": { "action": "rings", "radius": 4, "r": 255, "g": 255, "b": 255 } }
		// { "task": "/ledarr_act", "qid": 17, "led": { "action": "circles", "radius": 5, "r": 255, "g": 255, "b": 255 } }

	
{"task":"/galvo_act", "qid":1, "X_MIN":0, "X_MAX":1000, "Y_MIN":0, "Y_MAX":1000, "STEP":10, "tPixelDwelltime":1, "nFrames":100}
{"task":"/galvo_act", "qid":1, "X_MIN":0, "X_MAX":100, "Y_MIN":0, "Y_MAX":100, "STEP":1, "tPixelDwelltime":0, "nFrames":1}


{"task":"/state_get", "heap":1}
{"task": "/ledarr_act", "led": {"LEDArrMode": 0, "led_array": [{"id": 28, "r": 18, "g": 6, "b": 28}, {"id": 29, "r": 14, "g": 47, "b": 5}, {"id": 30, "r": 2, "g": 31, "b": 24}, {"id": 31, "r": 53, "g": 8, "b": 50}, {"id": 32, "r": 1, "g": 15, "b": 14}, {"id": 33, "r": 19, "g": 18, "b": 39}, {"id": 34, "r": 44, "g": 22, "b": 29}, {"id": 35, "r": 4, "g": 38, "b": 9}, {"id": 36, "r": 1, "g": 28, "b": 54}, {"id": 37, "r": 37, "g": 43, "b": 22}, {"id": 38, "r": 14, "g": 27, "b": 27}, {"id": 39, "r": 22, "g": 10, "b": 49}, {"id": 40, "r": 32, "g": 29, "b": 39}, {"id": 41, "r": 14, "g": 2, "b": 41}, {"id": 42, "r": 39, "g": 37, "b": 35}, {"id": 43, "r": 26, "g": 44, "b": 32}, {"id": 44, "r": 45, "g": 19, "b": 53}, {"id": 45, "r": 44, "g": 26, "b": 37}, {"id": 46, "r": 40, "g": 28, "b": 11}, {"id": 47, "r": 9, "g": 4, "b": 23}, {"id": 48, "r": 41, "g": 22, "b": 31}, {"id": 49, "r": 10, "g": 5, "b": 46}, {"id": 50, "r": 48, "g": 39, "b": 52}, {"id": 51, "r": 33, "g": 15, "b": 26}, {"id": 52, "r": 50, "g": 19, "b": 44}, {"id": 53, "r": 34, "g": 18, "b": 35}, {"id": 54, "r": 6, "g": 0, "b": 39}, {"id": 55, "r": 6, "g": 26, "b": 43}]}, "qid": 2}
# HOLISHEET
{"task":"/modules_set", "modules" : {"dac" : 1}}
{"task": "/laser_act", "LASERid":1, "LASERval": 500}
{"task": "/laser_act", "LASERid":1, "LASERval": 0}
{"task": "/laser_act", "LASERid":3, "LASERval": 1023}
{"task":"/dac_act", "dac_channel":1, "frequency":2}
{"task":"/motor_act",
    "motor":
    {
        "steppers": [
            { "stepperid": 1, "position": 10000, "speed": 15000, "isabs": 0, "isaccel":0}
        ]
    }
}

{"task": "/laser_act", "LASERid":2, "LASERval": 1024}


{"task":"/home_act", "home": {"steppers": [{"stepperid":1, "timeout": 20000, "speed": 20000, "direction":-1, "endstoppolarity":0}]}}
{"task":"/home_act", "home": {"steppers": [{"stepperid":2, "timeout": 20000, "speed": 20000, "direction":-1, "endstoppolarity":0}]}}
{"task":"/home_act", "home": {"steppers": [{"stepperid":3, "timeout": 20000, "speed": 10000, "direction":-1,  "endstoppolarity":1}]}}

{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 1, "speed":20000, "position": 1000,  "isabs": 0}]}, "qid": 5}
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 2, "speed":20000, "position": 100000,  "isabs": 1}]}, "qid": 5}
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 3, "speed":20000, "position": 10000,  "isabs": 1}]}, "qid": 5}



{"task":"/tmc_act", "msteps":16, "rms_current":600, "sgthrs":15, "semin":5, "semax":2, "blank_time":24, "toff":4}
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 0, "position": -30000, "speed": 20000, "isabs": 0.0, "accel": 1000000, "isen": true}]}, "qid": 8}
{"task":"/motor_act", "isen":1, "isenauto":0}

{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 1, "position": 0, "speed": 100, "isabs": 0.0, "isaccel": 1, "accel":10000, "isen": true}]}, "qid": 5}
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 3, "position": -10000, "speed": 100, "isabs": 0.0, "isaccel": 1, "accel":10000, "isen": true}]}, "qid": 5}
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 3, "position": 10000, "speed": 10000, "isabs": 0, "isaccel": 1, "accel":10000, "isen": true}]}, "qid": 7}
{"task": "/motor_act", "motor": {"steppers": [{"stepperid": 0, "position": 1000, "speed": 1000, "isabs": 0.0, "isaccel": 1, "isen": true}]}, "qid": 8}

{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": -20090, "speed": -20000, "isabs": 0, "isaccel":1, "accel":10000}]}}
{"task": "/motor_act","qid":3,"motor":{"steppers": [{"stepperid": 2, "position": 400, "speed": 10000, "isabs": 0, "isaccel": 0, "isen": true}]}}
{"task":"/motor_act","qid":4, "motor":{"steppers": [{ "stepperid": 1, "position": 400, "speed": -20000, "isabs": 0, "isaccel":1, "accel":10000}]}}
{"task":"/motor_act","qid":4, "motor":{"steppers": [{ "stepperid": 0, "position": -40000, "speed": -10000, "isabs": 0, "isaccel":1, "accel":10000}]}}
{"task":"/motor_act","qid":4, "motor":{"steppers": [{ "stepperid": 0, "position": 40000, "speed": -20000, "isabs": 0, "isaccel":1, "accel":10000}]}}
{"task":"/motor_act","qid":4, "motor":{"steppers": [{ "stepperid": 0, "position": -20000, "speed": -20000, "isabs": 0, "isaccel":1, "accel":10000}]}}
{"task":"/motor_act","qid":5, "motor":{"steppers": [{ "stepperid": 3, "position": 2000, "speed": 20000, "isabs": 0, "isaccel":1, "accel":10000}]}}
{"task":"/motor_act","qid":5, "motor":{"steppers": [{ "stepperid": 3, "position": 20000, "speed": 20000, "isabs": 1, "isaccel":1, "accel":10000}]}}

{"task": "/encoder_act", "calpos": {"steppers": [ { "stepperid": 1, "calibsteps": -32000 , "speed": 20000} ]}}
{"task":"/encoder_get", "encoder": { "posval": 1,    "id": 1  }}
{"task":"/motor_act","qid":4, "motor":{"steppers": [{ "stepperid": 2, "position": -40000, "speed": -10000, "isabs": 0, "isaccel":1, "accel":10000}]}}

{"task":"/motor_act",
    "motor":
    {
        "steppers": [
            { "stepperid": 3, "position": -100, "speed": 150, "isabs": 0, "isaccel":0, "isen":1},
            { "stepperid": 2, "position": -100, "speed": 150, "isabs": 0, "isaccel":0, "isen":1}
        ]
    }
}
{"task": "/motor_get"}

{"task":"/motor_act","qid":4, "motor":{"steppers": [{ "stepperid": 2, "position": -20000, "speed": -20000, "isabs": 0, "isaccel":1, "accel":10000}]}}

{"task":"/motor_act", "motor": { "steppers": [ { "stepperid": 3, "position": -100, "speed": 15000, "isabs": 0, "isaccel":0, "isen":1}, { "stepperid": 2, "position": -100, "speed": 150, "isabs": 0, "isaccel":0, "isen":1} ] } }

			{"task":"/motor_act", "setaxis": {"steppers": [{"stepperid": 1, "stepperaxis": 3}]}}

{"task":"/home_act", "qid": 10, "setpos":1, "home": {"steppers": [{"stepperid":3, "posval": 20000}]}}
{"task": "/home_act", "setpos": {"steppers": [{"stepperid": 0, "posval": 0}]}}
{"task": "/home_act", "setpos": {"steppers": [{"stepperid": 0, "posval": 100}, {"stepperid": 1, "posval": 0}, {"stepperid": 2, "posval": 0}, {"stepperid": 3, "posval": 0}]}}
{"task": "/motor_get"}
{"task":"/motor_act", "isen":1, "isenauto":0}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 3, "position": -1000, "speed": 15000, "isabs": 0, "isaccel":0}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 3, "position": 10000, "speed": 15000, "isabs": 0, "isaccel":0}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 2, "position": 10000, "speed": 15000, "isabs": 0, "isaccel":0}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 2, "position": -10000, "speed": 15000, "isabs": 0, "isaccel":0}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": -10000, "speed": 15000, "isabs": 0, "isaccel":0}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 1, "position": 10000, "speed": 15000, "isabs": 0, "isaccel":0}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 0, "position": 10000, "speed": 15000, "isabs": 0, "isaccel":0}]}}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 0, "position": -10000, "speed": 15000, "isabs": 0, "isaccel":0}]}}
{"task":"/motor_get"}
{"task":"/motor_act","motor":{"steppers": [{ "stepperid": 0, "position": -5000, "speed": 15000, "isabs": 0, "isaccel":1, "accel":10000}]}}



gives
++
{
        "steppers":     [{
                        "stepperid":    3,
                        "position":     -2000,
                        "isDone":       1
                }]
}

--

{"task":"/motor_act",
    "motor":
    {
        "steppers": [
            { "stepperid": 1, "position": -10000, "speed": 15000, "isabs": 0, "isaccel":0, "isen":1}
    ]}}

 {"task":"/motor_act",     "motor":     {         "steppers": [             { "stepperid": 1, "position": -1000, "speed": 2000, "isabs": 0, "isaccel":1, "isen":0, "accel":20000}     ]}}

{"task":"/motor_act",     "motor":     {         "steppers": [             { "stepperid": 3, "position": 100, "speed": 200, "isabs": 0, "isaccel":1, "isen":0, "accel":20000}     ]}}


{"task":"/motor_act",     "motor":     {         "steppers": [             { "stepperid": 3, "position": -1000, "speed": 2000, "isabs": 0, "isaccel":1, "isen":0, "accel":20000}     ]}}
{"task":"/rotator_get"}
{"task":"/rotator_act",
    "motor":
    {
        "steppers": [
            { "stepperid": 1, "position": 10000, "speed": 500, "isabs": 0, "isaccel":0}
        ]
    }
}
{"task":"/rotator_act",
    "motor":
    {
        "steppers": [
            { "stepperid": 1, "position": 10000, "speed": 500, "isabs": 0, "isaccel":0}, 
            { "stepperid": 2, "position": 10000, "speed": 500, "isabs": 0, "isaccel":0},         ]
    }
}
{"task":"/state_get"}


	// {"task":"/state_act", "restart":1}
	// {"task":"/state_act", "delay":1000}
	// {"task":"/state_act", "isBusy":1}
	// {"task":"/state_act", "resetPreferences":1}
	{"task":"/state_act", "debug":4} // 0-5

ƒ


# XIAO

{"task":"/ledarr_act", "qid":1, "led":{"LEDArrMode":1, "led_array":[{"id":0, "r":255, "g":255, "b":255}]}}
{"task":"/ledarr_act", "qid":1, "led":{"LEDArrMode":1, "led_array":[{"id":0, "r":0, "g":0, "b":255}]}}

{"task": "/laser_act", "LASERid":1, "LASERval": 0}
{"task": "/laser_act", "LASERid":2, "LASERval": 0}

{"task": "/laser_act", "LASERid":1, "LASERval": 0}
{"task": "/laser_act", "LASERid":2, "LASERval": 1023}
{"task": "/laser_act", "LASERid":2, "LASERval": 100, "LASERdespeckle": 500,  "LASERdespecklePeriod": 100}
{"task": "/laser_act", "LASERid":3, "LASERval": 150, "LASERdespeckle": 500,  "LASERdespecklePeriod": 100}
{"task": "/laser_act", "LASERid":2, "LASERval": 0}
{"task": "/laser_act", "LASERid":1, "LASERval": 1024}
{"task": "/laser_act", "LASERid":1, "LASERval": 0}
{"task": "/laser_act", "LASERid":2, "LASERval": 1024}