Sunday, December 8, 2013

Week 15 final blog, team meeting.

Team meeting
attendant: all members
date: 12/9/2013
Discuss Motor trigger

                                            Mechanism of the motor trigger.
The Servo micro motor was installed to the trigger holder. The activation holder has not yet received.
The LED cube worked out perfectly

The LED cube worked perfectly. first part of project is done. The second part of our project is to created double motor trigger, which one motor will be turned on to trigger another motor that is connected to the LED Arjuino board. This part will be the switch of our LED cube. Unfortunately our fabricated parts are not yet printed. Further details will be updated soon.
Trigger Motor

LED cube 


This video shows our functioning LED cube.
http://www.youtube.com/watch?v=FjXKELFozk8&feature=youtu.be

As a team, each of the member contributed their parts. Especially Jun, he spent hours and hours building the cube; however, we started our project very late due to a lack of materials. One thing that we can improve is our team meeting. We did not spend too much time on meeting and discuss every single issue that we might be facing, which is why we couldn't finish the project on time. Fortunately, the mainly part of our project worked out great.



Thursday, December 5, 2013

Incomplete motor code.

This is an incomplete code for our trigger motor.(incomplete material)
servo mysero;

int pos= 0;
int inputpin=2;
int val=0;
void setup()
{
myservo.attach()
pinmode(inputpin,INPUT);
}
void loop()
{
val=digitalRead(inputpin);
val = digitalRead(inputpin);
if(val ==HIGH)
{
}
else {}
}

Wednesday, December 4, 2013

Week 14






The actual product comes out differently because we needed foam to stabilize the position of the LED; however, the idea stayed the same, the Anodes are directed inserted to the circuit board and soldered to wires that are connected to the Arjuino board.

As we can see, there are 16 wires connected to each column of the Anode legs of the LED, and each layer of the LED's cathode legs are linked to 4 wires in total. When the code runs, the circuit of each cathode and anodes will be connected to light the LED. With different codes, we can turn on whichever LED we want. The duration was also considered in the code, so that we can displace certain message on the cube.

Monday, December 2, 2013

Week 14 No team meeting.

All materials arrived. The LED cube will be build this week.
No team meeting this week.

Friday, November 29, 2013

Week 13

We could not start our project early since we ordered a lot of stuff from online. As well as the fabrication goes, we have not yet received some of our parts yet.

Tuesday, November 26, 2013

Week 13 Meeting

Team meeting
Attendant: Xiaoliang, Jun
Date 11/26/2013
Issues:
-The materials was not received because they were sent to a wrong address.
-The Arjuino code for the LED cube was done

Goal:
keeping track on materials and blog update.

Sample Code:
/*Blue LED Cube 4x4x4
** 
** Written: Paden Hogeland
**
*/

// Initalize our LED columns (positive)
int LEDPin[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
// Initalize the LED layers (ground)
int LayerPin[] = {16,17,18,19};
  int count = 0;
  int timer = 0,
      leadA,f1,f2,f3 = 0,
      leadB,f1B,f2B,f3B;
  int laps=0;
  int pause = 0;
int OuterEdge[] = {0,1,2,3,7,11,15,14,13,12,8,4};
// Setup
void setup(){
  // Set up LED columns as output
  for(int pin = 0; pin < 16 ; pin++ ){
    pinMode(LEDPin[pin],OUTPUT);
    digitalWrite(LEDPin[pin],LOW);
  }
  // Set up LED Layers as output
  for(int layer = 0; layer < 4; layer++){
    pinMode(LayerPin[layer], OUTPUT);
    digitalWrite(LayerPin[layer], HIGH);
  }

}

// The Loop
void loop(){
  
  /////////////////////////////////////////////////////////////////////////////////
  //  This increments the layers from top to bottom
  /////////////////////////////////////////////////////////////////////////////////
  digitalWrite(LEDPin[0],HIGH);
  digitalWrite(LEDPin[1],HIGH);
  digitalWrite(LEDPin[2],HIGH);
  digitalWrite(LEDPin[3],HIGH);
  digitalWrite(LEDPin[4],HIGH);
  digitalWrite(LEDPin[5],HIGH);
  digitalWrite(LEDPin[6],HIGH);
  digitalWrite(LEDPin[7],HIGH);
  digitalWrite(LEDPin[8],HIGH);
  digitalWrite(LEDPin[9],HIGH);
  digitalWrite(LEDPin[10],HIGH);
  digitalWrite(LEDPin[11],HIGH);
  digitalWrite(LEDPin[12],HIGH);
  digitalWrite(LEDPin[13],HIGH);
  digitalWrite(LEDPin[14],HIGH);
  digitalWrite(LEDPin[15],HIGH);
  digitalWrite(LayerPin[0],HIGH)
  digitalWrite(LayerPin[1],HIGH)
  digitalWrite(LayerPin[2],HIGH)
  digitalWrite(LayerPin[3],HIGH)
  count = 1;
  pause = 1;
   while(count < 500){
     digitalWrite(LayerPin[0],LOW);    
     delay(pause);
     digitalWrite(LayerPin[0],HIGH);
     digitalWrite(LayerPin[1],LOW);    
     delay(pause);
     digitalWrite(LayerPin[1],HIGH);
     digitalWrite(LayerPin[2],LOW);    
     delay(pause);
     digitalWrite(LayerPin[2],HIGH);
     digitalWrite(LayerPin[3],LOW);    
     delay(pause);
     digitalWrite(LayerPin[3],HIGH); 
   count++;  
   }
   

   
  // Set up LED columns as output
  for(int pin = 0; pin < 16 ; pin++ ){
    digitalWrite(LEDPin[pin],LOW);
  }
  // Set up LED Layers as output
  for(int layer = 0; layer < 4; layer++){
    digitalWrite(LayerPin[layer], HIGH);
  }  
  
    /////////////////////////////////////////////////////////////////////////////////
  //  This increments the layers from top to bottom
  /////////////////////////////////////////////////////////////////////////////////
  // Set up LED columns as output
  for(int pin = 0; pin < 16 ; pin++ ){
    digitalWrite(LEDPin[pin],HIGH);
  }

  count = 1;
  pause = 1;
   while(count < 80){
     digitalWrite(LayerPin[0],LOW);    
     delay(count);
     digitalWrite(LayerPin[0],HIGH);
     digitalWrite(LayerPin[1],LOW);    
     delay(count);
     digitalWrite(LayerPin[1],HIGH);
     digitalWrite(LayerPin[2],LOW);    
     delay(count);
     digitalWrite(LayerPin[2],HIGH);
     digitalWrite(LayerPin[3],LOW);    
     delay(count);
     digitalWrite(LayerPin[3],HIGH); 
   count++;  
   }
   

   
  // Set up LED columns as output
  for(int pin = 0; pin < 16 ; pin++ ){
    digitalWrite(LEDPin[pin],LOW);
  }
  // Set up LED Layers as output
  for(int layer = 0; layer < 4; layer++){
    digitalWrite(LayerPin[layer], HIGH);
  }  
   /////////////////////////////////////////////////////////////////////////
   // Following Design
   //  The top Led leads the other LEDs around the outside of the Cube
   ////////////////////////////////////////////////////////////////////////
   // Initalize the columns for the LED's
   
   leadA=0;
   f1=11;
   f2=10;
   f3=9;
   leadB=6;
   f1B=5;
   f2B=4;
   f3B=3;
   count = 0; 
   while(count < 500){
     // Sets the time they all display or "blink together" to our eyes
     while(timer<10){
       digitalWrite(LayerPin[3],LOW);
       digitalWrite(LEDPin[OuterEdge[leadA]],HIGH);
       if(laps=1){
         digitalWrite(LEDPin[OuterEdge[leadB]],HIGH);
       }
       delay(3);
       digitalWrite(LEDPin[OuterEdge[leadA]],LOW);
       digitalWrite(LEDPin[OuterEdge[leadB]],LOW);
       digitalWrite(LayerPin[3],HIGH);
       digitalWrite(LayerPin[2],LOW);
       digitalWrite(LEDPin[OuterEdge[f1]],HIGH);
       if(laps=1){
         digitalWrite(LEDPin[OuterEdge[f1B]],HIGH);
       }
       delay(3);
       digitalWrite(LEDPin[OuterEdge[f1]],LOW);  
       digitalWrite(LEDPin[OuterEdge[f1B]],LOW);       
       digitalWrite(LayerPin[2],HIGH);
       digitalWrite(LayerPin[1],LOW);
       digitalWrite(LEDPin[OuterEdge[f2]],HIGH);
       if(laps=1){
         digitalWrite(LEDPin[OuterEdge[f2B]],HIGH);
       }
       delay(3);
       digitalWrite(LEDPin[OuterEdge[f2]],LOW);  
       digitalWrite(LEDPin[OuterEdge[f2B]],LOW);
       digitalWrite(LayerPin[1],HIGH);
       digitalWrite(LayerPin[0],LOW);
       digitalWrite(LEDPin[OuterEdge[f3]],HIGH);
       if(laps=1){
         digitalWrite(LEDPin[OuterEdge[f3B]],HIGH);
       }
       delay(3);
       digitalWrite(LEDPin[OuterEdge[f3]],LOW);    
       digitalWrite(LEDPin[OuterEdge[f3B]],LOW);      
       digitalWrite(LayerPin[0],HIGH);       
       timer++;
       count++;
     }
     timer=0;
     leadA++;
     f1++;
     f2++;
     f3++;
     leadB++;
     f1B++;
     f2B++;
     f3B++;
     if(leadA>11){
       leadA = 0;
       laps = 1;
     }
     if(f1>11){
       f1 = 0;
     }
     if(f2>11){
       f2 = 0;
     }
     if(f3>11){
       f3 = 0;
     }
     if(leadB>11){
       leadB = 0;
     }
     if(f1B>11){
       f1B = 0;
     }
     if(f2B>11){
       f2B = 0;
     }
     if(f3B>11){
       f3B = 0;
     }
     
   }
   
   count = 500;
   
     // Set up LED columns as output
  for(int pin = 0; pin < 16 ; pin++ ){
    digitalWrite(LEDPin[pin],LOW);
  }
  // Set up LED Layers as output
  for(int layer = 0; layer < 4; layer++){
    digitalWrite(LayerPin[layer], HIGH);
  }  
  pause = 130;
  while(count < 500){
    digitalWrite(LayerPin[0],HIGH);
    digitalWrite(LayerPin[3],LOW);
    digitalWrite(LEDPin[7],HIGH);
    delay(pause);
    digitalWrite(LayerPin[3],HIGH);
    digitalWrite(LayerPin[2],LOW);
    digitalWrite(LEDPin[7],HIGH);
    delay(pause);
    digitalWrite(LayerPin[2],HIGH);
    digitalWrite(LayerPin[1],LOW);
    digitalWrite(LEDPin[7],HIGH);
    delay(pause);
    digitalWrite(LayerPin[1],HIGH);
    digitalWrite(LayerPin[0],LOW);
    digitalWrite(LEDPin[7],HIGH);
    delay(pause);
    count++;
  }
  count = 0;    
}

Fabrication

Motor trigger holder

motor activation holder

LED soldering holder

Thursday, November 21, 2013

Week 12


Let's talk about our designs. We came up with a few different designs before we were settled with this 4x4x4 LED motor-trigger cube. We first came up with a spherical  design which the LED's would be appeared as an sphere, our insight and goal was to demonstrate the surface of our planet on this design; however, in order to create a perfect sphere we would need a tremendous amount of LED to create a higher pixel, another problem was that to create such model we need to be very experienced at soldering. Therefore we banned out this idea. Our second idea was to create a 2-dimensional circular LED board that rotates to form a LED sphere, with two dimensional space we don't need to worry about the cost of LED and soldering skill. Unfortunately, it's necessary to spin the LED at a very high speed to perform an illusion like this in the video.
A powerful motor is required and we could not come up with a solution to the connection between the Arjuino board and the spinning LED. Our third option was cubic LED screen, which is what we are working on at the moment; however, to make it challenging we decided to combine motors a switch to our cube. There will be two different parts in this project; 1) rotational tirgger 2) 3-D LED screen. The motor triggers will consist of an Arjuino board  that control one motor, another motor will be attached to the LED circuit board. Therefore two codes will be running at the same time when one motor triggers another motor to turn on the 3D-LED screen. 

Week 12

The basic model of our 4x4x4 LED cube. where the cathodes of each layer LED are linked together to the ground of Arjuino Board, with a total of 4 ports (A2-A6)

the anodes of LED from each column are linked with a total of 16 connections link to Arjuino (1-13,A0-A1)

Tuesday, November 19, 2013

Meeting: week 12

Meeting: week 12
Attendant: All members
Date: 11/19/2013

The team met up to discuss about the distribution of work.
Min will be responsible for code
Jun will be responsible for building the physical project.
Xiaoliang will be responsible for materials, tool, blog update.


Friday, November 15, 2013

Week 11

Materials for our project:
-two arjuino boards
-2 Micro Servo A0900 motors
-circuit board
-Foam
-5mm LED (64)
-resistors (4)

Tool:
-hot glue gun
-Soldering iron
-pin board
-helping hands


Wednesday, November 13, 2013

arduino project of week 11 november



For this project, our team decided to make a LED cube. A LED cube is basically a LED screen with a third dimension making it 3D. When making a LED cube, one must be able to see through it and hence, more spacing is needed between the pixels. The LED cube will have 100 LEDs. If the LED is flashed really quickly, the image will stay on the retina for a little while after the LED turns off.

By flashing each layer of the cube one after another really fast, it gives the illusion of a 3d image, when in fact, one is looking at a series of 2D images stacked on top of one another. This is also called multiplexing.

With this setup, we only need 64 (for the anodes) + 8 (for each layer) IO ports to control the LED cube.


An LED has two legs: One positive (the anode) and one negative (cathode). In order to light up an LED, the current must be run from the positive to the negative leg.
The LED cube will be made up of columns and layers. The cathode legs of every LED in a layer are soldered together while all the anode legs in one column are soldered together.
To drive a LED cube, two sets of IO ports are required: one to source all the LED anode columns and one to sink all the cathode layers.
Currently, we have ordered the components but they haven’t came in yet. The ARDUINO codes will be tried out later this weekend by the team. The team is scheduled to meet this weekend to work on the components and the arduino codes.