Pages: 1 [2] 3   Go Down
Author Topic: matrice 8x8 sensore dht22  (Read 2403 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Fino a qui ci siamo, ora sapendo che i pin reali sono questi https://www.dropbox.com/s/6j75hbt0o1w9lks/8x8matrix.gif come faccio per disegnare un simil smile ? ho provato ma la presunta bocca mi viene così https://www.dropbox.com/s/9e3h5ek9fqxhly1/arduino.jpg.
« Last Edit: March 18, 2013, 06:20:42 pm by rewam » Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley Ok un esempio di algoritmo per fare questo ?
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

leo  smiley-confuse ma se ti chiedessi di farmi un esempio di sketch  smiley, te ne sarei veramente grato.
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Code:
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!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nessuno che riesca a spiegarmi in maniera semplice come visualizzare dei caratteri su una matrice 8x8 in direct drive da Arduino ?
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il codice del link che ti ho passato ti funziona o no? L'hai provato?
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma hai provato a scrivere un semplice codice composto da 2 for annidati, in cui nel primo attivi 1 anodo e poi nel secondo cicli fra gli 8 led di quella riga ti funziona?

Tipo così:
Code:
void loop() {
  for (byte i = 0; i < 8; i++) {
    digitalWrite(rows[i], HIGH); //controlla i tuoi collegamenti
    for (byte j = 0; j < 8; j++) {
      digitalWrite(cols[j], LOW);
      delay(250);
      digitalWrite(cols[j], HIGH);
    }
    digitalWrite(rows[i], LOW);
  }
}

PS:
nel setup() metti tutti gli anodi su LOW e tutti i catodi su HIGH, almeno non scorre corrente (nel verso contrario i led non conducono, sono diodi).
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie adesso ho visto come accendere i led separatamente  smiley ! ma ancora non riesco a scrivere uno sketch per disegnare una "A" sulla matrice , ho provato a modificare lo sketch dell'esempio DirectDrive ma non riesco a farlo ! Devo semplicemente disegnare sulla matrice la temperatura che viene letta dal sensore.
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie adesso ho visto come accendere i led separatamente  smiley ! ma ancora non riesco a scrivere uno sketch per disegnare una "A" sulla matrice , ho provato a modificare lo sketch dell'esempio DirectDrive ma non riesco a farlo ! Devo semplicemente disegnare sulla matrice la temperatura che viene letta dal sensore.
Dai un pò di impegno  smiley-wink
Hai il codice già fatto per accendere un led per volta.
Modifica quel codice per accendere 1 led per volta in maniera molto veloce (togli il delay) costruendo una lettera "A" partendo da una matrice 8x8 in cui hai memorizzato scomposta in bit la lettera.
Trasforma in matrice qualcosa del genere:
Code:
11100111
11000011
10011001
10011001
10000001
10011001
10011001
11111111
E poi quando sei nel secondo for scansioni la riga interessata e metti sul pin il valore della cella (1 sta per HIGH, 0 sta per LOW).

Ora al lavoro e torna quando ci sei riuscito  smiley-wink
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ci sono ancora riuscito  smiley-red.
Logged

Marche
Offline Offline
Edison Member
*
Karma: 34
Posts: 2276
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E' una matrice ad anodo comune (lo vedi bene dalla ROW 8, dove tutti gli anodi dei led sono agganciati insieme).

Non è del tutto esatto. Non si può dire che la matrice è ad anodo comune perchè anche i catodi sono collegati in comune smiley-wink
Logged

Pages: 1 [2] 3   Go Up
Jump to: