Mini Maestro 12 servo

Hi guys,

why if I write the simple code

# Sequence 2
begin
  500 8935 2721 9013 2799 5168 6527 
  5595 7304 0 0 0 0 frame_0..11 # Frame 0
repeat

sub frame_0..11
  11 servo
  10 servo
  9 servo
  8 servo
  7 servo
  6 servo
  5 servo
  4 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

I receive this error message

What mean?

Many Thanks

Hello.

When I copy and paste the script you provided to my 24-channel Maestro (running firmware version 1.02), it does not give me any errors. Could you post your Maestro settings file? Also, what firmware version do you have on your Maestro? The firmware version should be displayed next to the drop-down box in the upper left corner of the Maestro Control Center.

-Brandon

Hi Brandon,

my config file

<!--Pololu Maestro servo controller settings file, https://www.pololu.com/catalog/product/1350-->
<UscSettings version="1">
  <NeverSuspend>false</NeverSuspend>
  <SerialMode>UART_FIXED_BAUD_RATE</SerialMode>
  <FixedBaudRate>9600</FixedBaudRate>
  <SerialTimeout>0</SerialTimeout>
  <EnableCrc>false</EnableCrc>
  <SerialDeviceNumber>12</SerialDeviceNumber>
  <SerialMiniSscOffset>0</SerialMiniSscOffset>
  <Channels MiniMaestroServoPeriod="80000" ServoMultiplier="1">
    <!--Period = 20 ms-->
    <!--Channel 0-->
    <Channel name="AnterioreSx" mode="Servo" min="7488" max="9984" homemode="Goto" home="9024" speed="0" acceleration="0" neutral="9024" range="1905" />
    <!--Channel 1-->
    <Channel name="AnterioreDx" mode="Servo" min="2240" max="5312" homemode="Goto" home="3200" speed="0" acceleration="0" neutral="3200" range="1905" />
    <!--Channel 2-->
    <Channel name="PosterioreDx" mode="Servo" min="8448" max="9984" homemode="Goto" home="9024" speed="0" acceleration="0" neutral="8448" range="1905" />
    <!--Channel 3-->
    <Channel name="PosterioreSx" mode="Servo" min="2432" max="4416" homemode="Goto" home="3200" speed="0" acceleration="0" neutral="3200" range="1905" />
    <!--Channel 4-->
    <Channel name="AnterioreSupSx" mode="Servo" min="6592" max="7488" homemode="Goto" home="6592" speed="0" acceleration="0" neutral="6592" range="1905" />
    <!--Channel 5-->
    <Channel name="AnterioreSupDx" mode="Servo" min="4416" max="5440" homemode="Goto" home="5440" speed="0" acceleration="0" neutral="5376" range="1905" />
    <!--Channel 6-->
    <Channel name="PosterioreSupDx" mode="Servo" min="5504" max="6272" homemode="Goto" home="5517" speed="0" acceleration="0" neutral="5504" range="1905" />
    <!--Channel 7-->
    <Channel name="PosterioreSupSx" mode="Servo" min="4864" max="5888" homemode="Goto" home="5867" speed="0" acceleration="0" neutral="5888" range="1905" />
    <!--Channel 8-->
    <Channel name="" mode="Servo" min="3968" max="8000" homemode="Off" home="3968" speed="0" acceleration="0" neutral="6000" range="1905" />
    <!--Channel 9-->
    <Channel name="" mode="Servo" min="3968" max="8000" homemode="Off" home="3968" speed="0" acceleration="0" neutral="6000" range="1905" />
    <!--Channel 10-->
    <Channel name="" mode="Servo" min="3968" max="8000" homemode="Off" home="3968" speed="0" acceleration="0" neutral="6000" range="1905" />
    <!--Channel 11-->
    <Channel name="" mode="Servo" min="3968" max="8000" homemode="Off" home="3968" speed="0" acceleration="0" neutral="6000" range="1905" />
  </Channels>
  <Sequences>
    <Sequence name="Sequence 0">
      <Frame name="Frame 0" duration="500">9000 3000 9000 3000 5888 5952 5568 6592 0 0 0 0</Frame>
      <Frame name="Frame 1" duration="500">9000 3000 7616 3000 5888 5952 5568 6592 0 0 0 0</Frame>
      <Frame name="Frame 2" duration="500">9000 3000 7616 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 3" duration="500">9000 3000 7616 3000 5888 5312 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 4" duration="500">9000 2304 7616 3000 5888 5312 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 5" duration="500">9000 2304 7616 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 15" duration="500">9000 3000 9000 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 10" duration="500">9000 2304 9000 4800 6720 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 11" duration="500">9984 2304 9000 4800 6720 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 12" duration="500">9984 2304 9000 4800 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 6" duration="500">9000 2304 9000 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 7" duration="500">9000 2304 9000 3000 5888 5952 4672 6080 0 0 0 0</Frame>
      <Frame name="Frame 8" duration="500">9000 2304 9000 4800 5888 5952 4672 6080 0 0 0 0</Frame>
      <Frame name="Frame 9" duration="500">9000 2304 9000 4800 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 14" duration="500">9000 2304 9000 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 13" duration="500">9984 2304 9000 3000 5888 5952 4672 6592 0 0 0 0</Frame>
    </Sequence>
    <Sequence name="Sequence 1">
      <Frame name="Frame 0" duration="500">9000 3000 9000 3000 5888 5952 5568 6592 0 0 0 0</Frame>
      <Frame name="Frame 1" duration="500">9000 3000 7616 3000 5888 5952 5568 6592 0 0 0 0</Frame>
      <Frame name="Frame 2" duration="500">9000 3000 7616 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 3" duration="500">9000 3000 7616 3000 5888 5312 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 4" duration="500">9000 2304 7616 3000 5888 5312 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 5" duration="500">9000 2304 7616 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 6" duration="500">9000 2304 7616 3000 6720 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 7" duration="500">9984 2304 7616 3000 6720 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 8" duration="500">9984 2304 7616 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 9" duration="500">9984 4429 7616 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 10" duration="500">9984 4429 9000 3000 5888 5952 4672 6592 0 0 0 0</Frame>
      <Frame name="Frame 11" duration="500">9984 4429 9000 3000 5888 5952 4672 4800 0 0 0 0</Frame>
      <Frame name="Frame 12" duration="500">9984 4429 9000 4800 5888 5952 4672 4800 0 0 0 0</Frame>
      <Frame name="Frame 13" duration="500">9984 4429 9000 4800 5888 5952 4672 6557 0 0 0 0</Frame>
      <Frame name="Frame 14" duration="500">9984 4429 9000 3000 5888 5952 4672 6557 0 0 0 0</Frame>
      <Frame name="Frame 15" duration="500">9000 4429 9000 3000 5888 5952 4672 6557 0 0 0 0</Frame>
    </Sequence>
    <Sequence name="Sequence 2">
      <Frame name="Frame 1" duration="200">9984 5312 9984 4416 6592 5440 5504 4864 0 0 0 0</Frame>
      <Frame name="Frame 2" duration="200">7488 2240 9984 4416 6592 4416 5504 5888 0 0 0 0</Frame>
      <Frame name="Frame 3" duration="200">7488 2240 8448 2432 6592 5440 6272 5888 0 0 0 0</Frame>
      <Frame name="Frame 4" duration="200">9984 5312 8448 2432 7488 5440 5504 5888 0 0 0 0</Frame>
    </Sequence>
  </Sequences>
  <Script ScriptDone="true"># Sequence 2
begin
  200 9984 5312 9984 4416 6592 5440 
  5504 4864 0 0 0 0 frame_0..11 # Frame 1
  200 7488 2240 4416 5888 frame_0_1_5_7 # Frame 2
  200 8448 2432 5440 6272 frame_2_3_5_6 # Frame 3
  200 9984 5312 7488 5504 frame_0_1_4_6 # Frame 4
repeat

sub frame_0..11
  11 servo
  10 servo
  9 servo
  8 servo
  7 servo
  6 servo
  5 servo
  4 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

sub frame_0_1_5_7
  7 servo
  5 servo
  1 servo
  0 servo
  delay
  return

sub frame_2_3_5_6
  6 servo
  5 servo
  3 servo
  2 servo
  delay
  return

sub frame_0_1_4_6
  6 servo
  4 servo
  1 servo
  0 servo
  delay
  return

</Script>
</UscSettings>

Firmware version is 1.

Many Thanks,

Your script looks like it has changed since your first post. I tried loading your Maestro settings on my Maestro and running your new script, but it still does not result in any error messages. The firmware versions are 1.00, 1.01, and 1.02; when you said that your firmware version is 1, did you mean 1.00?

Could you try hitting the “Clear Errors” button in the “Errors” tab and restarting the device by clicking on “Device” then “Restart Device” and try running your script again?

-Brandon

Hi Brandon,

sorry for my slowly response… :unamused:

I’m talking about 1.5.2.0 version.

I try always CLEAR ERROR + RESTART button

ThANKS

It sounds like you are referring to the version of the Maestro Control Center Software. I am asking what firmware version is on your Maestro servo controller. You can find this by connecting your Maestro to your computer using your USB cable, selecting your Maestro in the control center, and looking to the right of the drop down device selection box at the top of the control center, above the tabs.

-Brandon

I Brandon,

I hope understand the problem…

When I try to execute my simple script:

### Sequence subroutines: ###

# Sequence 2
sub Sequence_2
  150 8000 7424 6848 7296 6592 5440 
  5517 4864 0 0 0 0 frame_0..11 # Frame 1
  150 4480 4544 4416 5888 frame_0_1_5_7 # Frame 2
  150 4352 5248 5440 6272 frame_2_3_5_6 # Frame 3
  150 8000 7424 7488 5504 frame_0_1_4_6 # Frame 4
  return

sub frame_0..11
  11 servo
  10 servo
  9 servo
  8 servo
  7 servo
  6 servo
  5 servo
  4 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return



sub frame_0_1_5_7
  7 servo
  5 servo
  1 servo
  0 servo
  delay
  return

sub frame_2_3_5_6
  6 servo
  5 servo
  3 servo
  2 servo
  delay
  return

sub frame_0_1_4_6
  6 servo
  4 servo
  1 servo
  0 servo
  delay
  return

In the upper-right corner of the Maestro Control Center I can read:

In fact I receive the follow error:

Why this happens?

Hi brandon now is OK!!

The problem was the use of all 126 level of subroutines call.

In fact, now I use one only level (only one subroutines call) and does work very fine!!! :laughing:

Thanks a lot

I am glad you were able to figure out what your problem was and correct it. Thank you for letting us know.

-Brandon

Yes,
because It’s important to note that when copy the frame sequence to script tab,
Micro Maestro runtime calling nested subroutines until overflow memory :blush:

You must prefer write correct code like

begin
       sub 'calling subfunction'    
repeat

where sub 'calling subfunction' is code copied from frame sequence

I hope it’s a clear explanation

It sounds like you understand what the problem was. When you copy your sequences to the script using the “Copy all sequences to Script” button, the Maestro Control Center enters them into the script as subroutines that should be called from the main body of the script. If you only copy one sequence to your script using the “Copy Sequence to Script” button, the Maestro Control Center will set the script to be a looped version of the sequence and no additional code would be needed. More information about this can be found in the “Sequencer” section of the Maestro user’s guide.

-Brandon