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.