Engineering Concepts

Moire Kinetic Sculpture

The project is about a Moire Kinetic Sculpture that involves coding, mechanisms, gears, servos, art, automation, circuits, color addition, math and drivetrain. The project constraints and checkpoints are listed in the picture to the left.

moire kinetic sculpture.pdf

Checklist to Success

  • Gearbox 1

In this gearbox, the parent gear is rotating at twice the speed of the child gear, this is archieved by putting a parent gear next to a child gear with twice the amount of teeth.

20190927_083635.mp4
20190927_083601.mp4
  • Gearbox 2

In this gearbox, the parent gear is rotating in the same direction as the child gear, this is done by attaching any two child gears next in sequence to the parent gear.

  • RGBLED

I used an Arduino Uno to program a simple RGBLED. It's a pattern of colors with a delay in each.

20191001_085845.mp4
  • Laser Cut Name

I used the laser cuter to cut out my name on a piece of cardboard.

  • Servo Motors and RGBLED

I used an Arduino Uno and a breadboard to program two servos and a RGBLED. They are all functioning off of one code.

  • Servo Motor

I used an Arduino Uno to program a servo motor. It rotates left and right.

20191003_091518.mp4
20191105_080916.mp4
  • (Halloween Special) Pumpkin

I used the laser engraver to create a pumpkin model. Then, I added lights to it using an Arduino Uno and a breadboard.

  • Servo Mount

I used Inkscape and the laser engraver to print out a perpendicular servo mount which I attached to my servo.

  • Moire sketch

I designed two moire patterns that have repetition at the same radial distance and repetiticon of form within each and together.

  • Moire Designs on CAD

I created the moire designs on Inkscape and used the clone feature to complete the pattern.

  • Moire designs on cardboard

I converted the designs on Inkscape into svg files which allowed me to use the laser engraver to print them out.

  • Gear Box

I made a gear box with two independently rotating disks on one shaft.

20191119_090341.mp4
  • Printed out parts

I printed out all of my parts using a laser engraver.

  • Solidworks File

I used the solidworks file to build my prototype. I used the process of reverse engineering to make my prototype into something that was similar to the original design.

IMG_1582.3gp
  • Functional Kinetic Sculpture Prototype

The purpose of creating a functional prototype is to understand how to build the final product and to see how the design works. The cardboard gears in the prototype are preventing the moirés from spinning, this will be resolved when we put in wooden gears. There are several crucial changes that need to be made on the Solidworks file; the holes must be the perfect and added screw placements. Two improvements that need to be made on the moiré are to make the lines thicker so it wouldn't fall apart and to add center holes. There should also be additional aesthetic features like kickstands, wooden caps on the ends of dowels and covers on the side.

  • Code for Arduino IDE

// Include the Servo library

#include <Servo.h>

#define COMMON_ANODE

// Declare the Servo pin

int servoPin = 3;

int servoPin2 = 5;

int redPin = 11;

int greenPin = 10;

int bluePin = 9;

// Create a servo object

Servo Servo1;

Servo Servo12;

void setup() {

// We need to attach the servo to the used pin number

Servo1.attach(servoPin);

Servo12.attach(servoPin2);

pinMode(redPin, OUTPUT);

pinMode(greenPin, OUTPUT);

pinMode(bluePin, OUTPUT);

}


void loop(){

setColor(0, 0, 255); // green

delay(500);

setColor(200, 0, 250); // green

delay(500);

setColor(0, 25, 25); // blue

delay(500);

// Make servo go to 0 degrees

Servo1.write(0);

delay(1000);

// Make servo go to 90 degrees

Servo1.write(90);

delay(1000);

// Make servo go to 180 degrees

Servo1.write(180);

delay(1000);

setColor(0, 0, 255); // green

delay(500);

setColor(200, 0, 250); // green

delay(500);

setColor(0, 25, 25); // blue

delay(500);

// Make servo go to 0 degrees

Servo12.write(0);

delay(1000);

// Make servo go to 90 degrees

Servo12.write(90);

delay(1000);

// Make servo go to 180 degrees

Servo12.write(180);

delay(1000);

setColor(0, 0, 255); // green

delay(500);

setColor(200, 0, 250); // green

delay(500);

setColor(0, 25, 25); // blue

delay(500);

}

void setColor(int red, int green, int blue)

{

#ifdef COMMON_ANODE

red = 255 - red;

green = 255 - green;

blue = 255 - blue;

#endif

analogWrite(redPin, red);

analogWrite(greenPin, green);

analogWrite(bluePin, blue);

}


This is the code for the Moire Sculpture which consists of two parts. The first part is to identify the ports for the LED and the servos. The second part is a loop for the servos to spin individually and a loop for the lights to cycle in different colors. The code is what allows for the Arduino to function in the sculpture.

Final: Install Servos

I installed my servos into my acrylic middle piece for my final kinetic sculpture.

Final: Moires

We added shaft holes in the center of the moire designs and printed it using glowforge by importing our SVG files onto the glowforge site.

Final: 8 lights RGB

I soldered my wires and used the Arduino to make my lights blink in RGB.

20200213_083215.mp4
20200219_085755.mp4

Final: Independent Moires

I used the Arduino to make my servos spin the moire shaft which spins the top moire while the second moire is spun by the other servo.

Final: Install Arduino

I installed my Arduino to my middle acrylic.

20200219_085755.mp4

Final: Servos-Patterns

I coded my Arduino to make my servos spin in three distinctive ways.

Final: Assemble Acrylic

All three acrylic pieces are assembled and installed perfectly.

Final: Random Lights

I coded my Arduino to make my lights blink in randomized colors instead of traditional light patterns.

20200227_084729.mp4

Code Final

// Include the Servo library

#include <Servo.h>

#define COMMON_ANODE

long randNumber;

long randNumber1;

long randNumber2;

// Declare the Servo pin

int servoPin = 2;

int servoPin2 = 4;

int redPin = 3;

int greenPin = 6;

int bluePin = 5;

// Create a servo object

Servo Servo1;

Servo Servo12;

void setup() {

Serial.begin(9600);

// We need to attach the servo to the used pin number

Servo1.attach(servoPin);

Servo12.attach(servoPin2);

pinMode(redPin, OUTPUT);

pinMode(greenPin, OUTPUT);

pinMode(bluePin, OUTPUT);

randomSeed(analogRead(0));

}


void loop(){

// Make servo go to 0 degrees

int red = random(0, 255);

Serial.println(randNumber);

delay(50);

int green = random(0, 255);

Serial.println(randNumber1);

delay(50);

int blue = random(0, 255);

Serial.println(randNumber2);

delay(50);

setColor(red, green, blue); // green

;

delay(100);

Servo1.write(0);

delay(1000);

// Make servo go to 180 degrees

Servo1.write(180);

delay(1000);


Serial.println(randNumber);

delay(50);

Serial.println(randNumber1);

delay(50);

Serial.println(randNumber2);

delay(50);

setColor(red, green, blue); // green

;

delay(100);

setColor(red, green, blue); // green

;

delay(100);

// Make servo go to 0 degrees

Servo12.write(0);

delay(1000);

// Make servo go to 180 degrees

Servo12.write(180);

delay(1000);

setColor(red, green, blue); // green

;

delay(100);

setColor(red, green, blue); // green

;

delay(100);

setColor(red, green, blue); // green

;

delay(100);

}

void setColor(int red, int green, int blue)

{

#ifdef COMMON_ANODE

red = 255 - red;

green = 255 - green;

blue = 255 - blue;

#endif

analogWrite(redPin, red);

analogWrite(greenPin, green);

analogWrite(bluePin, blue);

}

Final: Kinetic Sculpture Code

This is my final kinetic sculpture code, I am saving it here for record.