Ms. White gave us a packet, containing a list of constraints and a basic description of what we would be doing over the course of this project. The first page is a description of what the project will contain, we will be creating a kinetic sculpture with two independently rotating moires. The moires will have light shining though that we will code using an RBG LED and the Arduino IDE software. The second page is a list of constraints or limitations. The last page is a sheet of benchmarks we will have to complete throughout the project, whenever we complete a task Ms. White gives us a stamp.
This is the first bench mark that I completed for this project. I was given four differently sized gears and had to make them work so that the parent gear would be going at a speed two times of the child gear. The smaller gear is the parent gear, I know this because I drew a line on the cardboard to mark the starting point and the smaller gear went in a circle twice before the bigger gear made one full turn.
For this benchmark, I used our laser cutter to cut my name into cardboard. I used the Retina Engrave software to make this simple design of my name into an oval.
For this assignment, I had to use the Arduino IDE software to code an LED, or light emitting diode, to shine light in the order, red, green, blue.
For this bench mark, I utilized the Arduino IDE software to code a servo motor so that it will rotate from left to right.
For this benchmark, I made a pumpkin. I used Inkscape to design the pumpkin and print it with the laser cutter in cardboard. Then, I used Arduino to code an LED to go red, yellow, orange.
For this benchmark, I had to code two servo motors and an RGB LED to work on one arudino.
For this benchmark, I had to sketch two moire designs on paper which I will later design on the Inkscape software. The designs had to have repetition of a shape. The shape I showed repetition of was a triangle.
For this benchmark, I had to use cardboard to create a gear box with two independently rotating disks on one shaft.
For this benchmark, I designed my two moire sketches in CAD or computer aided drafting. I used Inkscape to design my moires.
For this benchmark, I had to design a servo mount in Inkscape. The I had to laser cut it.
For this benchmark, I laser cut my moire designs. I laser cut the designs into 3-ply cardboard.
For this benchmark, I was provided with files of pieces I would need for my prototype pieces. I had to take time out of class to come in the engineering lab to get all of my pieces laser cut into cardboard. I do not have a picture of the pieces laid out but, this is the assembled product.
This is the final kinetic moire sculpture assembled in CAD. I used this file to reverse engineer my cardboard prototype.
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
//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(8);
right.write(180);
delay(1000);
right.write(0);
delay(1000);
left.attach(7);
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 my code that I used in my prototype, and will use in my final product. The code is a big part in this project because it determines the functionality of the project. If there is a mistake in the code, it could mess up the whole project.
For this benchmark, I had to use all of my cardboard pieces to create a functional prototype of my moire sketch. I had to have two of my led lights coded in a sequence other then red green blue or red orange yellow. Also, I had to have two servos coded so that one would rotate one way and one would rotate the other so that the moires rotated independently
What is the purpose of a functional prototype?
The purpose of a functional prototype is to give us a good idea of the actual final product before using the actual materials which may cost more, or being able to identify changes that may need to be made for the final product.
Is there anything preventing your cardboard from functioning that is caused by the material itself that will be resolved by using final materials?
In my prototype, the material I used, cardboard is failing to present the full functionality of my project. Because I used cardboard everything, including gears, the rotation is not fully cooperating.
Identify and discuss at least one improvement to the solid works file that needs to be made so that your prototype will be functional when it is cut out using acrylic and wood.
In the solid works file, it will be easier to assemble the final product of the middle hole is slightly bigger because the barren was slightly difficult to fit into the hole.
Identify at least one change to your moire files that needs to be made prior to cutting out your moire files in wood.
Before cutting out my moire files in wood, I need to make my smaller triangles slightly wider, to assure durability. Also, I have to add a whole in the center of my moire, that are the size of the dowel so that I do not have to physically install the hole.
Identify and recommend at least one more change to the solid works file that will improve the overall aesthetic of the final product. Be very specific.
For this benchmark, I had to screw my two servos into the middle acrylic of my final kinetic sculpture.
For this benchmark, I had to make final touches to my moire file in Inkscape, such as making pieces thicker for structural integrity and adding a hole perfectly in the middle with a diameter of .32. After my file was perfect, I laser cut my moires with the glow-forge laser cutter. Then, I spray painted the moires black.
For this benchmark, I had to install all of my LEDs in my project, then I had to upload a base code to them so that they would blink the colors red, green, and blue.
For this benchmark, I had to drill two holes into my middle acrylic and screw my arduino into it.
For this benchmark, I had to create a disk shaft so that both of my servos would independently control a moire.
For this benchmark, I had to code my servo so that the servos rotated in three different distinct patterns.
For this benchmark, I had to code all 8 of my LEDs so that they went in three distinct light patterns.
For this benchmark, I had to assemble my final kinetic sculpture using three acrylic pieces and dowels to hold them together.
#include <Servo.h>
Servo myservo;
Servo myservo2;
int redPin = 11;
int greenPin = 10;
int bluePin = 3;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
myservo.attach(4);
myservo2.attach(5);
}
void loop()
{
setColor(0, 0, 0); //blue
delay(0);
setColor(20, 0, 0); //blue
delay(400);
setColor(40, 0, 0); //blue
delay(400);
setColor(60, 0, 0); //blue
delay(400);
setColor(80, 0, 0); //blue
delay(400);
setColor(100, 0, 0); //blue
delay(400);
setColor(120, 0, 0); //blue
delay(650);
setColor(140, 0, 0); //blue
delay(700);
setColor(160, 0, 0); //blue
delay(850);
setColor(180, 0, 0); //blue
delay(4000);
myservo.write(180);
myservo.write(100);
delay(5000);
myservo2.write(0);
myservo.write(0);
myservo.write(80);
delay(10000);
myservo.write(180);
myservo2.write(90);
myservo.write(90);
myservo2.write(90);
delay(5000);
myservo.write(100);
myservo2.write(80);
delay(10000);
myservo.write(180);
delay(500);
myservo.write(180);
delay(500);
myservo2.write(180);
delay(500);
myservo2.write(180);
delay(500);
setColor(0, 0, 0); //blue
delay(250);
setColor(20, 0, 0); //blue
delay(400);
setColor(40, 0, 0); //blue
delay(400);
setColor(60, 0, 0); //blue
delay(400);
setColor(80, 0, 0); //blue
delay(400);
setColor(100, 0, 0); //blue
delay(400);
setColor(120, 0, 0); //blue
delay(650);
setColor(140, 0, 0); //blue
delay(700);
setColor(160, 0, 0); //blue
delay(850);
setColor(180, 0, 0); //blue
delay(4000);
setColor(0, 0, 0); //blue
delay(250);
setColor(20, 0, 0); //blue
delay(400);
setColor(40, 0, 0); //blue
delay(400);
setColor(60, 0, 0); //blue
delay(400);
setColor(80, 0, 0); //blue
delay(400);
setColor(100, 0, 0); //blue
delay(400);
setColor(120, 0, 0); //blue
delay(650);
setColor(140, 0, 0); //blue
delay(700);
setColor(160, 0, 0); //blue
delay(850);
setColor(180, 0, 0); //blue
delay(4000);
setColor(0, 255, 0);
delay(1000);
setColor(0, 0, 255);
delay(1000);
setColor(0, 0, 0); //blue
delay(250);
setColor(20, 0, 0); //blue
delay(400);
setColor(40, 0, 0); //blue
delay(400);
setColor(60, 0, 0); //blue
delay(400);
setColor(80, 0, 0); //blue
delay(400);
setColor(100, 0, 0); //blue
delay(400);
setColor(120, 0, 0); //blue
delay(650);
setColor(140, 0, 0); //blue
delay(700);
setColor(160, 0, 0); //blue
delay(850);
setColor(180, 0, 0); //blue
delay(4000);
setColor(0, 255, 0);
delay(1000);
setColor(0, 0, 255);
delay(1000);
setColor(0, 0, 0); //blue
delay(250);
setColor(20, 0, 0); //blue
delay(400);
setColor(40, 0, 0); //blue
delay(400);
setColor(60, 0, 0); //blue
delay(400);
setColor(80, 0, 0); //blue
delay(400);
setColor(100, 0, 0); //blue
delay(400);
setColor(120, 0, 0); //blue
delay(650);
setColor(140, 0, 0); //blue
delay(700);
setColor(160, 0, 0); //blue
delay(850);
setColor(180, 0, 0); //blue
delay(4000);
setColor(0, 255, 0);
delay(1000);
setColor(0, 0, 255);
delay(1000);
setColor(0, 0, 0); //blue
delay(250);
setColor(20, 0, 0); //blue
delay(400);
setColor(40, 0, 0); //blue
delay(400);
setColor(60, 0, 0); //blue
delay(400);
setColor(80, 0, 0); //blue
delay(400);
setColor(100, 0, 0); //blue
delay(400);
setColor(120, 0, 0); //blue
delay(650);
setColor(140, 0, 0); //blue
delay(700);
setColor(160, 0, 0); //blue
delay(850);
setColor(180, 0, 0); //blue
delay(4000);
setColor(255, 255, 255);
delay(2000);
setColor(0, 255, 255);
delay(2000);
setColor(175, 255, 0);
delay(2000);
setColor(255, 255, 125);
delay(2000);
setColor(0, 255, 255);
delay(2000);
setColor(175, 255, 0);
delay(2000);
setColor(255, 255, 125);
delay(2000);
setColor(0, 255, 255);
delay(2000);
setColor(175, 255, 0);
delay(2000);
}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 235 - red;
green = 235 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
This is the code that I used in my final kinetic sculpture. I used the code from my prototype and added on so that I would have three light patterns and three servo patterns in my code. I also added a fade for extra credit.