Light Show

Anthony Azzi, Justin Larson, Sean Gibson, and Joshua Becker

We made a light show using a 5 x 7 matrix LED and two breadboards.

There were a few problems encountered. While making arrays we accidentally fried three Arduino boards by going over the arrays. We also forget to save our program before Winter Vacation so we lost about a week's work and had to redo it all.

If we had more time and money we would learn how to program and use an LED matrix cube. We would also have liked to learn how to use LEDs as light sensors. We wanted to create a game but ran out of time.

Our code first sets all used pins as inputs. It then lights up the selected row/column LED by LED. The pattern that we designed is the illusion of a red light travelling around the matrix LED in a square fashion and then returning. It will repeat this pattern forever. The code for any column or row begins by setting the arrays as outputs. It then turns on the arrays and then turns them off. There is a delay, or given amount of time, and then the arrays are again set as inputs.

The following code was composed on Arduino.

int positive[] = {
  13,13,13,13,13,13,13,3,3,3,3,3,3,3,4,4,4,4,4,4,4,10,10,10,10,10,10,10,6,6,6,6,6,6,6};  //declares array
int negative[] = { 
  2,7,1,5,8,12,9,2,7,1,5,8,12,9,2,7,1,5,8,12,9,2,7,1,5,8,12,9,2,7,1,5,8,12,9};           //

int wacka_flocka [5][7]=
{
  {0,1,2,3,4,5,6},        //shows 2-dimensional array
  {7,8,9,10,11,12,13},
  {14,15,16,17,18,19,20},
  {21,22,23,24,25,26,27},
  {28,29,30,31,32,33,34},
};

void setup ()
{
  pinMode(1, INPUT);  //sets pin as input
  pinMode(2, INPUT);  //       
  pinMode(3, INPUT);  //
  pinMode(4, INPUT);  //
  pinMode(5, INPUT);  //
  pinMode(6, INPUT);  //
  pinMode(7, INPUT);  //
  pinMode(8, INPUT);  //
  pinMode(9, INPUT);  //
  pinMode(10, INPUT);  //
  pinMode(12, INPUT);  // 
  pinMode(13, INPUT);  //
}

void loop ()

  column(0);  //tells which row/column to turn on
  row(4) ;  //
  column2(6);  // 
  row2(0);  // 
  row(0);  //
  column(6);  //
  row2(4);  //
  column2(0);  //
}

void row(int rowNum)
{
  for(int o=0; o<7; o++)  //cycles through and then resets
  {
    pinMode(positive[wacka_flocka[rowNum][o]], OUTPUT);  //sets array as output
    pinMode(negative[wacka_flocka[rowNum][o]], OUTPUT);  //
    digitalWrite(positive[wacka_flocka[rowNum][o]],HIGH);  //turns on array
    digitalWrite(negative[wacka_flocka[rowNum][o]],LOW);  // turns off array
    delay(100);                                           //wait 100 milliseconds
    pinMode(positive[wacka_flocka[rowNum][o]],INPUT);  //sets array as input
    pinMode(negative[wacka_flocka[rowNum][o]],INPUT);  //
  }
}

void row2(int rowNum)
{
   for(int o=6; o>=0; o--)  //cycles through and then resets
  {
    pinMode(positive[wacka_flocka[rowNum][o]], OUTPUT);  //sets array as output
    pinMode(negative[wacka_flocka[rowNum][o]], OUTPUT);  //
    digitalWrite(positive[wacka_flocka[rowNum][o]],HIGH);  //turns on array
    digitalWrite(negative[wacka_flocka[rowNum][o]],LOW);  // turns off array
    delay(100);                                           //wait 100 milliseconds
    pinMode(positive[wacka_flocka[rowNum][o]],INPUT);  //sets array as input
    pinMode(negative[wacka_flocka[rowNum][o]],INPUT);  //
  }
}

void column(int columnNum)
{
  for(int o=0; o<5; o++)  //cycles through and then resets
  {
    pinMode(positive[wacka_flocka[o][columnNum]], OUTPUT);  //sets array as output
    pinMode(negative[wacka_flocka[o][columnNum]], OUTPUT);  //
    digitalWrite(positive[wacka_flocka[o][columnNum]],HIGH);  //turns on array
    digitalWrite(negative[wacka_flocka[o][columnNum]],LOW);  // turns off array
    delay(100);                                              //wait 100 milliseconds
    pinMode(positive[wacka_flocka[o][columnNum]],INPUT);  //sets array as input
    pinMode(negative[wacka_flocka[o][columnNum]],INPUT);  //
  }
}

void column2(int columnNum)
{
  for(int o=4; o>=0; o--)  //cycles through and then resets
  {
    pinMode(positive[wacka_flocka[o][columnNum]], OUTPUT);  //sets array as output
    pinMode(negative[wacka_flocka[o][columnNum]], OUTPUT);  //
    digitalWrite(positive[wacka_flocka[o][columnNum]],HIGH);  //turns on array
    digitalWrite(negative[wacka_flocka[o][columnNum]],LOW);  // turns off array
    delay(100);                                              //wait 100 milliseconds
    pinMode(positive[wacka_flocka[o][columnNum]],INPUT);  //sets array as input
    pinMode(negative[wacka_flocka[o][columnNum]],INPUT);  //
  }
}



YouTube Video



Comments