Inserire valori letti da seriale in un Array

Ciao a tutti, avrei un problema, dovrei prelevare dei valori da seriale e inerirli in un array, per poi poterli richiamare al bisogno.

Lo sketch che sto usando è questo:

float temp;
float hum;
float dati_cpu[2];

void setup () {
Serial.begin (9600);
}

void loop (){
 if (Serial.available()>0){
int i;
for (i=1; i<2 ;i++){
dati_cpu[i] =Serial.parseFloat();
}
hum = dati_cpu[1];
temp = dati_cpu[2];
Serial.println(hum);
Serial.println(temp);
}
}

ma mi memorizza tutti e due i valori nella prima variabile (in questo caso "hum"), non riesco a capire cosa c'è che non va...

>masterdom76: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink:

masterdom76:
ma mi memorizza tutti e due i valori nella prima variabile (in questo caso "hum"), non riesco a capire cosa c'è che non va...

Gli array iniziano SEMPRE da 0, tu invece parti dalla posizione 1 e il ciclo for che hai descritto è vero solo per un'unica condizione ovvero quando i==1
Nel "giro" di loop() successivo, ricominci da capo e quindi leggerai il secondo valore inviato sulla seriale che però va a finire nuovamente in dati_cpu[1] e quindi in hum.

Grazie mille, ho risolto il problema di ricevere i valori e metterli in un array, ora ho un altro problema: avendo messo il codice in un funzione non mi memorizza più i valori nelle variabili, vi è un modo per restituire l'intero array di valori letti o devo restituirli uno a uno?

Dato che sto usando un arduino mega e i dati arrivano da seriale bletooth, ho pensato di usare "Serial.event()" il codice che sto provando ad usare è il seguente:

float hum;  //Variabile in cui verrà inserita la % di umidità
float temp; //Variabile in cui verrà inserita la temperatura

float dati_cpu[2];

void setup(){
}
void loop(){
Serial.println(temp);
Serial.println(hum);
}

void eventSerial1()
{
  int n_letture = 0;
  while(Serial1.available())
                           {
                            Serial.println("Cucina:");
                            
                            for (n_letture=0; n_letture<2 ;n_letture++)
                                              {
                                               dati_cpu[n_letture] =Serial1.parseFloat();
                                              }
 temp = dati_cpu[0];
 hum = dati_cpu[1];                           
}
 return dati_cpu[2];                          
}

Ma stampa sempre 0.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.