Inserire la matrice, matrice di LED che è! Crea il tuo molto proprio light up display a LED con Arduino

Un singolo LED può essere utile nel test Arduino progetti. Ma quando si aggiunge una matrice di LED, è possibile ottenere davvero creativo, ortografia lettere, numeri e simboli. È anche un modo pratico per imparare come funzionano i display più complessi, come quello che stai leggendo. In questa guida, ti mostreremo come impostare una matrice di LED 8×8 di base.

Come funzionano le matrici LED

Una matrice LED di base come quella che useremo presenta una griglia di LED 8×8 che può essere utilizzata per disegnare caratteri, immagini di base e altro ancora. Nelle guide precedenti, abbiamo mostrato come Arduino può controllare un singolo LED. Questo componente estende questo concetto su una serie di 64 LED che possono essere controllati con un singolo Arduino.

 Piccolo display a LED a matrice di punti di HP

Matrice di LED

In una matrice di LED, una corrente viene eseguita attraverso file di LED. Per completare il circuito e attivare una singola luce, una colonna è collegata a terra. Dove le linee di alimentazione e di terra si intersecano, i LED sono attivati. Si può pensare ad esso un po ‘ come il gioco da tavolo Battleship. Ad esempio, se l’alimentazione viene eseguita sulle righe A, B e C, ma solo la colonna 1 è collegata a terra, le luci di A1, B1 e C1 si accenderanno. Il resto rimarrà al buio.

Questo è un modo pratico per accendere più LED contemporaneamente, ma crea un problema se si desidera accendere solo determinati LED in una colonna. Diciamo, invece, che volevi le luci A1, B2 e C3 per illuminare creando una linea diagonale. L’attivazione di tutte e tre le righe e le colonne accenderebbe l’intera griglia, che non è ciò che vogliamo.

Per risolvere questo problema, un Arduino può funzionare attraverso un ciclo, attivando solo una singola fila di LED alla volta. In questo modo, è possibile attivare tutte le colonne che si desidera senza influenzare la riga successiva. Senza una lunga funzione delay (), le righe verranno attivate in una successione così rapida che l’occhio umano non sarà in grado di dirlo. Ma vi mostreremo come aggiungere un ritardo in modo da poter vedere come funziona comunque.

Cosa ti serve

Stiamo usando un metodo più complicato per controllare la matrice di LED per scopi didattici – altri componenti possono ridurre il numero di pin richiesti – e quindi questo richiederà un bel po ‘ più di pin e fili rispetto alla maggior parte delle nostre altre guide. Per questo motivo, useremo un Arduino Mega 2560, invece del solito Arduino Uno, per controllare questa matrice. Avrai anche bisogno di quanto segue:

Arduino Mega 2560 Arduino Mega 2560
8×8 Matrice di LED 8x8 a Matrice di LED
8 x resistenza da 220ohm

la Maggior parte dei Led si brucia se li si collega direttamente all’uscita di 5V di Arduino. Posizionare un resistore dal kit tra il pin di uscita e il LED.

8 x resistenza da 220ohm
Un paio di breadboards Un paio di breadboards
IDE di Arduino IDE di Arduino

Avrete anche bisogno di un cavo USB e un bel paio di fili – almeno 32!

Esistono diversi modi per organizzare il cablaggio per questo progetto, ma poiché può diventare complesso, si consiglia di utilizzare una coppia di breadboard agganciate insieme, una per gestire la matrice di LED e un’altra per il cablaggio nei resistori. È possibile realizzare la stessa cosa usando fili con estremità femminili che corrono verso la matrice LED, anche se sarà seduto di lato invece che stazionario, il che può essere un po ‘ più ingombrante.

Il codice

Il codice per questo progetto farà uso di loop e array per scrivere ogni LED singolarmente. Il risultato sarà un array nella parte superiore dello script che è possibile modificare facilmente per modificare l’immagine visualizzata dalla matrice di LED. Innanzitutto, incolla il codice completo nell’IDE Arduino e caricalo sul tuo Arduino Mega.

1
2
3
4
5
6
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
35
36
37
38
39
40
41
42
43

int toDisplay = {
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,1,0},
{1,0,0,0,0,0,0,0},
{1,1,1,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0}
};
void setup() {
for (int i=2; i<=9; i++) {
pinMode(i, OUTPUT);
pinMode(i+44, OUTPUT);
digitalWrite(i, LOW);
digitalWrite(i+44, ALTA);
}
pinMode(A0, INGRESSO);
}
void loop() {
for (int i=0; i<8; i++) {
se (mi==0) {
digitalWrite(9, BASSO);
}
else {
digitalWrite(i+1, BASSO);
}
for (int j=0; j<8; j++) {
se (toDisplay == 1) {
digitalWrite(j+46, BASSO);
}
else {
digitalWrite(j+46, ALTA);
}
}
digitalWrite(i+2, HIGH);
ritardo(1);
}
}

a quel punto, camminiamo attraverso come ciascuna di queste sezioni di lavoro.

1
2
3
4
5
6
7
8
9
10

int toDisplay = {
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,1,0},
{1,0,0,0,0,0,0,0},
{1,1,1,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0}
};

Prima di uno dei loop principali nello schizzo, questo array multidimensionale definirà quali LED devono essere accesi e quali devono rimanere scuri. Ci sono otto file di otto valori ciascuna, che corrispondono alle otto file di LED sulla matrice. Disponendoli in una griglia nello schizzo, rende più facile visualizzare la forma che i LED comporranno.

1
2
3
4
5
6
7
8
9

void setup() {
for (int i=2; i<=9; i++) {
pinMode(i, OUTPUT);
pinMode(i+44, OUTPUT);
digitalWrite(i, LOW);
digitalWrite(i+44, ALTA);
}
pinMode(A0, INPUT);
}

Nella sezione setup() inizializzeremo i pin necessari per la matrice. Poiché ci sono sedici diversi pin, possiamo farlo in modo più efficiente di uno alla volta. I perni che corrono a terra saranno collegati ai perni da 2 a 9. I pin che inviano energia alla matrice verranno eseguiti sui pin da 46 a 53. Questa sezione utilizzerà un ciclo per inizializzare entrambi i set di pin.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

void loop() {
for (int i=0; i<8; i++) {
se (mi==0) {
digitalWrite(9, BASSO);
}
else {
digitalWrite(i+1, BASSO);
}
for (int j=0; j<8; j++) {
se (toDisplay == 1) {
digitalWrite(j+46, BASSO);
}
else {
digitalWrite(j+46, ALTA);
}
}
digitalWrite(i+2, HIGH);
ritardo(1);
}
}

Nel main loop() sezione di disegno, c’è un multi-step loop. La prima istruzione if ripristinerà l’ultima riga utilizzata su LOW, il che impedirà alla potenza di fluire su di essa.

Il prossimo ciclo for nidificato controllerà i dati nell’array. Se una cella è elencata come 1, imposterà il filo di terra per quella colonna su BASSO, consentendo alla corrente di fuoriuscire. Altrimenti imposterà il pin su ALTO che impedirà il completamento di un circuito lungo quella colonna. Lo farà per tutte le otto celle in una data riga.

Infine, l’ultima istruzione digitalWrite () attiverà l’intera riga. Qualsiasi colonna impostata su BASSA si accenderà. Il resto rimarrà al buio. Quando lo schizzo scorre di nuovo, inizierà immediatamente spegnendo quella riga.

L’ultimo comando è un’istruzione delay () che imposta il ritardo tra ogni riga. È impostato su 1 millisecondo nel nostro esempio perché quando l’istruzione non è presente, i LED diventano un po ‘ troppo fiochi. Tuttavia, è possibile aumentare il ritardo per vedere cosa sta facendo lo schizzo più lentamente. Si dovrebbe vedere ogni riga si accendono uno alla volta, prima di spegnere come la riga successiva si accende.

Il cablaggio

Per questo progetto, il cablaggio è relativamente semplice, c’è solo un sacco di esso. Poiché ci sono molti pin, descriveremo cosa si vuole fare per ogni circuito completo, piuttosto che elencare ogni singolo filo come facciamo di solito.

I pin da 2 a 9 dovrebbero essere i pin di alimentazione e i pin da 46 a 53 dovrebbero essere i pin di terra. Esegui un filo dal pin di alimentazione, alla matrice di LED (controlla per maggiori dettagli su quali pin qui sotto – questo è importante), dalla matrice di LED in un resistore da 220 ohm, quindi esegui un filo su un pin su Arduino. Il pin 2 dovrebbe eventualmente portare al pin 46, il pin 3 dovrebbe portare al pin 47 e così via.

La complicazione principale qui è con la matrice di LED stessa. Controintuitivamente, i pin su entrambi i lati della matrice non sono affatto in un ordine coerente. Ad esempio, vogliamo pin 2 per alimentare ciò che chiameremo riga A. Eppure il pin per questo è il quarto pin da sinistra sulla parte superiore della matrice di LED. L’altra estremità di questo circuito – che dovrebbe portare alla colonna 1 – è il primo perno a destra nella parte inferiore della matrice.

Poiché questo ordine è piuttosto complicato, spiegheremo quali pin sulla matrice devono essere collegati direttamente a ciascun pin Arduino.

Lungo la parte superiore della matrice (il lato con il numero stampato su di esso) ci sono otto pin. Da sinistra a destra, questi devono essere collegati i seguenti pin su Arduino:

  • Pin 7
  • Pin 4
  • Pin 49
  • Pin 2
  • Pin 51
  • Pin 52
  • Pin 3
  • Pin 5

a quel punto, la riga inferiore di otto vie della matrice (il lato senza numero) deve essere collegato ai seguenti pin (da sinistra a destra, con i numeri ancora rivolto verso l’alto):

  • Pin 9
  • Pin 50
  • Pin 48
  • Pin 6
  • Pin 53
  • Pin 8
  • Pin 47
  • Pin 46

una Volta che tutti i fili sono collegati, è possibile accendere il progetto e vedrai matrice di LED si accendono. Prova a cambiare la disposizione di 1s nell’array iniziale e carica nuovamente lo script per creare forme diverse. È inoltre possibile regolare la lunghezza del comando delay() per vedere ogni riga illuminarsi una alla volta.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.