getPosition Answer

Good day,
I want to use a Micro Maestro at a controller for panoramic photos.

The control software for the head initializes the Micro Maestro with the following sequence:

A4
87000500
89000100
8400201F
A4
87010500
89010100
8401702E
A4
9000
9001

The whole communication is controlled by an Arduino Mega 2560, which the bytes of the control software receives through a serial port and another port forwards them to the Maestro Micro and forwards in a reply Maestro Micro to the serial port of the control software.

The control software repeatedly query the position permanently.
How can I tell which belongs returned byte to what channel?

many Greetings
kwalter

Hello, kwalter.

When you send the Get Position command, you specify the command byte and the channel of the servo you want to know the position of. Since you send 0x90, 0x00 first, you will receive the response bytes for channel 0 first. Note that the response will be two bytes formatted as a standard little-endian two-byte unsigned integer. More information about this command can be found in the “Serial Servo Commands” section of the Maestro controller’s user’s guide.

By the way, the 0xA4 command is to stop a script that is running on the Maestro. From the sequence of bytes you posted, I do not see another command that starts a script again, so you should not need to send that byte between each set of commands (e.g. any script that was running on the Maestro will be stopped by the first 0xA4 command).

-Brandon

Hello,

I’ve understood.

But, the software I use is to control the panorama head an application to which I have no control. And sends the commands given from me. So also the continuos getPosition query for the servos 0 and 1. So my question of the allocation of the responses of the Micro Maestro.

Yours sincerely
kwalter

It sounds like you will need to find some way to sync your software with whatever device you are monitoring responses from. If they turn on at the same time, the returned bytes should be in the order of how they are sent. If you are trying to parse the data at some arbitrary point in time after it starts sending data, it might be really hard to distinguish which bytes are for which servo. From your description, I am not sure how much control you have from the software, but some kind of start byte between each set of data could be one way to sync it.

-Brandon