salve a tutti sto utilizzando un display 7 segmenti 4 cifre a catodo comune, finora l’ho utilizzato con il multiplexing ma una cifra alla volta ossia in solo colpo accendo tutti i led della cifra e con 4 transistors gestisco le 4 cifre.
ora per ridurre i componenti vorrei provare la tecnica di accende un solo segmento alla volta in modo da avere solo 4 resistenze e nessun transistors.
ho preso spunto dal codice del micro-logio ma non mi funziona. il codice per ora è scritto per gestire una sola cifra con catodo collegato direttamente a massa e il delay è alto per vedere passo passo il funzionamento…
il codice è questo
byte segA = 13;
byte segB = 12;
byte segC = 11;
byte segD = 6;
byte segE = 9;
byte segF = 8;
byte segG = 7;
byte segmenti[7] = {segA, segB, segC, segD, segE, segF, segG};
const byte numeri[10]={
0b11111100, // 0
0b01100000, // 1
0b11011010, // 2
0b11110010, // 3
0b01100110, // 4
0b10110110, // 5
0b10111110, // 6
0b11100000, // 7
0b11111110, // 8
0b11110110 // 9
};
void setup(){
//setto i pin com output
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
//metto tutti i pin a low
digitalWrite (segA, LOW);
digitalWrite (segB, LOW);
digitalWrite (segC, LOW);
digitalWrite (segD, LOW);
digitalWrite (segE, LOW);
digitalWrite (segF, LOW);
digitalWrite (segG, LOW);
}
void loop(){
for (byte i=0; i<7 ; i++){
digitalWrite(segmenti[i], bitRead(numeri[5],i)); //assugno al segmento segmenti[i] il valore del bit i dell'vettore numeri posizione 5
delay (200);
digitalWrite(segmenti[i], ~bitRead(numeri[5],i));
}
}
io nella array numeri ho inserito la sequenza di 0 e 1 in modo da far confrontare gli 1 con i segmenti che devono essere accesi per formare quel numero e 0 per quelli che devono rimanare spenti
il problema è che anche se come nell’esempio voglio visualizzare il numero 5 il displey accende in sequenza tutti i segmenti non solo quelli che formano il numero 5 e poi non li spegne…
questo carattere ~ prese paro paro dal codice del micrologio dove dice che il segmento viene spento serve a fare l’opposto del bit letto? la lettura del bit comincia da destra o da sinistra?
qualcuno sa darmi una mano?