No al pin Aref gli vorrei dare 5v.
20v sono la massima misura che mi interessa.
Lo so che con più di 5V brucerei il pin comunque grazie della precisazione
Ok ... allora, per il resto ... puoi semplicemente fare un po' di operazioni ...
float Voltage, tmpVoltage;
byte Decine, Unita, Decimale;
......
tmpVoltage = Voltage;
// Dividi per 10 ed hai le Decine
Decine = (int)(tmpVoltage / 10.0);
// Togli le Decine da tmpVoltage ... ti restano unità e decimali
tmpVoltage = tmpVoltage - (Decine * 10);
// prendi la parte intera e hai le unità
Unita = (int)tmpVoltage;
// togli anche le unità e ti restano i decimi
tmpVoltage = tmpVoltage - Unita;
// moltiplichi per 10 così i decimi diventano interi
tmpVoltage = tmpVoltage * 10.0;
// prendi la parte intera che ora rappresenta i decimi
Decimale = (int) tmpVoltage;
...
... dovrebbe funzionare, l'ho buttato giù così al volo ... provalo e vedi che valori ti da
#include "LedControl.h"
int partitore = 0;
int lettura = 0;
float val = 0.0;
float Voltage = 0.0;
float Voltage, tmpVoltage;
byte Decine, Unita, Decimale;
LedControl LC = LedControl(12, 11, 10, 1);
unsigned long DelayTime = 100;
void setup () {
pinMode (partitore, INPUT);
analogReference(EXTERNAL);
LC.shutdown (0, false);
LC.setIntensity (0, 8);
LC.clearDisplay (0);
}
void loop() {
lettura = analogRead(partitore);
val = (3*lettura/1024.0);
Voltage = val*(20/3.0);
tmpVoltage = Voltage;
// Dividi per 10 ed hai le Decine
Decine = (int)(tmpVoltage / 10.0);
// Togli le Decine da tmpVoltage ... ti restano unità e decimali
tmpVoltage = tmpVoltage - (Decine * 10);
// prendi la parte intera e hai le unità
Unita = (int)tmpVoltage;
// togli anche le unità e ti restano i decimi
tmpVoltage = tmpVoltage - Unita;
// moltiplichi per 10 così i decimi diventano interi
tmpVoltage = tmpVoltage * 10.0;
// prendi la parte intera che ora rappresenta i decimi
Decimale = (int) tmpVoltage;
LC.setDigit (0,0, Decimale, false);
LC.setDigit (0,1, Unita, false);
LC.setDigit (0,2, Decine, false);
}
L'unica cosa che io gia avevo dichiarato Voltage = 0.0 per definirgli quanti decimali assegnargli, almeno così pensavo di fare.
A questi punto però lo dichiaro due volte. Immagino devo lasciare il mio e posso togliere quello inserito da te.
Un altra cosa per quale motivo hai inserito un "tmpVoltage" non avresti potuto usare il "Voltage" gia dichiarato? Solo per capire non voglio mettere in dubbio niente?
... metti in dubbio, metti in dubbio, sempre mettere in dubbio ...
Ho dichiarato una variabile di appoggio "tmpVoltage" perché, come vedi, mano mano, nel codice, è un valore che "distruggo" per fare i calcoli e, se alla fine comunque ti serve Voltage ... ce lo hai sempre per fare altre cose
Se invece Voltage alla fine non ti serve più .. allora puoi risparmiarti quei 4 bytes che occupa la mia variabile di appoggio