There’s a lot going on when you bounce a ping-pong ball on a paddle. Tiny movements in the muscles of your hand and arm adjust to keep the ball centered, as you watch, feel and listen in order to react quickly and with enough pressure to not goof it up.
Arduino-tinkerer “tkuhn” created a machine that juggles a ping-pong ball on a platform by listening to the variations in sounds the ball makes when it strikes the wood. Like a human hand, it makes small adjustments to keep the ball center. Unlike us, it does it only using sound.
Every tap the ball makes on the platform is a little different, and picked up by four microphones surrounding the platform. Depending on where it lands, the ball’s sound determines where it’s located relative to the microphones, which tell the motors how to adjust the platform and keep the ball bouncing.
It’s easier to see how fine the adjustments are in a side view of one of tkuhn’s earliest iterations of the robot:
They made another ping pong bouncing bot that’s pretty slick, too. This one uses LED lights to determine how to keep the ball balanced:
There are plenty of good Arduino steppers available as open-source libraries, but their reaction times aren’t quite fast enough to juggle a ball. “The only problem was that the ones I know all accelerate linearly and take their sweet time whenever a change in direction occurs,” tkuhn writes on their blog. “Time is precious. The thing has to go up, stop, and almost instantly start going down again.”
As Hackaday notes, it’s reminiscent of a maze platform or Stewart platform, which balance balls but don’t have to bounce them. The added function of listening makes this one seem like it has a mind of its own.