Arduino8x8 LED Matrix

De 8x8 LED matrix is een matrix waarin in een en dezelfde component 8x8 = 64 LEDs zitten. De 8x8 slaat op het aantal rijen (8 stuks) en op het aantal kolommen (8 stuks). Precies evenveel als op een schaakbord.

Aan de achterkant zitten 2 rijtjes van 8 pinnetjes. We weten inmiddels dat om een LED aan te sluiten we 2 aansluitpunten nodig hebben (een plus en een min). Aangezien we hier 64 LEDs hebben, verwacht je ook 64 x 2 (plus/min) = 128 aansluitpunten aan de achterkant. Helaas, we moeten het doen met de 2 rijtjes van 8 pins.

De naam matrix geeft het eigenlijk al een beetje weg. De matrix. Volgens Wiki is een Matrix vanuit de wiskunde een rechthoek van nummers. Hier hebben we het niet over nummertjes we hebben het over LED's. Dus hier moet je denken aan een array van LEDjes.

In deze matrix staat er op ieder kruispunt van lijnen een LED. Net als bij het schaken waar je een vakje aangeeft met C4 kun je dat hier ook. Je kunt een LED aangeven met de naam van de rij (R) en de naam van de kolom (column in het Engels, dus de C).

Het LEDje in deze matrix staat dus op rij R3 en in kolom C6. Het LEDje linksboven in de hoek is op rij R1 en kolom C1 en het LEDje rechtsonderin in de matrix is op rij R8 en kolom C8.



ArduinoAansluitingen

Omdat het leven nu eenmaal vol verrassingen zit, heeft men er niet voor gekozen om de aansluitingen op deze heel logische manier te doen. Neen, men heeft een andere manier gekozen. Deze is het best te vergelijken met alle aansluitingen in een grabbelton te doen. En hieruit willekeurig de aansluitingen te halen. En dan op alle punten waar het er op leek dat er toch een logisch geheel zou kunnen komen deze er nog even handmatig compleet uit te verwijderen. Het resultaat is een vrij mooi stukje complete onoverzichtelijke chaos.

We zullen het er echter mee moeten doen. Om het vakje linksboven aan te kunnen sturen moeten we dus op de bovenste rij de 8e lijn (R1 hebben en ook bovenin de 4 kolom (C1).

Aan een zijde van de LED staat een code. Als je de LED voor je hebt liggen dan moet deze codering van je af wijzen (bovenaan). Dan kun je onderstaande Fritz gebruiken.



ArduinoBreadboard


ArduinoSource code
/*
  8x8 LED walking

  (C) copyright www.punthooft.nl 2019
*/

#define ROW_1 2
#define ROW_2 3
#define ROW_3 4
#define ROW_4 5
#define ROW_5 6
#define ROW_6 7
#define ROW_7 8
#define ROW_8 9

#define COL_1 10
#define COL_2 11
#define COL_3 12
#define COL_4 13
#define COL_5 A0
#define COL_6 A1
#define COL_7 A2
#define COL_8 A3

// Constants
const byte rows[] = { ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7, ROW_8 };
const byte cols[] = { COL_1,COL_2, COL_3, COL_4, COL_5, COL_6, COL_7, COL_8 };

// Variables
int delayCounter;			// Controls the refresh rate
int row;					// Contains the current row
int col;					// Contains the current col

// Setup function runs once when powerup the board and on reset 
void setup() {
 
  delayCounter = 0;
  row = 0;
  col = 0;
}

// The loop function runs over and over again forever
void loop() {

	delayCounter++;
	delay(1);
	if (delayCounter>50) {
		delayCounter=0;

		col++;
		if(col>7) {
			row++;
			col=0;

			if(row>7) {
				row=0;
			}
		}
	}

	displayAt(row,col);
}

// Function to lightup the LED at row, col position
void displayAt(int x,int y) {

	// Activate the row/column as output and put power on them
	pinMode(cols[y],OUTPUT);
	pinMode(rows[x],OUTPUT);
	digitalWrite(cols[y], HIGH);
	digitalWrite(rows[x], HIGH);

	// Wait a ultra little bit
	delayMicroseconds(25);

	// Deactivate power and reset the row/column
	digitalWrite(cols[y], LOW);
	digitalWrite(rows[x], LOW);
	pinMode(cols[y],INPUT);
	pinMode(rows[x],INPUT);
}


ArduinoOpmerkingen

Zie ook de volgende projecten waarin we de 8x8 Matrix gebruiken.



Copyright 2019 www.punthooft.nl
We do not collect cookies for advertisement. Your data is never send to third parties.