Pilotiamo una matrice di LED 8×8 con un MAX7219 e Arduino

22 03 2013

Su eBay si riescono a trovare display realizzati con matrici di LED come questo per pochi soldi. Addirittura alcuni fornitori, per la prevalenza cinesi, muniscono la matrice LED con un PCB e un integrato MAX7219 che è quanto di meglio si possa desiderare per pilotare con semplicità 64 LED. Questo in figura lo abbiamo pagato meno di 4 euro!

La matrice di LED pilotata da un MAX7219 e Arduino

La matrice di LED pilotata da un MAX7219 e Arduino. Servono solo 5 fili: 2 di alimentazione e 3 per i dati

Per pilotare 64 LED a prima vista sarebbero necessari 64 fili e 64 piedini di OUTPUT su Arduino, una cosa alquanto difficile da ottenere. Ci viene in aiuto per questo compito il MAX7219 che permette di pilotare 64 LED se questi vengono collegati a matrice. Per il pilotaggio poi sono necessari solo 3 fili più l’alimentazione.

Ecco come si può pilotare una matrice di 64 LED con un MAX7219

Ecco come si può pilotare una matrice di 64 LED con un MAX7219

Ecco come si può pilotarlo per far apparire in sequenza una serie di numeri. La cosa più interessante di questo firmware è che non fa uso di librerie esterne.

// Per realizzare questo firmware ci siamo ispirati a:
// http://linksprite.com/wiki/index.php5?title=LED_Matrix_Kit
unsigned char i;
unsigned char j; 
/*Port Definitions*/
int Max7219_pinCLK = 10;
int Max7219_pinCS = 9;
int Max7219_pinDIN = 8;

// La conversione da bitmap a codice binario è stata fatta qui: 
// http://www.pial.net/post/8x8-Dot-matrix-font-generator-based-on-javascript-and-HTML.aspx
unsigned char disp1[10][8]={
{B00000000,B00111100,B01100110,B01100110,B01101110,B01110110,B01100110,B00111100},//0
{B00000000,B00001000,B00011000,B00111000,B00011000,B00011000,B00011000,B00111100},//1
{B00000000,B00111100,B01100110,B00000110,B00001100,B00011000,B00110000,B01111110},//2
{B00000000,B00111100,B01100110,B00000110,B00001100,B00000110,B01100110,B00111100},//3
{B00000000,B00100000,B01100000,B01101100,B01101100,B01111110,B00001100,B00001100},//4
{B00000000,B01111110,B01100000,B01100000,B01111100,B00000110,B01100110,B00111100},//5
{B00000000,B00111100,B01100110,B01100000,B01111100,B01100110,B01100110,B00111100},//6
{B00000000,B01111110,B00000110,B00000110,B00001100,B00011000,B00011000,B00011000},//7
{B00000000,B00111100,B01100110,B01100110,B00111100,B01100110,B01100110,B00111100},//8
{B00000000,B00111100,B01100110,B01100110,B00111110,B00000110,B01100110,B00111100},//9
};

void Write_Max7219_byte(unsigned char DATA) 
{   
            unsigned char i;
	    digitalWrite(Max7219_pinCS,LOW);		
	    for(i=8;i>=1;i--)
          {		  
             digitalWrite(Max7219_pinCLK,LOW);
             digitalWrite(Max7219_pinDIN,DATA&0x80);// Extracting a bit data
             DATA = DATA<<1;
             digitalWrite(Max7219_pinCLK,HIGH);
           }                                 
}

void Write_Max7219(unsigned char address,unsigned char dat)
{
        digitalWrite(Max7219_pinCS,LOW);
        Write_Max7219_byte(address);           //address,code of LED
        Write_Max7219_byte(dat);               //data,figure on LED 
        digitalWrite(Max7219_pinCS,HIGH);
}

void Init_MAX7219(void)
{
 Write_Max7219(0x09, 0x00);       //decodifica: BCD
 Write_Max7219(0x0a, 0x06);       //luminosità 
 Write_Max7219(0x0b, 0x07);       //limite scan;8 LEDs
 Write_Max7219(0x0c, 0x01);       //power-down mode:0,normal mode:1
 Write_Max7219(0x0f, 0x00);       //test display:1;EOT,display:0
}

void setup()
{
  pinMode(Max7219_pinCLK,OUTPUT);
  pinMode(Max7219_pinCS,OUTPUT);
  pinMode(Max7219_pinDIN,OUTPUT);
  delay(50);
  Init_MAX7219();
}

void loop()
{ 
   for(j=0;j<10;j++)
  {
   for(i=1;i<9;i++)
    Write_Max7219(i,disp1[j][i-1]);
   delay(500);
  } 		
}
20130323-132251.jpg

Layout dei piedini di Arduino che mostrano dove si trovano i collegamenti SPI. Anche il connettore ICSP dispone di tale interfaccia ad eccezione del piedino SS

About these ads

Azioni

Informazione

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

%d blogger cliccano Mi Piace per questo: