Pathways


Moire Kinetic Sculpture

Moire Kinetic Sculpture

For this project, we are going to have to create a kinetic sculpture with two moires and multiple RGB LEDs.

Constraints

To complete this project, we have to follow many constraints to challenge our skills, and to make the best end product possible. Above is our list of constraints.

Benchmarks

The benchmarks are here to keep us on track. Every class, we should be working on these to get closer to the end result.

IMG-3572.MOV

1st Benchmark: Parent Gear 2x Speed of the Child Gear.

To complete this benchmark, your parent gear has to be the smaller of the two gears, and the parent gear has to be twice as small.

Gear Box, Parent and Child same direction

To get the gears to go the same direction, I used a third gear to go in between the two to turn it in the right direction.

IMG_3610.MOV
IMG-3611.MOV

LED's go RGB

Using code I found on the internet, I was able make the LED go R, G, & B.

Get a servo to rotate right and left.

For this constraint, I had to find code off the internet to continuously move a servo motor from left to right. This video shows that servo moving.

IMG_3631.MOV

Laser Cut Name in Cardboard

Using the software Retina Engrave, I made an oval with my name in it, and laser cut it into a piece of cardboard.

Two Morie Sketches

The shown images above are of my two morie sketches. They share the same radial distance and they have repetition of form within each and together.

IMG-3864.MOV

Laser cut Pumpkin

I used an Aurdino to make an RGB LED go red, yellow, and orange inside of my laser cut pumpkin.

Two Servos Plus RGB

Using an Arduino and a breadboard, I made two servo motors and a RGB LED work at the same time.

IMG_3893.mov

Moire Design 1 & 2 Completed

Using the software Inkscape, I created and designed two Moires for my final kinetic sculpture.

Moire Design Created From Cardboard.

I used my design from Inkscape, and the software Retina engrave, I laser cut both of my Moires out of cardboard.

Servo Mount

Using Inkscape, I created a cardboard servo mount by measuring the servo and getting the correct dimensions for the CAD file.

Gear Box

With the help from a friend, I was able to use cardboard and wooden gears to create a functioning gearbox.

IMG-3996.mov

Prototype Cardboard Stack

With the files generously given to me by my teacher, I was able to laser cut all of the separate cardboard components needed to create my final cardboard prototype.

Final Cardboard Prototype

3D Solid Works File

The file I used as a blueprint to build my own prototype.

IMG_4140.MOV

Working Moire Prototype

The reason of having a functional prototype is so you know what you're doing and so you know everything is working how it should be so any changes can be made before creating your final product. The materials were preventing the prototype from working correctly, and this problem can be solved by using wood as the final material. The solidworks file needs a bigger hole for the baring, and mounting holes for the Arduino. My Moires need holes in the center for the wooden dowels.

Code for Moire Sculpture

The code that has been uploaded to my Arduino to make the LEDs and servos move at the same time.

Code For Moires

// 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);

}


Install Servos

Using my two servos, and servo screws, I attached my servos to my middle acrylic section of my moire.

Cut out first moire

Using the Glow Forge laser cutter, I was able to cut out my first final moire.

Cut out second Moire

Using the Glow Forge laser cutter, I was able to cut out my second final moire.

LED's go RGB

Using the skills I acquired from the beginning of this project, I was able to make the 8 RGB LEDs go red, green, and blue on my final moire sculpture.

Video.mov
IMG_4865.MOV

Moires are independently controlled by servos.

I coded my two servos so that they move independently from each other.

Installed Arduino

I installed the Arduino onto my middle acrylic with two small screws.

Assembled three layers

Using the three acrylic pieces given to me by my teacher, I was able to assemble the electronics on the middle acrylic, then add the front and back to complete the look.

Servos do three Patterns

I have coded my RGB LEDs so they will move in three different patterns. They start by both going to the right, then they move opposite directions, and finally, they both move to the left.

IMG_4867.MOV
IMG_4867.MOV

LEDs do 3 Patterns

I have coded my RGB LEDs to flash purple and white, blue and orange, and purple and light blue.

Final Kinetic Sculpture

After months of work, this sculpture is finished. It lites up using RGB LEDs, and moves with the help of servos and I coded everything to be unique to my sculpture.

IMG_4867.MOV

Final Code for Moire

void loop() {



setColor(0, 255, 100);

delay(1000);




myservo.write(180);

delay(2000);





setColor(0, 255, 0);

delay(1000);


setColor(0, 0, 100);

delay(1000);

setColor(0, 255, 0);

delay(100);


setColor(0, 0, 100);

delay(100);

setColor(0, 255, 0);

delay(1000);


setColor(0, 0, 100);

delay(1000);

setColor(0, 255, 0);

delay(100);


setColor(0, 0, 100);

delay(1000);

setColor(0, 255, 0);

delay(1000);


setColor(0, 0, 100);

delay(100);

setColor(0, 255, 0);

delay(100);


setColor(0, 0, 100);

delay(100);

setColor(0, 255, 0);

delay(1000);


setColor(0, 0, 100);

delay(1000);

setColor(0, 255, 0);

delay(100);


setColor(0, 0, 100);

delay(100);




myservo2.write(180);

delay(2000);


myservo.write(0);

delay(4000);





setColor(0, 0, 255);

delay(100);


setColor(255, 0, 0);

delay(1000);

setColor(0, 0, 255);

delay(1000);


setColor(255, 0, 0);

delay(100);

setColor(0, 0, 255);

delay(100);


setColor(255, 0, 0);

delay(100);

setColor(0, 0, 255);

delay(100);


setColor(255, 0, 0);

delay(1000);

setColor(0, 0, 255);

delay(1000);


setColor(255, 0, 0);

delay(100);

setColor(0, 0, 255);

delay(100);


setColor(255, 0, 0);

delay(100);

setColor(0, 0, 255);

delay(100);


setColor(255, 0, 0);

delay(100);

setColor(0, 0, 255);

delay(1000);


setColor(255, 0, 0);

delay(1000);

setColor(0, 0, 255);

delay(100);


setColor(255, 0, 0);

delay(100);

setColor(0, 0, 255);

delay(1000);


setColor(255, 0, 0);

delay(1000);





myservo.write(180);

delay(4000);


myservo2.write(70);

delay(2000);





setColor(255, 0, 0);

delay(1000);


setColor(0, 255, 0);

delay(1000);


setColor(100, 255, 50);

delay(100);

setColor(255, 0, 0);

delay(100);


setColor(0, 255, 0);

delay(100);


setColor(100, 255, 50);

delay(1000);


setColor(255, 0, 0);

delay(1000);


setColor(0, 255, 0);

delay(100);


setColor(100, 255, 50);

delay(100);

setColor(255, 0, 0);

delay(100);


setColor(0, 255, 0);

delay(100);


setColor(100, 255, 50);

delay(100);

setColor(255, 0, 0);

delay(1000);


setColor(0, 255, 0);

delay(1000);


setColor(100, 255, 50);

delay(100);

setColor(255, 0, 0);

delay(100);


setColor(0, 255, 0);

delay(100);


setColor(100, 255, 50);

delay(100);


setColor(255, 0, 0);

delay(100);


setColor(0, 255, 0);

delay(100);


setColor(100, 255, 50);

delay(100);

setColor(255, 0, 0);

delay(1000);


setColor(0, 255, 0);

delay(1000);


setColor(100, 255, 50);

delay(100);




myservo2.write(70);

delay(2000);


myservo.write(180); // set servo to mid-piont

delay(3000);





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

delay(100);


setColor(255, 0, 255);

delay(100);

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

delay(1000);


setColor(255, 0, 255);

delay(1000);



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

delay(100);


setColor(255, 0, 255);

delay(100);



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

delay(100);


setColor(255, 0, 255);

delay(100);

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

delay(100);


setColor(255, 0, 255);

delay(100);

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

delay(100);


setColor(255, 0, 255);

delay(100);



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

delay(1000);


setColor(255, 0, 255);

delay(1000);



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

delay(100);


setColor(255, 0, 255);

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);

}