Salve a tutti,
sto usando la libreria:
https://www.pjrc.com/teensy/td_libs_Matrix.html
per controllare un display 8x8, ma c'è un problema:
Prendendo come riferimento l'esempio:
ed accendendo i singoli led con il comando:
myMatrix.write (X, Y, HIGH);
Se accendo i LED della "riga 7" si accendono i LED della "riga 0" mentre se accendendo i LED della "riga 0" si accendono i LED della "riga 7", quasi come se la matrice sul display fosse shiftata di un +1.
Ho usato questo semplice codice (preso dagli esempi della libreria):
#include <Sprite.h>
#include <Matrix.h>
Matrix myMatrix = Matrix(8, 10, 9);
void setup ()
{
myMatrix.clear();
myMatrix.write (0,0, HIGH); //1
delay (1000);
myMatrix.write (0,7, HIGH ); //2
delay (1000);
myMatrix.write (7,0, HIGH ); //3
delay (1000);
myMatrix.write (7,7, HIGH) ; //4
delay (1000);
}
void loop()
{
}
Questo codice "dovrebbe" accendere i led nei quattro angoli:
Invece mi accende i due LED degli angoli in alto, e poi quelli immediatamente sotto:
Per far accendere i LED dei quattro angoli devo usare il codice:
myMatrix.clear();
myMatrix.write (0,0, HIGH); //1
delay (1000);
myMatrix.write (0,7, HIGH ); //2
delay (1000);
myMatrix.write (1,0, HIGH ); //3
delay (1000);
myMatrix.write (1,7, HIGH) ; //4
delay (1000);
Analizzando il codice dell'esempio "sprite_animation":
ho notato che per far scorrere lo sprite sul display, viene usato un doppio sprite:
myMatrix.write (0,0, wave) // place sprite on screen
myMatrix.write (x-8,2, wave) // place sprite again, elsewhere on screen
Effettivamente lo sprite "myMatrix.write(x - 8, 2, wave);" viene translato di 8 posizioni per accendere correttamente tutta la matrice, ma come mai? E' lo stesso problema rilevato in questo post:
http://wiring.org.co/cgi-bin/yabb/YaBB.pl?num=1126118886/26#26
Come mai? come si può risolvere questo problema nella matrice?
Usando una libreria diversa, ad esempio la LedControl:
http://playground.arduino.cc//Main/LedControl
La matrice si comporta correttamente. Ma per me che sono alle prime armi è più semplice (o almeno ho trovato molto più semplice) utilizzare matrix.h e sprite.h e non la LedControl.
Questo un video per spiegare meglio l' "anomalia":
Grazie a tutti
Luc@