# Change XXYYZZ to the UID of your Stepper Brick

setup:
	# Use position reached callback to program random movement
	subscribe to tinkerforge/callback/stepper_brick/XXYYZZ/position_reached
		if a message arives
			# message contains the current position as int
			generate random numbers r,
			                        steps [1000;5000],
			                        vel [200; 2000],
			                        acc [100; 1000] and
			                        dec [100; 1000]

			if r is even
				# Driving forward
			else
				# Driving backward
				set steps to -steps
			endif

			publish '{"acceleration": acc, "deceleration": dec}' to tinkerforge/request/stepper_brick/XXYYZZ/set_speed_ramping
			publish '{"velocity": vel}' to tinkerforge/request/stepper_brick/XXYYZZ/set_max_velocity
			publish '{"steps": steps}' to tinkerforge/request/stepper_brick/XXYYZZ/set_steps
		endif
	endsubscribe

	publish '{"register": true}' to tinkerforge/register/stepper_brick/XXYYZZ/position_reached # Register position_reached callback

	publish '' to tinkerforge/request/stepper_brick/XXYYZZ/enable # Enable motor power

	publish '{"steps": 1}' to tinkerforge/request/stepper_brick/XXYYZZ/set_steps # Drive one step forward to get things going

cleanup:
	# If you are done, run this to clean up
	# Stop motor before disabling motor power
	publish '' to tinkerforge/request/stepper_brick/XXYYZZ/stop # Request motor stop

	publish '{"acceleration": 500, "deacceleration": 5000}' to tinkerforge/request/stepper_brick/XXYYZZ/set_speed_ramping # Fast deacceleration (5000 steps/s^2) for stopping

	wait for 0.4s # Wait for motor to actually stop: max velocity (2000 steps/s) / decceleration (5000 steps/s^2) = 0.4 s

	publish '' to tinkerforge/request/stepper_brick/XXYYZZ/disable # Disable motor power
