Το Arduino UNO R4 WiFi διαθέτει ενσωματωμένο ένα μικρό αλλά ιδιαίτερα χρήσιμο LED Matrix 12×8, δηλαδή μια μήτρα από LEDs αποτελούμενη από 12 στήλες και 8 γραμμές, συνολικά 96 ανεξάρτητα σημεία LED, που μπορούμε να το προγραμματίσουμε μέσω της βιβλιοθήκης: Arduino_LED_Matrix. Κάθε LED μπορεί να βρίσκεται σε δυο βασικές καταστάσεις: ΟΝ (1) και OFF (0).
Το matrix μπορεί να χρησιμοποιηθεί για την εμφάνιση: συμβόλων, αριθμών, γραμμάτων, εικονιδίων, γραφικών, animations, μετρήσεων αισθητήρων, μηνυμάτων, απλών παιχνιδιών.
Η βιβλιοθήκη Arduino_LED_Matrix
Για τον προγραμματισμό του ενσωματωμένου matrix χρησιμοποιούμε τη βιβλιοθήκη: Arduino_LED_Matrix. Στην αρχή του προγράμματος γράφουμε:
#include “Arduino_LED_Matrix.h”
και στη συνέχεια δημιουργούμε ένα αντικείμενο:
ArduinoLEDMartix martix;
Ένα βασικό πρόγραμμα είναι:
#include “Arduino_LED_Martix.h” // εισαγωγή της αναγκαίας βιβλιοθήκης
ArduinoLEDMartix martix; // δημιουργία του αντικειμένου matrix
void setup(){
martix.begin(); // αρχικοποίηση του αντικειμένου
}
void loop(){
}
Η εντολή martix.begin(); αρχικοποιεί το LED Matix. Για την εμφάνιση των εικονιδίων μπορεί να χρησιμοποιηθεί η συνάρτηση:
martix.renderBitmap(bitmap, 8, 12); όπου bitmap ένας πίνακας 8Χ12 με τιμές 0 και 1.
Παράδειγμα: δημιουργία εικονιδίου καρδιάς
Ένα κλασικό παράδειγμα για LED matrix είναι μια καρδιά, που προβάλεται όπως στον ακόλουθο κώδικα. Εδώ χρησιμοποιούμε την συνάρτηση renderBitmap(bitmap, rows, columns); για την προβολή του εικονιδίου.
#include “Arduino_LED_Martix.h”
ArduinoLEDMartix martix;
byte heart[8][12] = { // δημιουργία του εικονιδίου καρδιάς
{0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 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, 0}
};
void setup(){
martix.begin();
matrix.renderBitmap(heart, 8, 12); // προβολή του εικονιδίου
}
void loop(){
}
Αυτός ο τρόπος είναι εύκολα κατανοητός, επειδή κάθε 0 ή 1 αντιστοιχεί σε ένα LED, σβηστό ή αναμμένο αντίστοιχα.
Σβήσιμο του Matrix
Για να σβήσουμε όλα τα LEDs μπορούμε να εμφανίσουμε ένα bitmap γεμάτο μηδενικά.
byte blank[8][12] = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
;
και εισάγωντας την συνάρτηση:
matrix.renderBitmap(blank, 8, 12};
Ένας απλός τρόπος για να καθαρίσουμε την εικόνα είναι με τη συνάρτηση:
matrix.clear( );
η οποία σβήνει την τρέχουσα εικόνα. Για παράδειγμα μπορούμε να δημιουργήσουμε το εφέ ανασβοσβήματος:
#include “Arduino_LED_Martix.h” // εισαγωγή της αναγκαίας βιβλιοθήκης
ArduinoLEDMartix martix; // δημιουργία του αντικειμένου matrix
byte heart[8][12] = { // δημιουργία του εικονιδίου καρδιάς
{0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 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, 0}
};
void setup(){
martix.begin();
}
void loop(){
matrix.renderBitmap(heart, 8, 12); // προβολή του εικονιδίου
delay(300);
matrix.clear( ); // καθάρισμα του LED matrix
delay(300);
}