Go Down

Topic: aiuto per lettura sensore seriale (Read 1 time) previous topic - next topic

astrobeed

I PS2: Consiglio di settare anche la Serial verso il PC a 19200, onde evitare di riempire il buffer.
Abbiamo postato la stessa cosa in simultanea. :)
Scientia potentia est

arduale

ok, grazie ancora. ci siamo quasi... almeno spero!
ho modificato il codice come da voi consigliato ed ora leggo una serie di numeri che si ripetono, quasi sempre uguali, con delle piccole variazioni.

Code: [Select]
#include <SoftwareSerial.h>
#define RX 10  // collegato a RX di rs232
#define TX 11  // collegato a TX di rs232
SoftwareSerial sensor(RX, TX);

int incomingByte = 0;
uint8_t buffer[10];
uint8_t ind = 0;
String val = "";

void setup() {
  pinMode(RX, INPUT);
  pinMode(TX, OUTPUT);

  sensor.begin(19200);
  Serial.begin(115200);
  delay(1000);
  sensor.write("R\r");  // R: start continuous outputting
  delay(1000);
}

void loop() {
  if (sensor.available()) {
    Serial.print(sensor.read());
  }
}


il sensore dovrebbe mandare fuori delle stringhe di testo, con un numero decimale (una cifra dopo la virgola), uno spazio e "ppm", es:

345.2 ppm
350.4 ppm
...

almeno questo è quello che si vede con l'hyperterminal di winxp.


SukkoPera

"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

arduale

#18
Aug 04, 2016, 04:29 pm Last Edit: Aug 04, 2016, 04:54 pm by arduale
Togli quelle pinMode()!
fatto... ma non cambia niente!

anzi adesso mi sputa fuori un "247" all'inizio, poi niente più...

EDIT: ora, dopo qualch reset, esce la stringa:

324951495146521310324951495146521310

con freq 1 hz.
esce quasi sempre uguale, cambia qualche cifra.
potrebbe essere in qualche modo la stringa che cerco?

brunello22

Quote
32 49 51 49 51 46 52 13 10 32 49 51 49 51 46 52 13 10
spazio 1313.4 (CR)(LF) spazio  1313.4 (CR)(LF)

arduale

spazio 1313.4 (CR)(LF) spazio  1313.4 (CR)(LF)
grazie brunello!
mi dici come faccio a decodificare, così alle prossime stringhe che ricevo, posso provare a vedere da solo cosa esce?!?

SukkoPera

#21
Aug 04, 2016, 05:14 pm Last Edit: Aug 04, 2016, 05:17 pm by SukkoPera
Prova Serial.write() invece di .print().

Oppure un cast esplicito a char.
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

astrobeed

#22
Aug 04, 2016, 05:16 pm Last Edit: Aug 04, 2016, 05:17 pm by astrobeed
Cambia "int incomingByte = 0;" con "char  incomingByte;" e la serialprint ti farà vedere i caratteri ascii invece della loro codifica numerica.
Scientia potentia est

arduale

ProvaSerial.write() invece di .print().

Oppure un cast esplicito a char.
ok, con il Serial.write() mi esce fuori la versione del fw, la marca, l'anno... tutto leggibile!
è già qualcosa!

Go Up