Navigation

  1. Home
  2. Projects
  3. Blog
  4. Music
  5. Photos
  6. Contact
  1. Internal

Random Speed Controller for "Looping Louie"

This is the project homepage for some modifications to a children's game called "Looping Louie".

Last updated: $Date: 2013/01/05 20:48:36 $.

Updates

Jan 5th, 2013

HTML changes related to my home-grown "CMS."

Introduction

"Looping Louie" is a children's game made by Milton Bradley, a Hasbro company, which has become increasingly popular amongst young adults. The goal of the game is to prevent a rotating arm from touching the players' game chips by catapulting it in the air (the links section brings you to a video which will make things clearer). Because the speed of the rotating arm is fixed, an experienced player can have a significant advantage over someone who is not familiar with the game. Also, the game is designed for four players.

This page describes how the game was enhanced with a "random speed controller" that eliminates any advantages experienced players may have. Also, a modification for eight players is presented which has been created by a friend of the author. For the impatient, there's a set of pictures below.

Hardware

The hardware part of the project is fairly simple: A microcontroller (MCU) does pulse-width modulation (PWM) through an n-Channel FET on a 9V DC supply voltage. Because the MCU runs at a maximum of 5V DC, a voltage regulator is required. I added a couple of buttons to reset and provide input to the MCU. One or two LEDs give some feedback on what the MCU is doing. A few resistors and capacitors here and there and that's it.

I chose the ATtiny 25/45/85 family of microcontrollers for three reasons: First, it comes in a DIL-8 package, so it's small and easy to solder. Second, it requires almost no external parts, especially no oscillator as it has one built in. And third, it has a hardware timer to generate the PWM pulses which simplifies the software design.

To make everything look nice, and in order to make things a bit more robust, I bought a small plastic housing. It contains the board and holds the cables, buttons and one LED. The rest of the hardware, especially the second LED and the programming header, are not accessible unless the housing is opened.

There is a link to the schematics in the downloads section on this page.

Software

The software running on the MCU controls the timer used for the PWM and thus the speed of the game. It offers four fixed speed modes as well as a random mode. The mode button allows the user to switch through the modes, i.e. pressing the mode button switches the software to the next mode.

In the fixed speed modes, the PWM timer is set to a pre-defined value and never changed, unless the user presses the mode button to select the next mode.

In random mode, the PWM width is periodically updated. There are several ways of updating the PWM speed: No change, add, subtract, multiply, divide or set the current value. This causes the speed of the game to vary. Because the goal is to achieve non-deterministic behavior, a second timer is used to control the time between updating the PWM speed. The algorithm goes like this:

  1. The user turns on random mode.
  2. Set the current PWM speed to a fixed value, somewhere near medium fast.
  3. Initialize the current random mode iteration.
    • Randomly pick an "update mode".
    • Randomly pick a change value, i.e. how much the speed should be increased or decreased when it is changed.
    • Program the second timer with a random delay.
    • Decide for how many timer ticks the chosen "update mode" should be kept and store the value in a counter variable.
  4. Wait for timer tick.
  5. Execute update.
    • Perform an update of the PWM speed, depending on the "update mode" and the change value.
    • Decrement the counter variable by 1.
    • If counter variable has reached zero, go to 3. Otherwise, go to 4.

Because division is diffictult on a MCU, both multiplication as well as division are implemented by bit shifting, so there is always a factor of 2. For instance, if the current value is 27 (0x1b), the next value will be 54 (0x36) in multiply mode. In division mode, the next value would be 13 (0xd).

The software can be downloaded in both source and binary form. See the downloads section for links.

Eight-player Extension

The extension for eight players is fairly straight forward: Small adapter parts have been manufactured that allow an extra four arms to be connected to the base station. Because the parts have been designed by a friend of mine, I cannot say much about how it's done. All I know is that they are made of acrylic glass and that they have been machine manufactured.

Pictures

Here's a set of pictures that show what the finished project looks like:

Board Internal Modifications Cable (internal) Cable (external) Finished Product

Download

Parts List

In case you want to build a controller on your own, here's a list of parts you will need. Since I'm located in Germany, I'm listing the German sources, but I'm sure the parts can be obtained in other parts of the world, too.

General Supplies you probably have at home

Mechanical Parts for the outside

Connections

Electronics

Other parts

Links

Here are a few links related to this project. Apparently, this game isn't very popular outside the German speaking part of the world.

Contact

Contact the author Philip Schulz by Email.

Share