Pilotare display a 7 segmenti con 7447

Salve a tutti, da qualche giorno mi è presa la voglia di pilotare un 7 segmenti con Arduino. Ho realizzato il programma che mi permette di accendere un led con una uscita di Arduino e ci sono riuscito.

Tuttavia, usare una uscita per un led rappresenta un grosso spreco di uscite, di conseguenza ho voluto provare a diminuire le uscite utilizzate. Mi hanno indicato il 7447 come decoder BCD-7 segmenti. Di conseguenza io utilizzando Arduino ho realizzato un programma che mi produca un codice BCD da inviare all'integrato, ma non sono riuscito a farlo funzionare.

Il programma che ho utilizzato è il seguente:

void setup(){
pinMode(1, OUTPUT); //A
pinMode(2, OUTPUT); //B
pinMode(3, OUTPUT); //C
pinMode(4, OUTPUT); //D
}
void loop(){
//scrive 0 sul display
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(1000);

//scrive 1 sul display
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(1000);
}

NOTA: il programma procedeva fino a 9 ma dato che sto scrivendo dal telefono mi viene scomodo riportarlo tutto.

Per quanto riguarda il circuito vero e proprio era questo: VCC - 5V di Arduino GND - GND di Arduino A - pin1 di Arduino B - pin2 di Arduino C - pin3 di Arduino D - pin 4 di Arduino LT - Non collegato* RBI - Non collegato* BI - Non collegato* a - a del display b - b del display c - c del display d - d del display e - e del display f - f del display I comuni del display a massa (GND) e il punto del display non collegato.

*Questi pin non li ho collegati perché non ho ben capito la loro funzione. So che LT se messo a +5 accende tutti i led. Per RBI e BI avevo guardato nel datasheet dell'integrato e avevo seguito la configurazione lì riportata, ma senza risultati.

NOTA: non allego schema elettrico e datasheet sempre perché sono da telefono. Il datasheet che ho consultato era sul sito della TexasInstruments.

Come mai non sono riuscito a farlo funzionare? Dove ho sbagliato? Potete aiutarmi?

Grazie anticipatamente. Saluti.

Non so se questo, ma MAI usare il pin 0 o 1 (se non per lo scopo a cui sono dedicati), perchè sono la seriale RX,TX e quindi la USB

pinMode(1, OUTPUT); //A  !! SERIALE !!!

Non sono un elettronico ma penso il display debba essere ad Anodo comune e non a Katodo comune (come quello che usi tu) LT=light test solo per fare il test

|500x273

nid69ita:
[…]
Non sono un elettronico ma penso il display debba essere ad Anodo comune e non a Katodo comune (come quello che usi tu) […]

Scusate il ritardo nel rispondere, comunque alla fine il problema era proprio questo: il 7447 pilota display ad anodo comune.
Ora c’è un piccolo problema: io ho ritirato dei catodo comune! Con quale integrato potrei pilotarli? Vedevo qualcosa sui 7448 o 7449 ma trovo dove poterli ritirare…

Puoi provare con un banale shift register tipo il 595.

Se vuoi "giocare", va bene, il 7448 è ciò che ti serve. Ma se una uscita singola che pilota un LED singolo ti sembra uno spreco, lo è anche il pilotaggio BCD, per il quale ti servirebbero 4 uscire per ogni singolo display, questo a meno di non impegnarsi in complesse tecniche di multiplexer in software.

Ci sono singoli integrati di appoggio (es. MAX7219) che fanno tutto. Pilotato fon a 8 cifre consecutive, possono essere messi in cascata Daisy-chain e utilizzano solo i 3 o 4 pin della SPI.

SukkoPera: Puoi provare con un banale shift register tipo il 595.

Ad ogni modo se puoi recuperare i 74hc595 è ancora più facile. Io con due riesco a pilotare un 7 segmenti a 4 cifre

BaBBuino: Se vuoi "giocare", va bene, il 7448 è ciò che ti serve. Ma se una uscita singola che pilota un LED singolo ti sembra uno spreco, lo è anche il pilotaggio BCD [...]

Hai detto bene, "giocare" è la parola giusta!

Blutz: Ad ogni modo se puoi recuperare i 74hc595 è ancora più facile. Io con due riesco a pilotare un 7 segmenti a 4 cifre

Ma il 74595 non è CMOS? Di conseguenza non funziona a 10 volt? Io volevo qualcosa da alimentare con i 5 volt di Arduino...

Il 595 puoi tranquillamente alimentarlo da Arduino, certo che è CMOS, ma questo non implica che vada necessariamente a 10v. Vedi ad esempio questo datasheet: http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf