I was fascinated with Quackmaster Dan's "Four Motor Laser Spirograph" so I decided to build one. The pictures represent about a year and a half of procrastination, and late nights, all in all it probably took me about 80hr. to build as I had to go through a couple revisions of the electrical system, and it was totally worth it.

If you have any questions about components or fabrication, leave them in the comments and I will gladly answer.

Update 2013-10-12:

I am currently working on an updated version of this and plan to have it done by late January 2014 (I will write a full ible for it). In the process of planning that build I found my old arduino code that ran this spirograph, it is very basic, but I might be useful to those working on similar projects:

#include

AF_DCMotor motor1(1, MOTOR12_64KHZ);  // create motor #1, 64KHz pwm
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);

int PotPin1 = 5;                      // Analog Input from Potentiometers
int PotPin2 = 4;
int PotPin3 = 3;
int PotPin4 = 2;

int Rate1 = 0;
int Rate2 = 0;
int Rate3 = 0;
int Rate4 = 0;

void setup() {
Serial.begin(9600);               // set up Serial communication at 9600 bps
Serial.println("Spirograph!");

motor1.run(FORWARD);              // Set all fans to run forward. They will not run backwards
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);

}

void loop() {

//Read and Map AI to Rate#

delay(15);
if( Rate1 != 0 ) {
Rate1 = map(Rate1, 1, 1023, 20, 255);
}

delay(15);
if( Rate2 != 0 ) {
Rate2 = map(Rate2, 0, 1023, 20, 255);
}

delay(15);
if( Rate3 != 0 ) {
Rate3 = map(Rate3, 0, 1023, 60, 255);
}

delay(15);
if( Rate4 != 0 ) {
Rate4 = map(Rate4, 0, 1023, 60, 255);
}

output(Rate1, Rate2, Rate3, Rate4);

if( Rate1 == 255 && Rate2 == 255 && Rate3 == 255 && Rate4 == 255){

for(int a=0; a < 255; a+=10){
output(180, 100+a, 250, 0);
delay(500);
}
output(100,0,0
for(int b=0; b < 155; b+=10){
output(180, 0, 0, 100+b);
delay(500);
}
}

}

void output(int m1, int m2, int m3, int m4) {

motor1.setSpeed(m1);
motor2.setSpeed(m2);
motor3.setSpeed(m3);
motor4.setSpeed(m4);

Serial.print("Motor Speeds\t");
Serial.print("\tM#1:");
Serial.print(m1);
Serial.print("\tM#2:");
Serial.print(m2);
Serial.print("\tM#3:");
Serial.print(m3);
Serial.print("\tM#4:");
Serial.println(m4);

}
Very nicely done! and awesome enclosure... where did you get it?
An aerospace machinist I used to work with gave it to me. Based on the tags and what we dug out from inside of it we were pretty sure it was a parachute sequencer for a launch vehicle.
The reason I didn't post an instructable is because the basic theory of operation is no different that the other spirograph instructables. The only difference with mine is that I map the values from the potentiometers to the motor speeds using an arduino microcontroller. <br><br>As for a list of components here you go:<br><br>4x 1k Potentiometers <br>1x Arduino <br>1x Motor Shield <br>4x Motors (I chose 12V DC Fan motors because they were cheap and already had mounting holes.<br>1x laser (as bright as you want)<br>4x Round mirrors (Check hobby and craft stores)<br><br>
Hi, i&acute;m spanish. congratulations. Where I can find any documentation of the project? I want to build one like this.
do you have a list of components i an wanting this to take to my next festival also can i make this portable?
And ... Where is the instructable?<br>It look great, but we miss the instructions to replicate it!
Do you have pictures or a video of it in action, the images it creates? I'd love to see it. your set up looks great.

5,926views

19favorites