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