Arduino Gsm shield + hc-sr04 + plotly

Salve a tutti,

ho realizzato uno sketch in cui mi collego in gprs tramite la GSM shield, leggo i valori del sensore di distanza ad ultrasuoni e li invio su plot.ly tramite le loro API. Ottengo il grafico in figura con dei valori evidentemente disturbati da qualcosa. Preciso che in uno sketch separato ho provato la sola misura del ping sensor ed i valori sono consistenti, con variazioni di +- 3 cm, valori ottimi per il monitoraggio del livello di un serbatoio. In un terzo sketch separato leggo il valore analogico di un potenziometro su A0 e lo invio su plot.ly. I valori sono precisi ed il grafico che ottengo è ottimo (avviene sempre la connessione gprs con il GSM shield). Il problema è che quando abbino la misura della distanza alla funzione di invio dei dati su plot.ly i valori sono molto disturbati e illegbibili (ho allegato un'immagine).

Effettuo la misurazione con la seguente funzione:

long distCalc() {
  long durata, distanza;
  digitalWrite(TRIG_PIN, LOW);  // TRIG_PIN = pin 12
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  durata = pulseIn(ECHO_PIN, HIGH);  //ECHO_PIN = pin 11
  distanza = durata / 29.1 / 2 ;
  return distanza;    // in uscita la distanza in [cm]
}

La funzione di loop in cui invio i valori su plotly è la seguente:

void loop() {
  long distanza;
  distanza = distCalc();  //fase di calcolo distanza
  Serial.print(distanza);
  Serial.println("cm");
  graph.plot(millis(), int(distanza), tokens[0]);  //fase di invio su plot.ly
  delay(20);
}

Qualcuno sa dirmi perchè succede?

Grazie e saluti,
em1lio189

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

nid69ita:
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Ciao nid69ita, mi sono presentato nella discussione che mi hai indicato.
In realtà avevo un altro account ma non ricordo più le credenziali ed ho preferito farne uno nuovo.

ok :slight_smile:

E' possibile secondo voi che la fase di misurazione tramite la funzione pulseIn venga disturbata dagli interrupt necessari per la comunicazione softwareserial che usa la libreria del GSM Shield?

Nel caso fosse possibile, posso disabilitare gli interrupt prima del calcolo della distanza e dopo riattivarli?

Grazie,
emilio189