Approfondiamo il mondo di Arduino UNO R4 WiFi e la sua matrice LED integrata. Scopriamo le varie tecniche per il suo controllo, come creare animazioni, grafiche o persino giochi. L'Arduino UNO R4 WiFi presenta una matrice LED integrata di 12x8, che può essere programmata per visualizzare grafiche, animazioni, funzionare come interfaccia o persino giocare.
Configurazione della matrice LED dell'Arduino UNO R4 WiFi
La matrice e la sua API sono progettate per essere programmate in diversi modi, ciascuno adatto per differenti applicazioni.Hardware e Software Necessari
- Arduino UNO R4 WiFi
- UNO R4 Core (ultima versione)
- Arduino IDE
Inizializzazione della Matrice
#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matrix;
void setup() {
Serial.begin(115200);
matrix.begin();
}Creazione di un Frame
Un frame è ciò che chiamiamo l'"immagine" che viene visualizzata in un dato momento sulla matrice. Se un'animazione è una serie di immagini, un frame è una di queste immagini nella serie. Un frame può essere creato in diversi modi, e puoi scegliere il metodo più semplice per la tua applicazione.Frame tramite Array di Integers
La maggior parte delle volte, creerai un array che contiene il frame in tre interi a 32 bit. Un frame di questo tipo è difficile da interpretare per una persona, ma è efficiente e quindi la scelta migliore se stai creando animazioni o grafiche per visualizzare gli stati di un programma o interfacce.const uint32_t heart[] = {
0x3184a444,
0x44042081,
0x100a00405
}; Se hai diversi frame differenti, puoi caricarli e visualizzarli in questo modo: const uint32_t happy[] = {
0x19819,
0x80000001,
0x81f80005
};
const uint32_t heart[] = {
0x3184a444,
0x44042081,
0x100a004011
};
matrix.loadFrame(happy);
delay(500);
matrix.loadFrame(heart);
delay(500); Frame tramite Array di Bit Individuali Potresti anche rappresentare il tuo frame con un array di bit individuali, dove ogni pixel è rappresentato da un bit e può essere accessibile attraverso la sua riga e colonna. Questo metodo è una buona scelta se devi generare frame direttamente all'interno di uno sketch, ad esempio se stai realizzando un gioco. uint8_t frame[8][12] = {
{ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 },
{ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
}; In questo caso, il frame rappresenta un cuore. I "1" rappresentano i LED che saranno accesi, mentre gli "0" rappresentano i LED che saranno spenti. Per caricare e visualizzare questo frame, faremo: matrix.loadFrame(frame); delay(500);
Creazione di Animazioni
Le animazioni sono create semplicemente avendo una serie di frame e passandoli alla matrice in successione. Ricorda che più rapidamente cambi frame, più fluida sarà l'animazione.const uint32_t heart[] = {
0x3184a444,
0x44042081,
0x100a00405
};
const uint32_t happy[] = {
0x19819,
0x80000001,
0x81f80005
};
void loop() {
matrix.loadFrame(happy);
delay(200);
matrix.loadFrame(heart);
delay(200);
}