Reaper Puppet Master Halloween Prop

I created a Halloween prop called Reaper Puppet Master. It uses 7 servos and 1 linear actuator. Servos are controlled with Mini Maestro 24. Here is a video of prop: https://youtu.be/xcl0qEFomu8

If anyone is interested, let me know and I can add some more detail.

Happy Haunting!

I need help with two small programming issues:

  1. I need to delay at startup (maybe 10 seconds) before the script starts. I know there is a checkbox on the script screen to “run script on startup” but I would like to delay running script for a bit if possible. I only need the delay at startup.
  2. I would like to add a second “scene” to my prop. Each time the prop is triggered, it would play one of the scenes. The next time it is triggered, it would play the OTHER scene. I would need to have some sort of flag or variable in the script the I can turn on/off to toggle between the two scripts. What would be the easiest way to do that?

Here is my current script. I am monitoring my trigger on channel 20.

# Main Positions Working V9
begin 20 get_position 100 less_than if
  1000 6024 0 0 0 0 0 
  6011 6620 0 0 0 0 
  6080 6176 0 0 0 0 
  5984 6081 0 0 0 frame_0..19_21..23 # Sit Rest
  699 6304 5600 frame_2_7 # I
  347 5564 frame_2 # Eyes OFF
  194 6304 6272 frame_2_7 # am
  53 5564 frame_2 # Eyes OFF
  139 6304 6944 frame_2_7 # the
  38 5564 frame_2 # Eyes OFF
  159 6304 6272 frame_2_7 # rea
  84 5564 frame_2 # Eyes OFF
  319 6304 5600 frame_2_7 # per
  312 5564 frame_2 # Eyes OFF
  130 6304 6272 frame_2_7 # pup
  77 5564 frame_2 # Eyes OFF
  156 6304 6944 frame_2_7 # pet
  128 5564 frame_2 # Eyes OFF
  239 6304 6272 frame_2_7 # mas
  28 5564 frame_2 # Eyes OFF
  537 6304 5600 frame_2_7 # ter
  954 5564 frame_2 # Eyes OFF
  676 6304 6272 frame_2_7 # dance
  330 5564 0 frame_2_7 # Eyes OFF
  187 6304 6944 frame_2_7 # lit
  85 5564 frame_2 # Eyes OFF
  136 6304 6272 frame_2_7 # tle
  85 5564 frame_2 # Eyes OFF
  135 6304 5600 frame_2_7 # pup2
  68 5564 frame_2 # Eyes OFF
  372 6304 6272 frame_2_7 # pet2
  496 5564 frame_2 # Eyes OFF
  2152 6304 6944 frame_2_7 # dance2
  1000 6061 9024 5905 frame_6_7_13 # Start Toe Tap Up
  1000 3200 6176 frame_7_13 # Tap Down
  1000 9024 5905 frame_7_13 # Tap Up
  1000 3200 6176 frame_7_13 # Tap Down
  1000 9024 5905 frame_7_13 # Tap Up
  1000 4160 6176 frame_7_13 # Tap Down
  5500 4588 6272 5631 6121 6708 6140 frame_6_7_12_13_18_19 # Start Crane Kick - Stand
  1000 6912 8322 frame_0_7 # Turn Right
  3500 4416 0 4183 7822 7060 frame_6_7_12_18_19 # Arms UP
  500 6512 7563 frame_0_7 # Arms UP Slow Turn Left 1
  500 6112 6825 frame_0_7 # Arms UP Slow Turn Left 2
  500 5712 5964 frame_0_7 # Arms UP Slow Turn Left 3
  500 5312 5062 frame_0_7 # Arms UP Slow Turn Left 4
  1000 4928 4160 frame_0_7 # Arms UP Slow Turn Left 5
  500 5328 5246 frame_0_7 # Arms UP Slow Turn Right 1
  500 5728 5820 frame_0_7 # Arms UP Slow Turn Right 2
  500 6128 6477 frame_0_7 # Arms UP Slow Turn Right 3
  500 6528 7522 frame_0_7 # Arms UP Slow Turn Right 4
  1000 6912 8384 frame_0_7 # Arms UP Slow Turn Right 5
  500 6024 4588 6272 5631 6708 6140 frame_0_6_7_12_18_19 # Start Moon Walk - Stand
  1300 4928 4612 4160 6062 5827 6492 
  6003 frame_0_6_7_12_13_18_19 # Tip Toe Right
  1300 0 5452 6258 5925 6375 frame_7_12_13_18_19 # Tip Toe Left
  1450 6912 8363 6062 5729 6492 6003 frame_0_7_12_13_18_19 # Tip Toe Right
  1300 0 5452 6258 5925 6375 frame_7_12_13_18_19 # Tip Toe Left
  1300 4928 4160 6062 5788 6492 6003 frame_0_7_12_13_18_19 # Tip Toe Right
  1300 0 5452 6258 5925 6375 frame_7_12_13_18_19 # Tip Toe Left
  1450 6912 8384 6062 5827 6492 6003 frame_0_7_12_13_18_19 # Tip Toe Right Rotate
  1300 0 5452 6258 5925 6414 frame_7_12_13_18_19 # Tip Toe Left
  1300 4928 4160 6060 6492 frame_0_7_12_18 # Tip Toe Right
  1300 0 5452 5925 6453 frame_7_12_18_19 # Tip Toe Left
  300 6024 4588 6272 5631 6121 6708 
  6140 frame_0_6_7_12_13_18_19 # Start Jump Fly - Stand
  1800 6000 6159 0 6003 6140 frame_2_6_7_12_18 # Squat
  1100 5532 5431 5400 5533 6720 frame_6_7_12_13_18 # Start Jump Up
  1100 4932 7379 4768 5631 7256 7099 frame_6_7_12_13_18_19 # Start Jump Up
  1300 4352 6313 4476 4692 7556 7119 frame_6_7_12_13_18_19 # Jump UP
  1300 3778 5205 4183 4594 7862 7784 frame_6_7_12_13_18_19 # Jump UP
  2500 5396 6272 5964 6121 6140 6140 frame_6_7_12_13_18_19 # Jump Down
  500 4588 0 5631 6708 frame_6_7_12_18 # Start Thriller - Stand
  1200 6912 8322 4848 6179 7256 6062 frame_0_7_12_13_18_19 # Arms Up Turn Right Hi
  1200 4928 4612 4324 6277 5984 frame_0_6_7_13_19 # Arms Up Turn Left Hi
  1200 6912 5448 8219 5316 6179 6764 
  6062 frame_0_6_7_12_13_18_19 # Arms Up Turn Right Lo
  1200 4928 4262 6277 5984 frame_0_7_13_19 # Arms Up Turn Left Lo
  1200 6912 4588 8178 4848 6179 7256 
  6062 frame_0_6_7_12_13_18_19 # Arms Up Turn Right Hi
  1200 4928 4612 4303 6277 5984 frame_0_6_7_13_19 # Arms Up Turn Left Hi
  1200 6912 5448 8240 5316 6179 6764 
  6062 frame_0_6_7_12_13_18_19 # Arms Up Turn Right Lo
  1200 4928 4262 6277 5984 frame_0_7_13_19 # Arms Up Turn Left Lo
  1200 6912 4588 8240 4848 6179 7256 
  6062 frame_0_6_7_12_13_18_19 # Arms Up Turn Right Hi
  1200 4928 4612 4262 6277 5984 frame_0_6_7_13_19 # Arms Up Turn Left Hi
  500 delay # Start Dead Fall
  5100 8000 6272 7256 6336 6080 6140 frame_6_7_12_13_18_19 # Fall
  4999 6304 4588 8384 4600 6121 6708 
  6923 frame_2_6_7_12_13_18_19 # Right Up Turn L
  1 delay # Start Running Man
  1650 6005 5886 5377 7197 6100 frame_7_12_13_18_19 # Left Up Turn L
  1650 6655 4160 4600 6121 6708 6923 frame_2_7_12_13_18_19 # Right Up Turn L
  1650 6304 6005 5886 5377 7197 6100 frame_2_7_12_13_18_19 # Left Up Turn L
  1650 6024 6248 4600 6121 6708 6923 frame_0_7_12_13_18_19 # Right Up Center
  1650 7010 5886 5377 7197 6100 frame_7_12_13_18_19 # Left Up Center
  1650 6248 4600 6121 6708 6923 frame_7_12_13_18_19 # Right Up Center
  1650 7010 5886 5377 7197 6100 frame_7_12_13_18_19 # Left Up Center
  884 6248 5631 6121 6708 6140 frame_7_12_13_18_19 # Stand
  3000 3876 7051 3968 4555 7588 7099 frame_6_7_12_13_18_19 # Falling Scream 1
  1200 5202 6248 4261 4985 7040 6727 frame_6_7_12_13_18_19 # Falling Scream 2
  1200 5938 5144 4770 5279 6649 6316 frame_6_7_12_13_18_19 # Falling Scream 3
  3000 6011 6620 6080 6176 5984 6081 frame_6_7_12_13_18_19 # Sit Rest
  3000 0 0 0 0 0 0 
  0 0 frame_0_2_6_7_12_13_18_19 # Sit Rest Off
endif
repeat

sub frame_0..19_21..23
  23 servo
  22 servo
  21 servo
  19 servo
  18 servo
  17 servo
  16 servo
  15 servo
  14 servo
  13 servo
  12 servo
  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_2_7
  7 servo
  2 servo
  delay
  return

sub frame_2
  2 servo
  delay
  return

sub frame_6_7_13
  13 servo
  7 servo
  6 servo
  delay
  return

sub frame_7_13
  13 servo
  7 servo
  delay
  return

sub frame_6_7_12_13_18_19
  19 servo
  18 servo
  13 servo
  12 servo
  7 servo
  6 servo
  delay
  return

sub frame_0_7
  7 servo
  0 servo
  delay
  return

sub frame_6_7_12_18_19
  19 servo
  18 servo
  12 servo
  7 servo
  6 servo
  delay
  return

sub frame_0_6_7_12_18_19
  19 servo
  18 servo
  12 servo
  7 servo
  6 servo
  0 servo
  delay
  return

sub frame_0_6_7_12_13_18_19
  19 servo
  18 servo
  13 servo
  12 servo
  7 servo
  6 servo
  0 servo
  delay
  return

sub frame_7_12_13_18_19
  19 servo
  18 servo
  13 servo
  12 servo
  7 servo
  delay
  return

sub frame_0_7_12_13_18_19
  19 servo
  18 servo
  13 servo
  12 servo
  7 servo
  0 servo
  delay
  return

sub frame_0_7_12_18
  18 servo
  12 servo
  7 servo
  0 servo
  delay
  return

sub frame_7_12_18_19
  19 servo
  18 servo
  12 servo
  7 servo
  delay
  return

sub frame_2_6_7_12_18
  18 servo
  12 servo
  7 servo
  6 servo
  2 servo
  delay
  return

sub frame_6_7_12_13_18
  18 servo
  13 servo
  12 servo
  7 servo
  6 servo
  delay
  return

sub frame_6_7_12_18
  18 servo
  12 servo
  7 servo
  6 servo
  delay
  return

sub frame_0_6_7_13_19
  19 servo
  13 servo
  7 servo
  6 servo
  0 servo
  delay
  return

sub frame_0_7_13_19
  19 servo
  13 servo
  7 servo
  0 servo
  delay
  return

sub frame_2_6_7_12_13_18_19
  19 servo
  18 servo
  13 servo
  12 servo
  7 servo
  6 servo
  2 servo
  delay
  return

sub frame_2_7_12_13_18_19
  19 servo
  18 servo
  13 servo
  12 servo
  7 servo
  2 servo
  delay
  return

sub frame_0_2_6_7_12_13_18_19
  19 servo
  18 servo
  13 servo
  12 servo
  7 servo
  6 servo
  2 servo
  0 servo
  delay
  return

Hello.

Your prop looks great (though a demo with the lights off would have been even better)!

You can use the delay command for delays of approximately 32 seconds or less. For example:

10000 delay # this will delay for 10 seconds

To delay upon startup, you should insert that line of code at the start of your script, before begin.

As for adding a second scene like that, you can add some blocking code that waits in a loop until channel 20 is low again. You can add the following subroutine at the end of your main loop (i.e. after repeat):

sub wait_for_trigger
   begin 20 get_position 100 greater_than while repeat
   return

And then replace begin 20 get_position 100 less_than if with a call to that subroutine, and also make a call to that subroutine at the end of scene 1. So, something like this should work:

10000 delay 
begin
   wait_for_trigger
   play_scene_1
   wait_for_trigger
   play_scene_2
repeat

The subroutines play_scene_1 and play_scene_2 would contain all of the servo movements you want to achieve in those respective scenes. You do not have to make them subroutines, but it is easier to see how to implement wait_for_trigger when written out like above.

-Jon

Wow, very cool! The voice is awesome… did you mod your own voice or get that from somewhere?

Nick.
Follow ROVer @ ROV-er.com

Thanks Nick. Considering I knew nothing about servos 3 months ago, I was pretty happy with how it turned out. The maestro controller is pretty slick and user friendly.

Yes, the reaper voice is mine. I recorded it on a Tascam 8 track recorder that I have, added some echo and then slowed the pitch down using Audacity.

Thanks for the reply.

Greg

Jon,

This is perfect…just what I needed. Thank you.

I did try to record my prop in a dark room but with the strobe going on/off my camera kept jumping in and out of focus! Glad you liked the prop.

greg

Jon, Using the Maestro Control Center, is 0 acceleration and 0 speed the fastest the servos will go? Or is there a way to get more speed out of them?

Thanks

The acceleration and speed channel settings limit how fast the speed and position of a servo change, respectively. Configuring a channel setting value of 0 removes the restriction, which will allow the servos to be commanded as quickly as the Maestro can send its signals.

To get more speed from a servo, you will have to supply a higher voltage to it (how fast a servo can rotate varies directly proportionally to the voltage supplied). If you plan on doing that, be sure to check the maximum voltage your servos can handle, first.

-Jon