Sto tentando di trasportare i dati di scarica di una batteria direttamente da arduino su un foglio excel e creare il diagramma, ho trovato PLX-DAQ, molto bello ma non riesco ad avrere sul foglio excel tutti i dati che voglio e non mi capisco, diciamo che ho bisogno di aiuto questo è il codice che sto usando
unsigned int t;
void setup()
{
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL,Date,Time,t,volt");
delay(2000);
pinMode(LED_BUILTIN,OUTPUT); // pin di default del led on board (13)configurato come uscita
digitalWrite(LED_BUILTIN,LOW); // LED onboard spento
}
void loop()
{
Serial.println( (String) "DATA,DATE,TIME," + (t));
digitalWrite(LED_BUILTIN,HIGH); // accensione LED onboard
Serial.println(t);
Serial.println(";");
Serial.println(analogRead(0)); // acquisizione del valore analogico è invio alla seriale
Serial.println('\n'); // acquisizione del valore analogico è invio alla seriale
t=t+10;
delay(100); // tempo di attesa prima dello spegnimento del LED onboard
digitalWrite(LED_BUILTIN,LOW); // spegnimento LED onboard
delay(9900); // tempo di attesa prima della successiva acquisizione
}
vi ho anche messo una foto del risultato che ho su excel, sotto la colonna volt dovrebbero apparire i dati letti dal segnale che arriva sul pin A0 di Arduino, come vedete li ho come dato sulla seriale ma non si scrivono su excel, questo dato per essere reale andrebbe inserito su una formula "=3*(dato letto/1024*5)" e dare il risultato che vorrei vedere su excel
Altra cosa non capisco da dove esce la scritta mills che non ce l'ho nello skech
Invece di inviare il dato puro, leggilo in variabile e poi fai il calcolo. dopo mandi il valore
int val=analogRead(0);
float ris=3*(val/1024*5);
Serial.println(ris);
Grazie della risposta ho provato a fare spero come mi hai detto, forse ho sbagliato sono un principiante, comunque ho fatto così
unsigned int t;
void setup()
{
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL,Date,Time,t,volt");
delay(2000);
pinMode(LED_BUILTIN,OUTPUT); // pin di default del led on board (13)configurato come uscita
digitalWrite(LED_BUILTIN,LOW); // LED onboard spento
}
void loop()
{
Serial.println( (String) "DATA,DATE,TIME," + (t));
digitalWrite(LED_BUILTIN,HIGH); // accensione LED onboard
Serial.println(t);
Serial.println(";");
int val=analogRead(0);// acquisizione del valore analogico è invio alla seriale
float ris=3*(val/1024*5);
Serial.println(ris);
t=t+10;
delay(100); // tempo di attesa prima dello spegnimento del LED onboard
digitalWrite(LED_BUILTIN,LOW); // spegnimento LED onboard
delay(9900); // tempo di attesa prima della successiva acquisizione
}
ma il risultato è 0 e comunque non lo scrive su excel vedi foto
Non conosco questo addin, leggo però che devi mandare ogni volta i dati così DATA,123,345,567
ovvero devi sempre inviare per prima cosa la parola DATA
Poi i dati devono essere separati da virgola e non ; e NON devi usare println ogni volta ma solo alla fine
Serial.print("DATA,TIME,TIMER,");
Serial.print(t);
Serial.println(",");
int val=analogRead(0);// acquisizione del valore analogico è invio alla seriale
float ris=3*(val/1024*5);
Serial.println(ris);
Su serial monitor dovresti vedere ora OGNI riga (esempi)
DATA,TIME,TIMER,10,3.4
DATA,TIME,TIMER,20,4.2
...
unsigned int t;
void setup()
{
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL,Date,Time,t,volt");
delay(2000);
pinMode(LED_BUILTIN,OUTPUT); // pin di default del led on board (13)configurato come uscita
digitalWrite(LED_BUILTIN,LOW); // LED onboard spento
}
void loop()
{
Serial.print("DATA,TIME,TIMER,");
Serial.print(t);
Serial.println(",");
int val=analogRead(0);// acquisizione del valore analogico è invio alla seriale
float ris=3*(val/1024*5);
Serial.println(ris);
t=t+10;
delay(100); // tempo di attesa prima dello spegnimento del LED onboard
digitalWrite(LED_BUILTIN,LOW); // spegnimento LED onboard
delay(9900); // tempo di attesa prima della successiva acquisizione
}
Se ti scrivo che DEVI avere una solo println() tu invece hai Serial.println(",");
Se il valore dei volt è sempre zero, prova a forzare le virgole float ris=3.0*(val/1024.0*5.0);
Sì hai ragione scusa non mi ero accorto, ho messo il tuo e funziona ma la tensione mi da un dato e no il voltaggio reale, ho inserito la formula per tramutare il dato ma niente sicuramente sbaglio io, comunque quando puoi ti ho messo il codice e foto
nid69ita:
Apri il serial monitor e dimmi se quello che esce con il tuo codice è corretto ?!?
metti due volte l'analogRead !!
Ieri sei stato gentilissimo e grazie a te sono riuscito abbastanza a capirmi, hai visto il mio ultimo post, riesci a dirmi come sistemare anche quello, poi avevo un'altra richiesta se posso, ma una cosa alla volta, grazie ancora
e sapresti come collegare un monitor oled in modo che oltre al grafico excel che si crea vedo sull'0led la tensione e il tempo trascorso, visto che ho un oled di quelli da 4 pin volevo provare