For this project, we are going to have to create a kinetic sculpture with two moires and multiple RGB LEDs.
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.
The benchmarks are here to keep us on track. Every class, we should be working on these to get closer to the end result.
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.
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.
Using code I found on the internet, I was able make the LED go R, G, & B.
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.
Using the software Retina Engrave, I made an oval with my name in it, and laser cut it into a piece of cardboard.
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.
I used an Aurdino to make an RGB LED go red, yellow, and orange inside of my laser cut pumpkin.
Using an Arduino and a breadboard, I made two servo motors and a RGB LED work at the same time.
Using the software Inkscape, I created and designed two Moires for my final kinetic sculpture.
I used my design from Inkscape, and the software Retina engrave, I laser cut both of my Moires out of cardboard.
Using Inkscape, I created a cardboard servo mount by measuring the servo and getting the correct dimensions for the CAD file.
With the help from a friend, I was able to use cardboard and wooden gears to create a functioning gearbox.
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.
The file I used as a blueprint to build my own 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.
The code that has been uploaded to my Arduino to make the LEDs and servos move at the same time.
// 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);
}
Using my two servos, and servo screws, I attached my servos to my middle acrylic section of my moire.
Using the Glow Forge laser cutter, I was able to cut out my first final moire.
Using the Glow Forge laser cutter, I was able to cut out my second final moire.
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.
I coded my two servos so that they move independently from each other.
I installed the Arduino onto my middle acrylic with two small screws.
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.
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.
I have coded my RGB LEDs to flash purple and white, blue and orange, and purple and light blue.
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.
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);
}