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);
è sicuramente l'errore che commettevo infatti adesso va
poi non capisco:
while( j <= num_misure - 1 );perchè? non capisco bene il ragionamento
mi ero dimenticato di sostituire num_misure a 1000
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 Lcome 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)
questo non ho capito a cosa mi serve: questo secondo controllo mi serve solo a fare un check sul fatto che la misura può riprendere solo quando il condensatore è scarico, a che mi serve spostare il tutto di 2 bit?
cmq adesso va, ma riscontro uno strano comportamento: finchè num_misure <=200 il tutto procede liscio, appena aumento il num_misure e quindi la dimensione dell'array va tutto a farsi benedire, quindi mi chiedo:c' è un limite di grandezza di un array che arduino può processare? questo limite è 200?