3D Keychain project: This was our first project of the year and one of the first times I ever used TinkerCAD. I designed the keychain on the software and printed it out.
Corn hole board Project: My teacher challenged my group and I to make a finished corn hole board to sell to consumers interested in the game. It had to have excellent craftsmanship in order to be sold so we could make a profit. I also designed a logo for our company.
This is the final code that I used to program my Kinetic Sculpture. This code controls the servos which rotate the moires and control the colors of the LEDs.
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 myservo;
Servo myservo2;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
myservo.attach(5);
myservo.write(90); // set servo to mid-point
myservo2.attach(3);
myservo2.write(90); // set servo to mid-point
}
void loop()
{
myservo2.write(0); // set servo to mid-point
delay(1000);
myservo2.write(50); // set servo to mid-point
delay(1000);
myservo.write(85); // set servo to mid-point
delay(10000);
myservo.write(80); // set servo to mid-point
delay(1000);
myservo.write(75); // set servo to mid-point
delay(1000);
myservo.write(70); // set servo to mid-point
delay(1000);
myservo.write(65); // set servo to mid-point
delay(1000);
myservo.write(60); // set servo to mid-point
delay(1000);
myservo.write(55); // set servo to mid-point
delay(1000);
myservo.write(50); // set servo to mid-point
delay(1000);
myservo.write(45); // set servo to mid-point
delay(1000);
myservo2.write(0); // set servo to mid-point
delay(1000);
myservo2.write(50); // set servo to mid-point
delay(1000);
myservo.write(85); // set servo to mid-point
delay(10000);
myservo.write(80); // set servo to mid-point
delay(1000);
myservo.write(75); // set servo to mid-point
delay(1000);
myservo.write(70); // set servo to mid-point
delay(1000);
myservo.write(65); // set servo to mid-point
delay(1000);
myservo.write(60); // set servo to mid-point
delay(1000);
myservo.write(55); // set servo to mid-point
delay(1000);
myservo.write(50); // set servo to mid-point
delay(1000);
myservo.write(45); // set servo to mid-point
delay(1000);
myservo.write(180); // set servo to mid-point
delay(5000);
myservo.write(50); // set servo to mid-point
delay(5000);
myservo2.write(50); // set servo to mid-point
delay(1000);
myservo2.write(0); // set servo to mid-point
delay(1000);
myservo.write(180); // set servo to mid-point
delay(5000);
myservo.write(50); // set servo to mid-point
delay(5000);
myservo2.write(50); // set servo to mid-point
delay(5000);
myservo2.write(0); // set servo to mid-point
delay(1000);
myservo.write(180); // set servo to mid-point
delay(4000);
myservo2.write(0); // set servo to mid-point
delay(50);
myservo2.write(90); // set servo to mid-point
delay(1000);
myservo2.write(180); // set servo to mid-point
delay(4000);
myservo.write(180); // set servo to mid-point
delay(4000);
myservo2.write(0); // set servo to mid-point
delay(50);
myservo2.write(90); // set servo to mid-point
delay(4000);
myservo2.write(180); // set servo to mid-point
delay(1000);
setColor(0, 0, 0); // red
delay(250);
setColor(20, 0, 0); // red
delay(400);
setColor(40, 0, 0); // red
delay(400);
setColor(60, 0, 0); // red
delay(400);
setColor(80, 0, 0); // red
delay(400);
setColor(100, 0, 0); // red
delay(400);
setColor(150, 0, 0); // red
delay(650);
setColor(200, 0, 0); // red
delay(700);
setColor(255, 0, 0); // red
delay(850);
setColor(255, 0, 0); // red
delay(4000);
setColor(0, 0, 0); // red
delay(250);
setColor(20, 0, 0); // red
delay(400);
setColor(40, 0, 0); // red
delay(400);
setColor(60, 0, 0); // red
delay(400);
setColor(80, 0, 0); // red
delay(400);
setColor(100, 0, 0); // red
delay(400);
setColor(150, 0, 0); // red
delay(650);
setColor(200, 0, 0); // red
delay(700);
setColor(255, 0, 0); // red
delay(850);
setColor(255, 0, 0); // red
delay(4000);
setColor(0, 0, 0); // red
delay(250);
setColor(20, 0, 0); // red
delay(400);
setColor(40, 0, 0); // red
delay(400);
setColor(60, 0, 0); // red
delay(400);
setColor(80, 0, 0); // red
delay(400);
setColor(100, 0, 0); // red
delay(400);
setColor(150, 0, 0); // red
delay(650);
setColor(200, 0, 0); // red
delay(700);
setColor(255, 0, 0); // red
delay(850);
setColor(255, 0, 0); // red
delay(4000);
setColor(0, 0, 0); // pause
delay(500);
setColor(255,255, 0); // yellow
delay(1000);
setColor(0, 0, 0); // pause
delay(500);
setColor(255, 0, 0); // red
delay(2000);
setColor(0, 0, 0); // pause
delay(500);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(0, 0, 0); // pause
delay(400);
setColor(0, 0, 0); // pause
delay(500);
setColor(255,255, 0); // yellow
delay(1000);
setColor(0, 0, 0); // pause
delay(500);
setColor(255, 0, 0); // red
delay(2000);
setColor(0, 0, 0); // pause
delay(500);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(0, 0, 0); // pause
delay(400);
setColor(0, 0, 0); // pause
delay(500);
setColor(255,255, 0); // yellow
delay(1000);
setColor(0, 0, 0); // pause
delay(500);
setColor(255, 0, 0); // red
delay(2000);
setColor(0, 0, 0); // pause
delay(500);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(0, 0, 0); // pause
delay(400);
setColor(255, 255, 255); // white
delay(5000);
setColor(230, 255, 255); // white
delay(850);
setColor(200, 255, 255); // white
delay(700);
setColor(175, 255, 255); // white
delay(650);
setColor(100, 255, 255); // white
delay(400);
setColor(75, 255, 255); // white
delay(1000);
setColor(50, 255, 255); // white
delay(400);
setColor(25, 255, 255); // white
delay(400);
setColor(15, 15, 15); // white
delay(400);
setColor(5, 5, 5); // white
delay(400);
setColor(0, 0, 0); // white
delay(250);
setColor(255, 255, 255); // white
delay(5000);
setColor(230, 255, 255); // white
delay(850);
setColor(200, 255, 255); // white
delay(700);
setColor(175, 255, 255); // white
delay(650);
setColor(100, 255, 255); // white
delay(400);
setColor(75, 255, 255); // white
delay(1000);
setColor(50, 255, 255); // white
delay(400);
setColor(25, 255, 255); // white
delay(400);
setColor(15, 15, 15); // white
delay(400);
setColor(5, 5, 5); // white
delay(400);
setColor(0, 0, 0); // white
delay(250);
setColor(255, 255, 255); // white
delay(5000);
setColor(230, 255, 255); // white
delay(850);
setColor(200, 255, 255); // white
delay(700);
setColor(175, 255, 255); // white
delay(650);
setColor(100, 255, 255); // white
delay(400);
setColor(75, 255, 255); // white
delay(1000);
setColor(50, 255, 255); // white
delay(400);
setColor(25, 255, 255); // white
delay(400);
setColor(15, 15, 15); // white
delay(400);
setColor(5, 5, 5); // white
delay(400);
setColor(0, 0, 0); // white
delay(250);
}
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);
}
#define ROW_1 2
#define ROW_2 3
#define ROW_3 4
#define ROW_4 5
#define ROW_5 6
#define ROW_6 7
#define ROW_7 8
#define ROW_8 9
#define COL_1 10
#define COL_2 11
#define COL_3 12
#define COL_4 13
#define COL_5 A0
#define COL_6 A1
#define COL_7 A2
#define COL_8 A3
const byte rows[] = {
ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7, ROW_8
};
byte A[] = {B00011000,B00111100,B01100110,B01100110,B01111110,B01111110,B01100110,B01100110};
byte B[] = {B01111100,B01100110,B01100110,B01111100,B01111110,B01100110,B01100110,B01111100};
byte C[] = {B00111110,B01111110,B01100000,B01100000,B01100000,B01100000,B01111110,B00111110};
byte D[] = {B01111000,B01111100,B01100110,B01100110,B01100110,B01100110,B01111100,B01111000};
byte E[] = {B01111110,B01111110,B01100000,B01111110,B01111110,B01100000,B01111110,B01111110};
byte F[] = {B01111110,B01111110,B01100000,B01111100,B01111100,B01100000,B01100000,B01100000};
byte G[] = {B00111000,B01111100,B01100100,B01100000,B01101110,B01100100,B01111100,B00111000};
byte H[] = {B01100110,B01100110,B01100110,B01111110,B01111110,B01100110,B01100110,B01100110};
byte I[] = {B01111110,B01111110,B00011000,B00011000,B00011000,B00011000,B01111110,B01111110};
byte J[] = {B01111110,B01111110,B00011000,B00011000,B00011000,B00011000,B01111000,B01110000};
byte K[] = {B01100110,B01101100,B01111000,B01110000,B01110000,B01111000,B01101100,B01100110};
byte L[] = {B01100000,B01100000,B01100000,B01100000,B01100000,B01100000,B01111110,B01111110};
byte M[] = {B01000010,B01100110,B01111110,B01011010,B01000010,B01000010,B01000010,B01000010};
byte N[] = {B01000110,B01100110,B01100110,B01110110,B01111110,B01101110,B01100110,B01100110};
byte O[] = {B00111100,B01111110,B01100110,B01100110,B01100110,B01100110,B01111110,B00111100};
byte P[] = {B01111000,B01111100,B01100110,B01100110,B01111100,B01111000,B01100000,B01100000};
byte Q[] = {B00111100,B01000010,B01000010,B01000010,B01000010,B01001010,B00111100,B00000010};
byte R[] = {B01111100,B01100110,B01100110,B01101100,B01111000,B01111000,B01101100,B01100110};
byte S[] = {B00111100,B01111110,B01100000,B01111100,B00111110,B00000110,B01111110,B00111100};//{B00111000,B01111100,B01100000,B00110000,B00011000,B00001100,B00111100,B01111000};
byte T[] = {B01111110,B01111110,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000};
byte U[] = {B01100110,B01100110,B01100110,B01100110,B01100110,B01100110,B01111110,B00111100};
byte V[] = {B01100110,B01100110,B01100110,B01100110,B01100110,B01100110,B00111100,B00011000};
byte W[] = {B01000010,B01000010,B01000010,B01000010,B01000010,B01011010,B01011010,B00100100};
byte X[] = {B01100110,B01100110,B01100110,B00111100,B00011000,B00111100,B01100110,B01100110};
byte Y[] = {B01100110,B01100110,B01100110,B01111110,B00111100,B00011000,B00011000,B00011000};
byte Z[] = {B01111110,B01111110,B00000110,B00001100,B00011000,B00110000,B01111110,B01111110};
byte Zero[] = {B00111100,B01111110,B01100110,B01100110,B01100110,B01100110,B01111110,B00111100};
byte One[] = {B00011000,B00111000,B01111000,B00011000,B00011000,B00011000,B01111110,B01111110};
byte Two[] = {B00111100,B01111110,B01000110,B00001100,B00011000,B00110000,B01111110,B01111110};
byte Three[] = {B01111100,B01111110,B00000110,B00111110,B00111110,B00000110,B01111110,B01111100};
byte Four[] = {B00001100,B00011100,B00111100,B01101100,B01111110,B01111110,B00001100,B00001100};
byte Five[] = {B01111110,B01111110,B01100000,B01111100,B00111110,B00000110,B01111110,B01111100};
byte Six[] = {B00001100,B00011000,B00110000,B01111100,B01111110,B01100110,B01100110,B00111100};
byte Seven[] = {B01111110,B01111110,B00000110,B00000110,B00001100,B00011000,B00110000,B01100000};
byte Eight[] = {B00111100,B01100110,B01100110,B00111100,B01111110,B01100110,B01100110,B00111100};
byte Nine[] = {B00111100,B01100110,B01100110,B01111110,B00111110,B00001100,B00011000,B00110000};
byte All[] = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111};
byte Circle[] = {B00111100,B01111110,B11111111,B11111111,B11111111,B11111111,B01111110,B00111100};
byte Heart[] = {B00000000,B01100110,B11111111,B11111111,B01111110,B00111100,B00011000,B00000000};
float timeCount = 0;
void setup() {
Serial.begin(9600);
for (byte i = 2; i <= 13; i++)
pinMode(i, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
}
void loop() {
delay(5);
timeCount += 1;
if(timeCount < 200) {
drawScreen(I);
} else if (timeCount < 230) {
} else if (timeCount < 400) {
drawScreen(Heart);
} else if (timeCount < 430) {
} else if (timeCount < 500) {
drawScreen(U);
} else if (timeCount < 530) {
} else if (timeCount < 600) {
drawScreen(All);
} else if (timeCount < 630) {
} else {
timeCount = 0;
}
}
void drawScreen(byte buffer2[]){
for (byte i = 0; i < 8; i++) {
setColumns(buffer2[i]);
digitalWrite(rows[i], HIGH);
delay(2);
digitalWrite(rows[i], LOW);
}
}
void setColumns(byte b) {
digitalWrite(COL_1, (~b >> 0) & 0x01);
digitalWrite(COL_2, (~b >> 1) & 0x01);
digitalWrite(COL_3, (~b >> 2) & 0x01);
digitalWrite(COL_4, (~b >> 3) & 0x01);
digitalWrite(COL_5, (~b >> 4) & 0x01);
digitalWrite(COL_6, (~b >> 5) & 0x01);
digitalWrite(COL_7, (~b >> 6) & 0x01);
digitalWrite(COL_8, (~b >> 7) & 0x01);
}