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:
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?
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
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.
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.