plot grafico tramite processing real time

c_voltage = c_voltage *5 /1023;
          ps_voltage = ps_voltage * 5 / 1023;

è corretto, ma meglio mettere delle parentesi, è più leggibile e eviti errori stupidi di precedenza

while(current >0.000001);

uhmm valore moooolto basso, probabile problema n°1. Ricorda che il pin non è a GND ma floattante, quindi mi aspetto di leggere valòori random. A priori metti come limite di NON sfondare l'array:

while(current >0.000001 && j < 1000);

poi

while(c_voltage > 0.001);

probabile errore n°2, ma almeno non sfondi array :slight_smile:

poi non capisco:

while( j <= num_misure - 1 );

perchè? non capisco bene il ragionamento

dolcis in fundo:

c_voltage = analogRead(c_pin);

attenzione, l'analog read restituisce un int, ovvero due byte, di cui ti interessando 10 bit:
0 1 2 3 4 5 6 7 - 8 9 A B C D E F
N N N N N N S S S S S S S S L L

come puoi vedere i bit N sono NON usati. Gli S sono quelli importanti, ovvero quelli che variano di più il valore della variabile, e quelli con L sono unità (F) e decine (E) (in binario eh), quindi sono i meno importanti.

tu stai salvando i bit da 8 a F:

c_voltage = analogRead(c_pin);

invece devi eliminare i due bit L in modo da prendere solo quelli interessanti:

c_voltage = (analogRead(c_pin) >> 2);

il >> sigfnica proprio "sposta i bit 2 volte a sinistra" (la parte che rimane "vuota" diventa 0)