Go Down

Topic: 8x8 LED Dot Matrix 2 Color + Freeduino (Read 2 times) previous topic - next topic

sodanum

Apr 16, 2010, 09:52 pm Last Edit: Apr 17, 2010, 12:55 pm by sodanum Reason: 1
 ;D.........

8x8 LED Dot Matrix 2 Color + 74HC595
[media]http://www.youtube.com/watch?v=bfpH72zOINk&feature=player_embedded[/media]







sciguy

#1
Apr 16, 2010, 09:59 pm Last Edit: Apr 16, 2010, 10:01 pm by amacmullen14 Reason: 1
That's insane!!!!!!
It would suck if you had made a mistake.
So, does each register do one of the following: red, green, rows?
If so, isn't there a risk of current damaging the leds (don't see resistors) or current damaging the rows register (don't think it can sink that much)?

Now, you just need to use one of the mini arduinos (nano, mini, etc) and just attach to the back, and then you have a super-compact led matrix!

Nice work!
Soundcloud page: http://soundcloud.com/beefinator-2
Youtube channel: http://www.youtube.com/user/beefinator14
Old soundcloud page (ran out o

retrolefty

Very cool. You have a schematic and code you can post?

Lefty

sodanum

#3
Apr 16, 2010, 10:36 pm Last Edit: Apr 16, 2010, 11:17 pm by sodanum Reason: 1
Sciguy
Thank you. For instructions.  :)




595                 595               595                  Freeduino
PIN 16  <==> PIN 16 <==> PIN 16 ====>  digital pin 13
PIN 12  <==> PIN 12 <==> PIN 12 ====>  digital pin 8
PIN 11  <==> PIN 11 <==> PIN 11 ====>  digital pin 12
pin  14  ======================>  digital pin  9
                     pin  14 =============>  digital pin 10
                                         pin  14 ====>  digital pin  11


retrolefty
This is my code.

Code: [Select]

int latchPin = 8;
int clockPin = 12;

int dataPin = 9;
int dataPinRed = 10;
int dataPinGreen = 11;

int powerPin = 13;

byte data;

byte dataArray[22];

int Red = 1;
int Green = 2;
int Orange = 3;

void setup() {

  pinMode(latchPin, OUTPUT);
  pinMode(powerPin,OUTPUT);
  digitalWrite(powerPin,HIGH);
  
  myarray();

}

void loop(){
  
  for(int i = 0 ; i <= 5000 ; i++){
  dotshow(random(1, 9),random(1, 9),random(1, 3));
  delay(1);}
  
  
  
  for(int c = 1 ; c <= 3 ; c++){
  for(int i = 1 ; i <= 8 ; i++){
  rowshow(i,c);
  delay(100);}
  for(int i = 8 ; i >= 1 ; i--){
  rowshow(i,c);
  delay(100);}
  dotshow(0,0,c);
  delay(500);
  }
  
  for(int c = 1 ; c <= 3 ; c++){
  for(int i = 1 ; i <= 8 ; i++){
  colshow(i,c);
  delay(100);}
  for(int i = 8 ; i >= 1 ; i--){
  colshow(i,c);
  delay(100);}
  dotshow(0,0,c);
  delay(500);
  }
  

  for(int i = 0 ; i <= 30 ; i++){
  fourshow(random(1, 3),random(1, 3),random(1, 4));
  delay(300);}




}


void dotshow(int myRow,int myCol, int color){

    byte dotRow;
    byte dotColRed;
    byte dotColGreen;
   
    //[ch3585][ch3635][ch3627][ch3609][ch3604][ch3649][ch3606][ch3623][ch3649][ch3626][ch3604][ch3591][ch3612][ch3621]
    for(int i = 1; i <= 8 ; i++){
    if( myRow == i){dotRow = dataArray[8 - i];}}
   
    //[ch3585][ch3635][ch3627][ch3609][ch3604][ch3588][ch3629][ch3621][ch3633][ch3617][ch3649][ch3626][ch3604][ch3591][ch3612][ch3621] + [ch3585][ch3635][ch3627][ch3609][ch3604][ch3626][ch3637]
    for(int i = 1; i <= 8 ; i++){
    if(myCol == i){
    if(color == 0){ dotColRed =dataArray[16] ;   dotColGreen =dataArray[16];}
    if(color == 1){ dotColRed =dataArray[16] ;  dotColGreen =dataArray[16-i];}
    if(color == 2){ dotColRed =dataArray[16-i] ;  dotColGreen =dataArray[16];}
    if(color == 3){ dotColRed =dataArray[16-i] ;  dotColGreen =dataArray[16-i];}}}
   
    //[ch3649][ch3626][ch3604][ch3591][ch3607][ch3640][ch3585] Dot
    if(myRow == 0 && myCol == 0){ dotRow = dataArray[16];
    if(color == 1){ dotColRed =dataArray[16] ;  dotColGreen =dataArray[17];}
    if(color == 2){ dotColRed =dataArray[17] ; dotColGreen =dataArray[16];}
    if(color == 3){ dotColRed =dataArray[17] ;  dotColGreen =dataArray[17];}}
   
    //[ch3649][ch3626][ch3604][ch3591][ch3612][ch3621]
    digitalWrite(latchPin, 0);
    shiftOut(dotRow,dotColRed,dotColGreen);
    digitalWrite(latchPin, 1);

}

//____________ [ch3649][ch3626][ch3604][ch3591][ch3607][ch3637][ch3656][ch3621][ch3632][ch3649][ch3606][ch3623]

void rowshow(int myRow,int color)
{
    byte dotRow;
    byte dotColRed;
    byte dotColGreen;
   
    //[ch3585][ch3635][ch3627][ch3609][ch3604][ch3649][ch3606][ch3623][ch3649][ch3626][ch3604][ch3591][ch3612][ch3621]
    for(int i = 1; i <= 8 ; i++){
    if( myRow == i){dotRow = dataArray[8 - i];}}
   
    //[ch3585][ch3635][ch3627][ch3609][ch3604][ch3626][ch3637]
    if(color == 0){ dotColRed =dataArray[16] ;  dotColGreen =dataArray[16];}
    if(color == 1){ dotColRed =dataArray[16] ;  dotColGreen =dataArray[17];}
    if(color == 2){ dotColRed =dataArray[17] ;  dotColGreen =dataArray[16];}
    if(color == 3){ dotColRed =dataArray[17] ;  dotColGreen =dataArray[17];}
  
    digitalWrite(latchPin, 0);
    shiftOut(dotRow,dotColRed,dotColGreen);
    digitalWrite(latchPin, 1);
  
}

//____________ [ch3649][ch3626][ch3604][ch3591][ch3607][ch3637][ch3656][ch3588][ch3629][ch3621][ch3633][ch3617]
void colshow(int myCol,int color)
{
   
    byte dotColRed;
    byte dotColGreen;
   
    //[ch3585][ch3635][ch3627][ch3609][ch3604][ch3588][ch3629][ch3621][ch3633][ch3617][ch3649][ch3626][ch3604][ch3591][ch3612][ch3621] + [ch3585][ch3635][ch3627][ch3609][ch3604][ch3626][ch3637]
    for(int i = 1; i <= 8 ; i++){
    if(myCol == i){
    if(color == 0){ dotColRed =dataArray[16] ;   dotColGreen =dataArray[16];}
    if(color == 1){ dotColRed =dataArray[16] ;   dotColGreen =dataArray[16-i];}
    if(color == 2){ dotColRed =dataArray[16-i] ; dotColGreen =dataArray[16];}
    if(color == 3){ dotColRed =dataArray[16-i] ; dotColGreen =dataArray[16-i];}}}
  
    digitalWrite(latchPin, 0);
    shiftOut(dataArray[16],dotColRed,dotColGreen);
    digitalWrite(latchPin, 1);
  
}

//____________ [ch3649][ch3626][ch3604][ch3591] 4x4
void fourshow(int myRow,int myCol, int color)
{
    byte dotRow;
    byte dotColRed;
    byte dotColGreen;
   
    //[ch3585][ch3635][ch3627][ch3609][ch3604][ch3649][ch3606][ch3623][ch3649][ch3626][ch3604][ch3591][ch3612][ch3621] [ch3610][ch3609]-[ch3621][ch3656][ch3634][ch3591]
    if( myRow == 2){dotRow = dataArray[18];}
    if( myRow == 1){dotRow = dataArray[19];}
   
    //[ch3585][ch3635][ch3627][ch3609][ch3604][ch3588][ch3629][ch3621][ch3633][ch3617][ch3649][ch3626][ch3604][ch3591][ch3612][ch3621][ch3588][ch3629][ch3621][ch3633][ch3617] [ch3595][ch3657][ch3634][ch3618]-[ch3586][ch3623][ch3634] + [ch3585][ch3635][ch3627][ch3609][ch3604][ch3626][ch3637]
   
    if(myCol == 1){
    if(color == 0){ dotColRed =dataArray[16] ; dotColGreen =dataArray[16];}
    if(color == 1){ dotColRed =dataArray[16] ; dotColGreen =dataArray[18];}
    if(color == 2){ dotColRed =dataArray[18] ; dotColGreen =dataArray[16];}
    if(color == 3){ dotColRed =dataArray[18] ; dotColGreen =dataArray[18];}}
   
    if(myCol == 2){
    if(color == 0){ dotColRed =dataArray[16] ; dotColGreen =dataArray[16];}
    if(color == 1){ dotColRed =dataArray[19] ;   dotColGreen =dataArray[16];}
    if(color == 2){ dotColRed =dataArray[16] ; dotColGreen =dataArray[19];}
    if(color == 3){ dotColRed =dataArray[19] ; dotColGreen =dataArray[19];}}
  
    digitalWrite(latchPin, 0);
    shiftOut(dotRow,dotColRed,dotColGreen);
    digitalWrite(latchPin, 1);
  
}



void shiftOut(byte myDataOut,byte myDataOutRed,byte myDataOutGreen) {
  
  int i=0;

  
  int pinState;
  int pinStateRed;
  int pinStateGreen;
  
  pinMode(clockPin, OUTPUT);
  
  pinMode(dataPin,OUTPUT);
  pinMode(dataPinRed,OUTPUT);
  pinMode(dataPinGreen,OUTPUT);

  digitalWrite(dataPin, 0);
  digitalWrite(dataPinRed, 0);
  digitalWrite(dataPinGreen, 0);
  
  digitalWrite(clockPin, 0);

  
  for (i=0; i<=7; i++)  {
  digitalWrite(clockPin, 0);
   
    if ( myDataOut  & (1<<i) ) { pinState= 1; } else {pinState = 0;}
    if ( myDataOutRed & (1<<i)) { pinStateRed= 1;} else {pinStateRed= 0;}
    if ( myDataOutGreen & (1<<i) ) { pinStateGreen= 1; } else {pinStateGreen=0;}

    digitalWrite(dataPin, pinState );
    digitalWrite(dataPinRed,  pinStateRed);
    digitalWrite(dataPinGreen, pinStateGreen);
   
    digitalWrite(clockPin, 1);
   
    digitalWrite(dataPin,0);
    digitalWrite(dataPinRed, 0);
    digitalWrite(dataPinGreen, 0);
  
  }
  
  digitalWrite(clockPin, 0);
}

void  myarray(){

  dataArray[0]   = 0x80; //10000000
  dataArray[1]   = 0x40; //01000000
  dataArray[2]   = 0x20; //00100000
  dataArray[3]   = 0x10; //00010000
  dataArray[4]   = 0x08; //00001000
  dataArray[5]   = 0x04; //00000100
  dataArray[6]   = 0x02; //00000010
  dataArray[7]   = 0x01; //00000001
  
  dataArray[8]   = 0x7F; //01111111
  dataArray[9]   = 0xBF; //10111111
  dataArray[10]  = 0xDF; //11011111
  dataArray[11]  = 0xEF; //11101111
  dataArray[12]  = 0xF7; //11110111
  dataArray[13]  = 0xFB; //11111011
  dataArray[14]  = 0xFD; //11111101
  dataArray[15]  = 0xFE; //11111110
  
  dataArray[16]  = 0xFF; //11111111
  dataArray[17]  = 0x00; //00000000
  
  dataArray[18]  = 0xF0; //11110000
  dataArray[19]  = 0x0F; //00001111
  
}




I come from thailand

My English is not good

::)

[ch3655]Hello = " Sa Wat Dee"
Nice to meet you all.







Senso

Nice project, and good soldering skills, but you are powering all the 75hc595 from one arduino digital pin, and thats pretty risk, you can(and will) burn your arduino.

aree



riz

hi
i am a bit new to shift registers and dot matrix,
can u possibly upload the full shematic so i knw what is connected to what . its a bit hard to determine from photo.
along with what cap you are using.

thanks

Go Up