Pages: [1] 2 3   Go Down
Author Topic: matrice 8x8 sensore dht22  (Read 1750 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

Salve, ho acquistato da poco dei componenti per costruire un sensore di umidità/temperatura, i componenti in questione sono : Arduino Uno Rev3 , Dht22 , Led Matrix shield 8x8 e un display 20x4 rgb. Ora il primo prototipo assemblato utilizzava il display 20x4 rgb con la possibilità di variare il colore in base ai dati ma il tutto doveva essere contenuto in una scatola troppo grossa per essere trasportata comodamente, così ho deciso di utilizzare il led matrix shield ,precisamente questo http://openmicros.org/index.php/articles/88-ciseco-product-documentation/186-led-matrix-shield-pictorial-build-guide-for-beginners.
Ora sorgono due problemi :
1) Come visualizzare i dati su questa matrice ? Non avendo un driver non riesco a risolvere il problema.
2)il led matrix shield mi lascia liberi solo i pin digitali 0 e 1 e i pin analogici A0 e A1, quindi il problema è dove collegare il sensore , ovvero posso collegare il sensore su un pin analogico visto che i pin digitali 0 e 1 servono per il collegamento al PC?

Grazie.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21669
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

1) Come visualizzare i dati su questa matrice ? Non avendo un driver non riesco a risolvere il problema.
Non servono driver ma doti di programmazione. Ti devi scrivere uno sketch che accenda in multiplexing i singoli led. Quindi incrociando righe e colonne in modo opportuno selezioni il led da accendere.

Quote
2)il led matrix shield mi lascia liberi solo i pin digitali 0 e 1 e i pin analogici A0 e A1, quindi il problema è dove collegare il sensore , ovvero posso collegare il sensore su un pin analogico visto che i pin digitali 0 e 1 servono per il collegamento al PC?
Il sensore è digitale.
Ti rimando a questa discussione.
Logged


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

Grazie per la risposta, quindi se non ho capito male dovrei creare punto punto tutti i numeri e lettere che mi servono per stamparli sulla matrice ? sapresti indirizzarmi verso una risorsa ?
 smiley
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21669
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

A portata di mano no, ma se cerchi "led matrix 8x8 arduino" con Google ti vengono fuori tutti i risultati.
Il concetto è tipo questo:
http://playground.arduino.cc/Main/DirectDriveLEDMatrix
anche se poi tu hai i led collegati su uno shield.
Logged


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

Grazie per la segnalazione ma non riesco a farlo funzionare , avresti qualche esempio più semplice?
Logged

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3590
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

my name is IGOR, not AIGOR

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

OK ultimo help  smiley-wink.
posto parte di sketch
Code:
// 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" ? smiley-eek  drawScreen(h); ?
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20298
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se vuoi usare meno piedini e non vuoi far fare il multiplexing al Arduino usa un MAX7219.

Ciao Uwe
Logged

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

Ma posso utilizzarlo anche così ?
Logged

Tuscany
Offline Offline
Edison Member
*
Karma: 38
Posts: 1490
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  http://www.wayoda.org/arduino/ledcontrol/index.html
Logged

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

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  smiley-razz.
Grazie.

Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21669
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


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


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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21669
Logic is my way
View Profile
WWW
 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).

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


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

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

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