Table of Contents

Gadgetry Class

Gadget One

Use Cases

j

Gadget Two

Inspiration

Code Organization

  1. Set up motors
    1. Get mirrors mounted on motors
    2. Attach 22-gauge? wires to motors and solder into board
    3. Get PWM output working
      1. (16-bit I think…probably little difference in motor speed between ticks, but it'd be an interesting test)
      2. Be sure to have it set at a high frequency to limit audible noise
  2. Read in joystick
    1. Have a global joystick variable that gets updated on an interrupt with a change in ADC
      1. Range should be 0 to 4096 w/ 2048 being center on each x and y
    2. Calibrate
      1. Measure angles of each mirror, try to match them as close as possible
      2. Do a linear mapping of motor PWM to RPM for each motor
      3. Should be able to generate accurate images that correspond to Processing now
  3. Create Processing app to demo audio too and release interactive easily-usable version

Gadget Two Construction Notes

Lissajous Generator

where n is the number of engaged wheels: wheel k has its center fixed on a point of the circumference of wheel (k-1). On each wheel, a_k is related to the radius, n_k to the rotation speed, and \theta_k is an initial phase angle. Farris demonstrated that the z(t) curve has g-fold rotational symmetry if all the pairwise differences |n_k-n_j| have g as their greatest common divisor.

So, the radius here is the degree offset of the mirror (how wide of a circle it makes), and Nk is indeed the rotation speed. So, we want to have mirror angles as similar as possible to get good shapes.

https://www.dropbox.com/s/dxcw98u3o90fx0t/spirolab_application.windows32.zip?dl=0

Processing Spirograph Script

Features

To Do's (in approximate order)