Se vuoi usare meno pin per collegare la matrice 8x8 devi usare degli integrati shift register
http://www.cooking-hacks.com/index.php/blog/tutorial-arduino-led-matrix-74ch595
http://www.insidegadgets.com/2010/11/07/fun-with-8x8-led-matrix/
OK ultimo help ;).
posto parte di sketch
// array row numero pin:
const int rownum[8] = {
2,7,19,5,13,18,12,16};
//array column numero pin:
const int colnum[8] = {
6,11,10,3,17,4,8,9};
float timeCount = 0;
int h[8][8] = {
{0,0,1,1,0,1,1,1},
{0,0,1,0,1,0,1,0},
{0,0,1,0,0,0,1,0},
{1,1,1,1,1,1,1,0},
{0,0,1,1,1,1,1,0},
{0,0,1,0,0,0,1,0},
{0,0,1,0,0,0,1,0},
{0,0,1,0,0,0,1,0}};
int e[8][8] = {
{0,0,1,1,1,1,1,0},
{0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,1,0},
{0,0,0,0,1,1,1,0},
{0,0,0,0,1,1,1,0},
{0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,1,0},
{0,0,1,1,1,1,1,0}};
int l[8][8] = {
{0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,1,0},
{0,0,1,1,1,1,1,0}};
int o[8][8] = {
{0,0,0,1,1,1,0,0},
{0,0,1,0,0,0,1,0},
{0,0,1,0,0,0,1,0},
{0,0,1,0,0,0,1,0},
{0,0,1,0,0,0,1,0},
{0,0,1,0,0,0,1,0},
{0,0,1,0,0,0,1,0},
{0,0,0,1,1,1,0,0}};
int smile[8][8] = {
{0,0,0,0,0,0,0,0},
{0,1,1,0,0,1,1,0},
{0,1,1,0,0,1,1,0},
{0,1,1,0,0,1,1,0},
{0,0,0,0,0,0,0,0},
{0,1,0,0,0,0,1,0},
{0,0,1,0,0,1,0,0},
{0,0,0,1,1,0,0,0}};
int blank[8][8] = {
{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}};
void setup() {
//Serial.begin(9600);
// initialize the I/O pins as outputs:
// iterate over the pins:
for (int thisPin = 0; thisPin < 8; thisPin++) {
// initialize the output pins:
pinMode(colnum[thisPin], OUTPUT);
pinMode(rownum[thisPin], OUTPUT);
// take the col pins (i.e. the cathodes) high to ensure that
// the LEDS are off:
digitalWrite(colnum[thisPin], LOW);
digitalWrite(rownum[thisPin], HIGH);
}
}
void loop() {}
come faccio per stampare sulla matrice la lettera "h" ? drawScreen(h); ?
nid69ita:
Se vuoi usare meno pin per collegare la matrice 8x8 devi usare degli integrati shift register
http://www.cooking-hacks.com/index.php/blog/tutorial-arduino-led-matrix-74ch595
Fun with 8×8 LED Matrix « insideGadgets
Se vuoi usare meno piedini e non vuoi far fare il multiplexing al Arduino usa un MAX7219.
Ciao Uwe
Ma posso utilizzarlo anche così ?
il MAX7219 e' specifico per collegare una matrice di 8x8 Led.
Lo sketch che hai non va' bene, ma ci sono librerie apposite che semplificano la vita
ad esmpio la Ledcontrol LedControl
Grazie Brunello! avendo già tutto montato su uno shield non posso aggiungere un MAX7219, anche se uso più pin non mi importa.
Quello che volevo sapere e se qualcuno può spiegarmi in parole povere come faccio ad accendere un solo led e non un intera striscia.
Riuscendo a capire questo mi creerò le i miei valori da visualizzare sulla matrice.
Nessuno è disponibile per farmi capire come accendere un solo led :P.
Grazie.
Devi giocare con gli "incroci".
Mettiamo che la matrice sia del tipo ad anodo comune (non lo so che tipo è, non l'ho trovato riportato). Se dai corrente ad un anodo, accenderai i led della corrispondente fila che collegherai a massa. Se metti su HIGH il pin collegato all'anodo della prima fila e su LOW il pin che è collegato al catodo del 1° led, accenderai solo quel led. Ecc...
Se è del tipo a catodo comune, invece, mettendo su LOW il pin del catodo della prima fila, accenderai solo i led collegati ai pin a cui darai il segnale HIGH sul loro anodo
Ti riporto la Matrice.
Ho provato a fare i due tentativi che mi hai detto variando ho due risultati il primo che non si accende nulla il secondo e che si accende tutta la fila tranne il led in questione.
E' una matrice ad anodo comune (lo vedi bene dalla ROW 8, dove tutti gli anodi dei led sono agganciati insieme).
Nello schema ci sono anche i pin della matrice per cui viene bene un test.
Fai così. Metti su OUTPUT e HIGH il pin 9 della matrice e poi metti su OUTPUT e LOW il pin 13. Si deve accendere il led in alto a sinistra nello schema.
Perfetto! si accende, i pin non corrispondono a quelli dello schema deve essere dovuto alla shield. Quindi ora sapendo come accendere i led singolarmente posso disegnare il testo da visualizzare sulla matrice, lo so non sarà il modo migliore per scrivere uno sketch ma per iniziare può andare , che dici ?
hai qualche suggerimento da darmi ?
Fino a qui ci siamo, ora sapendo che i pin reali sono questi Dropbox - File Deleted - Simplify your life come faccio per disegnare un simil smile ? ho provato ma la presunta bocca mi viene così Dropbox - File Deleted - Simplify your life.
Creati dei motivi con 8 byte in formato bit. Esempio per uno smile:
00000000
01100110
01100110
00000000
01100110
00111100
00000000
Poi spedisci i singoli bit facendo un algoritmo che ti accende in sequenza i singoli bit, riga per riga.
Attenzione: NON accendere tutti i led di una stessa riga tutti insieme, ma sempre multiplexandoli uno ad uno. Già con 2 led accesi prelevi la corrente massima che un pin può erogare.
PS.
nel caso della tua foto, potrebbe darsi che la riga inferiore sia su un pin differente.
Ok un esempio di algoritmo per fare questo ?
Ti fai un array in cui metti i pin collegati alle righe ed uno in cui ci metti i pin collegati alle colonne.
Poi attivi 1 riga alla volta e successivamente attivi 1 led per volta in sequenza.
leo :~ ma se ti chiedessi di farmi un esempio di sketch :), te ne sarei veramente grato.
Ma ti avevo già passato un link che spiegava bene la cosa:
http://playground.arduino.cc/Main/DirectDriveLEDMatrix
Oltretutto lì hai il pilotaggio della matrice con un interrupt, per cui non avresti neanche bisogno di visualizzare i dati dal loop.
Altrimenti cerca "arduino led matrix 8x8" e ti vengono fuori un sacco di progetti.
Ho fatto due prove ma ancora non riesco a capire per quale motivo non vada. La Piedinatura dovrebbe essere come questa http://arduino.cc/en/Tutorial/RowColumnScanning eventualmente come faccio a sapere se è come questa o no ? dovrei trovare il datasheet ?
ho modificato lo sketch in questo modo
byte col = 0;
byte leds[8][8];
// pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1)
int pins[17]= {-1, 13, 12, 11, 10, 16, 17, 18, 19, 2, 3, 4, 5, 6, 7, 8, 9};
// col[xx] of leds = pin yy on led matrix
int cols[8] = {pins[6], pins[11], pins[10], pins[3], pins[17], pins[4], pins[8], pins[9]};
// row[xx] of leds = pin yy on led matrix
int rows[8] = {pins[2], pins[7], pins[19], pins[5], pins[13], pins[18], pins[12], pins[16]};
. Si accende tutto ma in modo disordinato senza creare nessuna lettera.
Come faccio a farlo funzionare ?
Grazie ancora!
Nessuno che riesca a spiegarmi in maniera semplice come visualizzare dei caratteri su una matrice 8x8 in direct drive da Arduino ?
Il codice del link che ti ho passato ti funziona o no? L'hai provato?
Si ho provato lo sketch del link , cambiando la posizione dei pin, ma mi accende in maniera disordinata i led senza disegnare niente. Come posso fare ? Vuoi che ti mandi il link dello sketch modificato ?