Our project is the Moire Kinetic Sculpture.
These are the restrictions on what our final project can and will look like.
These are the checkpoints we have to complete in order to make sure our final project is done correctly and professionally.
I used the laser cutter to cut my name onto the cardboard.
In this video, I made the parent gear and the child gear move in the same direction. The parent gear is the smallest one and the child gear is the medium one.
In this video, I made the parent gear which is the smallest gear go twice as fast as the child gear which is the big one.
I used Arduino to code the the LED. I made it show the colors red, blue, & green.
I used Arduino to make the servo go to the left then to the right repeatedly.
My first moire sketch is made with 2 1/8 inch thick circles that are both 2 inches in diameter.
My second moire sketch is made with smaller circles that are also 1/8 of an inch wide and 1/2 inch in diameter.
I used 2 servos and a LED on the same Arduino to make both function.
I lasercut cardboard in the shape of a pumpkin. Then used Arduino to code the 2 LED lights to show the colors orange, yellow, & red.
In this benchmark I had to create my first Moire. This task was the most challenging one by far.
This is my Moire in real life on cardboard. By cutting this out I realized that I'm going to have to change my design and make the circles thicker for my final project.
This is my 2nd Moire sketch on Inkscape. It corresponds with my 1st sketch.
This is my 2nd Moire sketch on cardboard. This one was easier than the previous one because we learned the mechanics of Inkscape.
We had to make a Servo Mount then lasercut it. It was way simpler than I thought.
For this benchmark I had to use the template and cut out every piece needed for the project prototype.
This benchmark was a bit of a struggle but from the help of my classmates and Ms. White, I completed it after several trials.
In order to create our cardboard prototype we used a solid works file to reverse engineer. In my opinion this process was one of most challenging of the whole project. It took a lot of thinking to basically make your sculpture just by looking at one that was virtually made. By collaborating with my peers the process became easier and I was able to help others as well.
int redPin = 12;
int greenPin = 11;
int bluePin = 10;
//uncomment this line if using a Common Anode LED
#define COMMON_ANODE
#include <Servo.h>
Servo right;
Servo left;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
setColor(255, 20, 147); // deep pink
delay(1000);
setColor(0, 0, 128); // navy
delay(1000);
setColor(0, 100, 0); // dark green
delay(1000);
right.attach(9);
right.write(180);
delay(1000);
right.write(0);
delay(1000);
left.attach(13);
left.write(180);
delay(1000);
left.write(0);
delay(1000);
}
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 prototype of my kinetic sculpture. This code allows both servos to rotate independently and the lights to flash pink, blue, & green . My other servo doesn't work because of wiring but I plan to complete it in the final sculpture.
The purpose of a functional prototype is to have all your code and mechanics working so when it is time for the end product it'll be simpler to construct. Since we made our entire prototype out of cardboard when the gears started rotating independently the rotation of the moire wasn't smooth. But this will be resolved when we make the final product using the actual materials. On my moires I need to improve the size and width of my design so when the cut is finished my design won't be ruined. Something that can be changed about the Solid Works file is the size of the hole for the baron. That was difficult to fit in its given space.
In this benchmark we used our acrylic middle piece & screwed our servo into the assigned hole. I faced an obstacle during this because by being too rough with the material I broke my first middle piece. But after earning my second piece I learned my lesson.
This my first final moire product that will be used in my final sculpture. We had the luxury of using the new Glowforge lasercutter for a quicker & more accessible cut.
This is my second final moire that will be used in my final kinetic sculpture. Personally I like this design better than my previous because the larger amount of circles.
This benchmark included installing LEDs, wiring the LEDs, & finally coding the LEDs to light in the RGB color formation.
In this benchmark we had to create a gear shaft and program our servos so that our moires rotated independently and go in different directions.
In this benchmark we had simply screw our Arduino onto the middle acrylic piece so in the future it doesn't move.
For this benchmark I had to use glue and assemble my outside layers.
For this benchmark I had to make my lights do different patterns which include a fade. Also I used to the servo code to change the rotation and speed of the servos.
This is the final code I used for my finished sculpture.
#include <Servo.h>
Servo myservo1;
Servo myservo2;
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
//uncomment this line if using a Common Anode LED
#define COMMON_ANODE
void loop()
{
setColor(0, 0, 0); // red
delay(100);
setColor(20, 0, 0); // green
delay(100);
setColor(40, 0, 0); // blue
delay(100);
setColor(60, 0, 0); // blue
delay(100);
setColor(80, 0, 0); // blue
delay(100);
setColor(100, 0, 0); // blue
delay(100);
setColor(120, 0, 0); // blue
delay(100);
setColor(140, 0, 0); // blue
delay(100);
setColor(160, 0, 0); // blue
delay(100);
setColor(180, 0, 0); // blue
delay(100);
setColor(200, 0, 0); // blue
delay(100);
setColor(220, 0, 0); // blue
delay(100);
setColor(240, 0, 0); // blue
delay(100);
setColor(250, 0, 0); // blue
delay(100);
setColor(255, 0, 0); // red
delay(1000);
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
myservo1.write(180); // set servo to mid-point}
delay(500);
myservo1.write(180); // set servo to mid-point}
delay(500);
myservo2.write(180); // set servo to mid-point}
delay(500);
myservo2.write(180); // set servo to mid-point}
delay(500);
}
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
myservo1.attach(6);
myservo2.attach(5);
myservo1.write(180); // set servo to mid-point
myservo1.write(100);
delay(3000);
myservo2.write(40); // set servo to mid-point
myservo1.write(100);
myservo1.write(80);
delay(10000);
myservo1.write(0);
myservo2.write(90);
myservo1.write(90);
myservo2.write(90);
delay(5000);
myservo1.write(100);
myservo2.write(80);
delay(10000);
}
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);
}