libreria ledcontrol max 7219 "dubbio"

il codice che segue è preso dalla libreria ledcontrol sul sito di arduino
dice che visualizza un int da -999 a 999
il dubbio e che come viene visualizzato esempio -3
cosi -003 oppure -3 ?
tanks in anticipo

void printNumber(int v) {
     int ones;
     int tens;
     int hundreds;
     boolean negative;	

     if(v < -999 || v > 999) 
        return;
     if(v<0) {
         negative=true;
         v=v*-1;
     }
     ones=v%10;
     v=v/10;
     tens=v%10;
     v=v/10;
     hundreds=v;			
     if(negative) {
        //print character '-' in the leftmost column	
        lc.setChar(0,3,'-',false);
     }
     else {
        //print a blank in the sign column
        lc.setChar(0,3,' ',false);
     }
     //Now print the number digit by digit
     lc.setDigit(0,2,(byte)hundreds,false);
     lc.setDigit(0,1,(byte)tens,false);
     lc.setDigit(0,0,(byte)ones,false);
 }

Va visto cosa fa il metodo setDigit che viene usato per "scrivere" la cifra. Esempio: lc.setDigit(0,2,(byte)hundreds,false);

Se cioè considera lo 0 come cifra nulla. Quel "false" in fondo potrebbe essere un flag. Magari mettendolo su "true" scrive anche lo 0. Dovresti controllare il codice del metodo e vedere come lavora.

da provare il 7219 non c'è l'ho (ancora per poco) il false alla fine mi pare sia il punto decimale,

ho il sospetto che... bisogna costruirsi tutto il software se si vuole visualizzare -15000 come -15000 oppure -15 come -15 invece di -00015 =(

ma nessuno a trafficato con il 7219 ?

gingardu: ho il sospetto che... bisogna costruirsi tutto il software se si vuole visualizzare -15000 come -15000 oppure -15 come -15 invece di -00015 =(

ma nessuno a trafficato con il 7219 ?

Se usi prodotto preconfezionati (lib di terze parti) è ovvio che devi sottostare a cosa ti offre l'autore. Vedi se il codice fa quel che ti serve, oppure modifica la lib per far sparire gli zeri se non lo fa di suo. Ma ,a questo punto, non fai prima a prendere qualche shift register e multiplexare i display? Così il programma lo scrivi come ti pare, se vuoi scrivere -15 invece di -00015 lo puoi fare.

L'ultimo parametro è il punto decimale:

void setDigit(int addr, int digit, byte value, boolean dp);

Secondo me stampa -003 perchè la sintassi delle 3 cifre è identica e suppongo che 0 lo stamperà 000, altrimenti non accenderebbe nulla ma nel codice non verifica il caso di valore uguale a 0.

leo72:

gingardu: ho il sospetto che... bisogna costruirsi tutto il software se si vuole visualizzare -15000 come -15000 oppure -15 come -15 invece di -00015 =(

ma nessuno a trafficato con il 7219 ?

Se usi prodotto preconfezionati (lib di terze parti) è ovvio che devi sottostare a cosa ti offre l'autore. Vedi se il codice fa quel che ti serve, oppure modifica la lib per far sparire gli zeri se non lo fa di suo. Ma ,a questo punto, non fai prima a prendere qualche shift register e multiplexare i display? Così il programma lo scrivi come ti pare, se vuoi scrivere -15 invece di -00015 lo puoi fare.

avevo già "provato" con arduino uno soltanto, e al massimo qualche transistorino per i segmenti visto che la corrente dei pin è poca, funziona alla fine sono arrivato a 27k di sketc e solo un pin rimasto libero =( insomma stava per "schiattare" volevo usare il 7219 per una questione di costo :~ visto che ultimamente lo vendono a poco sulla baia (e anche i relativi display che usa)

nid69ita: L'ultimo parametro è il punto decimale:

void setDigit(int addr, int digit, byte value, boolean dp);

Secondo me stampa -003 perchè la sintassi delle 3 cifre è identica e suppongo che 0 lo stamperà 000, altrimenti non accenderebbe nulla ma nel codice non verifica il caso di valore uguale a 0.

si mi sa che hai ragione =( visualizza -001 -011 001 011 bisogna aggiustare lo sketc per fare in modo che visualizza "meglio" tipo -1 -12345 1 12345