Prova con questo. Ho inserito i ritardi giusti ed un print per vedere se il buffer della seconda seriale si riempie.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4);
SoftwareSerial mySerial2(5, 6);
byte Hdata = 0;
byte Ldata = 0;
byte CHKS = 0;
unsigned int Misura = 0;
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
mySerial2.begin(9600);
}
void loop() {
if (mySerial.available() > 0) {
if (mySerial.read() == 0xFF) { // potrebbe essere il carattere di Start
Hdata = mySerial.read(); //continua la lettura e assegna alle
Ldata = mySerial.read(); //variabili le letture successive.
CHKS = mySerial.read(); //è il byte di checksum, da datasheet gli ultimi 8 bit della somma 0xFF + Hdata + Ldata.
if (CHKS == lowByte(0xFF + Hdata + Ldata)) {
Misura = (Hdata << 8) | Ldata;
Serial.print("Misura1cm ");
Serial.println(Misura / 10, DEC);
}
}
}
delay(50); // rimani fermo per 50 ms (tempo di ciclo del sensore)
if (mySerial2.available() > 0) {
Serial.print("Buffer ");
Serial.println(mySerial2.available(), DEC);
if (mySerial2.read() == 0xFF) { // potrebbe essere il carattere di Start
Hdata = mySerial2.read(); //continua la lettura e assegna alle
Ldata = mySerial2.read(); //variabili le letture successive.
CHKS = mySerial2.read(); //è il byte di checksum, da datasheet gli ultimi 8 bit della somma 0xFF + Hdata + Ldata.
if (CHKS == lowByte(0xFF + Hdata + Ldata)) {
Misura = (Hdata << 8) | Ldata;
Serial.print("Misura2cm ");
Serial.println(Misura / 10, DEC);
}
}
}
delay(50); // rimani fermo per 50 ms (tempo di ciclo del sensore)
}