Salve a tutti ragazzi è il mio primo post qui sul forum e spero di trovare il vostro aiuto (e di non essere OT). Come da titolo sto facendo un piccolo termometro con il sensore LM35 e fin qui tutto bene riesco a visualizzare sul serial Monitor il valore corretto della temperatura. Il passo successivo e quello di poterla visualizzare su 4 display 7 segmenti a catodo comune che già posseggo ma ho qualche dubbio in merito al loro collegamento. Mi spiego meglio possiedo già come componenti:
4 display 7 seg catodo comune
4 transistor BC547 oppure BC337
1 IC 74LS47
Punto 1)
Ora leggendo le varie discussioni inerenti mi pare di aver capito che posso collegare in parallelo i display e utilizzare i pin di uscita dell LS47 per pilotarli utilizzando i transistor per il multiplexing. Potete confermarmi che con i componenti che ho scritto prima la cosa è fattibile? necessita di resistenze il circuito?
Punto 2)
Dallo scketch che mi rileva la temperatura del tipo 25.89°C riesco a estrapolare le quattro cifre singole che compongono il dato da visualizzare potreste darmi qualche idea su come questi 4 numeri posso inviarli ai pin Arduino per poi trasferirli 74LS47 che a sua volta trasferirà ai display? Si tratta di valori compresi tra 0 e 9 pertanto suppongo dovrò usare le porte analogiche...
Grazie in anticipo per la disponibilità.
Non proprio. IL 74LS47 é un decoder BCD a 7 Segmenti per pilotare un modulo Display a 7 segmenti a anodo comune.
Tu gli dai un numero da 0 a 15 e lui pilota i rispettivi segmenti portandoli a massa.
IL 74LS47 non puoiusarlo con quel display.
Puoi pilotare i anodi mettendo i segmenti corrispondenti delle 4 cifre insieme tramite una resistenza a 8 uscite Arduino (7 segmneti e punto decimale). Con 4 transistori BC337 (regge piú corrnete del BC547) metti uno dei 4 catodi a massa (serve una resistenza tra uscita Arduino e base transistore).
http://www.electronicsblog.net/4-digits-7-segments-led-display-multiplexing-with-arduino/
Ciao Uwe
Purtroppo il 74ls47 e' un decoder per dei display ad Anodo comune, per fare quello che dici tu, ti servirebbe un 74ls48
Ho collegato i display seguendo questo schema:
utilizzando i pin mostrati nello schema nello sketch che uso:
//LM35 + 4 display 7 segmenti
float tempC; //dichiarazione di variabile
int tempPin = 0; //inizializzazione del pin di Arduino
int n, temp1, temp2, n1, n2, n3, n4;
void setup()
{
Serial.begin(9600); //apertura porta seriale, set della velocità a 9600 bps
}
void loop()
{
tempC = analogRead(tempPin); //lettura valore del sensore
tempC = (5.0 * tempC * 100.0)/1024.0;//conversione del dato analogico in temperatura
n=tempC*100; //separazione delle quattro cifre temperatura
temp1 = n;
n1 = temp1 / 1000;
temp2 = temp1 % 1000;
n2 = temp2 / 100;
temp1 = temp2 % 100;
n3 = temp1 / 10;
n4 = temp1 % 10;
//invia i dati alla seriale
Serial.print(" Temperatura ^C: ");Serial.println(tempC);
//Serial.println(n1); Serial.println(n2);Serial.println(n3);Serial.println(n4);
delay(1000); //aspetta 1 secondo prima di ripetere
}
riesco a ottenere le 4 cifre che mostrano la temperatura in maniera separata nelle variabili n1 n2 n3 n4 il problema è come riuscire a poterle mostrare sui display...non sono molto ferrato in C ma volevo chiedervi se potete darmi almeno un idea su come scrivere nel codice la cosa...poi tento di sbatterci io...
edit by mod: per favore includere il codice usando gli appositi tag
Dove hai trovato quello schema, c'e' anche lo sketch per gestire i 4 display in multiplexing.
Lo schema l ho trovato qui :
si tratta di un contatore con 4 display e volevo adattarlo al mio sensore di temperatura cercando di vedere il valore sui display, cosa che purtroppo non mi riesce...
Ringrazio tutti per la disponibilità sono riuscito a risolvere studiandomi per bene il progetto linkato nel POST precedente e adattandolo per la mia necessità.