LED matrica 8×8


IAKO NAŠ ARDUINO IMA SVEGA 13 DIGITALNIH I 5 ANALOGNIH IZLAZA KORIŠTENJEM TEHNIKE MULTIPLEKSIRANJA MOŽEMO KONTROLIRATI 64 LED DIODE U OVOJ MATRICI

Arduinom možemo kontrolirati matricu od 64 LED diode korištenjem 16 pinova. LED diode povezane su u matrici tako da svaki od izvoda na matrici kontrolira ili jedan reda ili jedan stupac matrice.

To znači ako želimo na matrici uključiti krajnje lijevu LED-icu u prvom retku moramo na pin 9 matrice dovesti pozitivni napon( +5V) a na pin 13 matrice GND (0V).

Upozorenje: Kao što znamo, bilo koju LED diodu koju spajamo na Arduino moramo u seriju spojiti s otpornikom kako bi pinove Arduina zaštitili od prevelike struje (>50mA ) koja bi uništila pin. 

Prilikom spajanja matrice na Arduino na sve pinove koji predstavljaju redove (9,14,8,12,1,7,2,5) postaviti ćemo otpornike (vrijednosti između 200 i 400 ohma).

#define RED1 10
#define RED2 11
#define RED3 12
#define RED4 13
#define RED5 A5
#define RED6 A4
#define RED7 A3
#define RED8 A2

#define KOL1 2
#define KOL2 3
#define KOL3 4
#define KOL4 5
#define KOL5 6
#define KOL6 7
#define KOL7 8
#define KOL8 9
byte mask = 10000000;
const byte redovi[] = {RED1, RED2, RED3, RED4, RED5, RED6, RED7, RED8};
const byte kolone[] = {KOL1, KOL2, KOL3, KOL4, KOL5, KOL6, KOL7, KOL8};
// *****************************************************************************************
// LIKOVI ZA PRIKAZ
//  (1 = ON, 0 = OFF) 
byte veseli[] = {B11111111,
                 B10000001,
                 B10100100,
                B10000000,
                B10011000,
                B11000010,
                B10111100,
                B10000000,
               };
byte obicni[] = {B11111111,B10000001,B10100101,B10000001,B10000001,B10111101,B10000001,B11111111};
byte ljuti[] = {B11111111,B10000001,B10100101,B10000001,B00000000,B00111100,B01000010,B00000000};
byte slovoa[]={B00011000,B00111100,B01100110,B01100110,B01111110,B01111110,B01100110,B01100110};
byte slovoc[]={B00000000,B00000000,B00000000,B00111111,B00110000,B00110000,B00000000,B00000000};
byte prazno[]={B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000};
byte slovos[]={B01111110,B01111110,B01100000,B01111110,B01111110,B00000010,B01111110,B01111110};
byte slovor[]={B01111100,B01111100,B01100110,B01100110,B01111000,B01111100,B01101100,B01100110};
byte slovoe[]={B01111110,B01111110,B01100000,B01111110,B01111110,B01100000,B01111110,B01111110};
byte slovot[]={B01111110,B01111110,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000};
byte slovon[]={B01100110,B01100110,B01110110,B01111110,B01111110,B01101110,B01100110,B01100110};
byte slovob[]={B01111100,B01111110,B01100110,B01111110,B01111110,B01100110,B01111110,B01111100};
byte slovoo[]={B00111100,B01111110,B01100110,B01100110,B01100110,B01100110,B01111110,B00111100};
byte slovozz[]={B00100100,B00011000,B01111110,B01111100,B00011000,B00110000,B01111110,B01111110};
byte slovoi[]={B00011000,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000};
byte slovocc[]={B00000100,B00001000,B01111110,B01111110,B01100000,B01100000,B01111110,B01111110};
float brojacVremena = 0;

void setup() {
   
    Serial.begin(9600);
    for (byte i = 2; i <= 13; i++)
    pinMode(i, OUTPUT);
    pinMode(A5, OUTPUT);
    pinMode(A4, OUTPUT);
    pinMode(A3, OUTPUT);
    pinMode(A2, OUTPUT);
}


void loop() {

slovo (slovos);
slovo (slovor);
slovo (slovoe);
slovo (slovot);
slovo (slovoa);
slovo (slovon);
slovo (prazno);
slovo (slovob);
slovo (slovoo);
slovo (slovozz); 
slovo (slovoi);
slovo (slovocc);
slovo (prazno);
}

void slovo(String naziv){
   for (int vrijeme=0;vrijeme<30;vrijeme++){ 
    for (byte i = 0; i<8; i++) 
      {
         digitalWrite(kolone[i], HIGH);                  
            for (int q = 0; q<8; q++)       
                    {              
                     if (~naziv[q] & mask)
                            { 
                             digitalWrite(redovi[q],HIGH);
                            }
                              else
                             { 
                              digitalWrite(redovi[q],LOW);
                             }
                   }
              mask= mask >>1; 
                          
     delay (2); 
     digitalWrite(kolone[i], LOW);  
     delay (1);   
     }   
   mask=10000000;  
   }
}