Decide a position from approximately which you will begin. Eg. a final 210degree position (or in can be something else) and an initial position (your 0 degree) position as they are in your structure and set-up. We will call these the "End Position". and "Initial Position". This position will be achieved exactly. 

Use the SMS Commander via connectivity with RS485 (see our download section @

- Power up your system in the End Position. DO NOT start the controllers.

- Execute a getAbsolutePosition for each controller. Note down the values on a piece of paper: END_POS_1

- Execute a resetIncrementalPosition for the controller.

- Take your setup by hand to the Initial Position and fix it there by some means.

- Execute a getPosition for each controller and also note them down. They are INIT_POS_1

These constants should be written in the code. We selected the INIT Position to be downwards and the END Position to be near 210degrees - counterclockwise. Our positive values on ticks movements give a counterclockwise direction. So these ticks were registered and reflected to the ino file void setup () section presented herewith:


#include <ZerooneSupermodified.h>
#include <Wire.h>

long time;

ZerooneSupermodified motor(ZO_HW_WIRE);

#define END_POS_1 (32053)  			//the number of axis 1 from your notes
#define INIT_POS_1 (-19328)			//the number from your notes

void setup() {
  // put your setup code here, to run once:


int wakeUpPos1;
int zeroPos;

	wakeUpPos1 = motor.getAbsolutePosition(5);
	//Move motors to Initial Position

	motor.profiledMoveToAbsolutePosition( 5, END_POS_1 - wakeUpPos1 + INIT_POS_1 );
	zeroPos=(END_POS_1 - wakeUpPos1 + INIT_POS_1);
	//after the above commands and provided that the actual end position is 
	//within 1 turn of the noted END POSITION the setup must have assumed its
	//initial position. 

void loop() {

//Your amazing SMS V3.0 code here