pugliasos newlogoDEF

Orario della segreteria: tutti i martedì, dalle ore 17 alle 19, su appuntamento.

Useremo 3 metodi per creare o rappresentare una Matrice LED :

  1. mediante un array bidimensionale di byte

  2. con 3 vettori di numeri binari

  3. con 3 vettori di numeri esadecimali

 

1. Creare un bitmap LED per LED

 

0

1

2

3

4

5

6

7

8

9

10

11

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

2

0

0

0

0

0

0

0

0

0

0

0

0

3

0

0

0

0

0

0

0

0

0

0

0

0

4

0

0

0

0

0

0

0

0

0

0

0

0

5

0

0

0

0

0

0

0

0

0

0

0

0

6

0

0

0

0

0

0

0

0

0

0

0

0

7

0

0

0

0

0

0

0

0

0

0

0

0

 

Un cuore nel bitmap

0

1

2

3

4

5

6

7

8

9

10

11

0

0

1

1

0

0

0

1

1

0

0

0

1  

0

1

1

1

1

0

1

1

1

1

0

0

2

0

1

1

1

1

1

1

1

1

1

0

0

3

0

0

1

1

1

1

1

1

1

0

0

0

4

0

0

0

1

1

1

1

1

0

0

0

0

5

0

0

0

0

1

1

1

0

0

0

0

0

6

0

0

0

0

0

1

0

0

0

0

0

0

7

0

0

0

0

0

0

0

0

0

0

0

0

 

Il codice 1

#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matriceLED; //creiamo una istanza
byte cuoreBit[8][12] = { // 96 byte
{ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
void setup() {
  matriceLED.begin();
  matriceLED.renderBitmap(cuoreBit, 8, 12);
}
void loop() {
}
È necessario applicare all'oggetto matriceLED il metodo renderBitmap(cuoreBit, 8, 12) per vedere l'immagine statica (fotogramma) del cuore su di esso. Il metodo renderBitmap accetta un array di elementi booleani in cui ciascun elemento corrisponde ad un singolo pixel.2

Lampeggio nei vertici della matrice

L'indirizzo di un elemento della matrice è costituito dal nome della matrice seguito dalla riga e colonna di appartenenza ciascuna racchiusa in una parentesi quadra; ad esempio

  nomeMatrice [2][4]

è l'indizzo del LED che si trova all'incrocio della terza riga con la quinta colonna.

Per cui la scrittura nel codice di:

  nomeMatrice [2][4] = 0

determina lo spegnimento del LED in questione, mentre:

   nomeMatrice [2][4] = 1

la sua accenzione.

Ciò premesso,

  • Scrivere il codice che faccia lampeggiare i vertici del rettangolo matriceLED.

Una possibile soluzione:

#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matriceLED;
uint8_t frame[8][12];
void setup() {
  matriceLED.begin();
}
void loop() {
  frame[0][0] = 1;
  frame[0][11] = 1;
  frame[7][0] = 1;
  frame[7][11] = 1;
  matriceLED.renderBitmap(frame, 8, 12);
  delay(1000);
  frame[0][0]=0;
  frame[0][11]=0;
  frame[7][0]=0;
  frame[7][11]=0;
  matriceLED.renderBitmap(frame, 8, 12);
  delay(1000);
}
  • Se nel loop dovessimo inserire una renderizzazione con una pausa dopo ogni singola variazione della matrice, cosa otterremmo? Perchè?

Un partecipante all'incontro ha voluto incrociare i due precedenti programmi:

#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matriceLED; 
byte frame[8][12] = { // 96 byte
{ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
void setup() {
  matriceLED.begin();
  matriceLED.renderBitmap(frame, 8, 12);
}
  void loop() {
  frame[0][0] = 1;
  frame[0][11] = 1;
  frame[7][0] = 1;
  frame[7][11] = 1;
  matriceLED.renderBitmap(frame, 8, 12);
  delay(1000);
  frame[0][0]=0;
  frame[0][11]=0;
  frame[7][0]=0;
  frame[7][11]=0;
  matriceLED.renderBitmap(frame, 8, 12);
  delay(1000);
}

________________________________________________________

Note

1https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix/

2 ll rendering (letteralmente restituzione grafica), italianizzato come renderizzazione, identifica la generazione di una immagine

Save
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Read more
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Accept
Decline