Hello guys,
it is a few months, I have asked about help with my SM-UART sensor. You gave me example code and it was really nice. But, when I put more sensors on the same board with arduino m0, my code did not work. Yeah, arduino m0 is similar to UNO a lot, but one library was problematic: "SoftwareSerial.h" Arduino m0 do not have it, so I am asking you for help. What should I use?
¨
#include <Arduino.h>
#include<SoftwareSerial.h>
SoftwareSerial SUART(2, 3); //SRX=DPin-4, STX=DPin-5
bool flag1 = false;
bool flag2 = false;
byte rxData[30];
byte y1, y2;
void setup()
{
Serial.begin(9600);
SUART.begin(9600);
}
void loop()
{
byte n = SUART.available();
{
if (n != 0)
{
if (flag2 == false)
{
if (flag1 == false)
{
byte x = SUART.read();
y1 = x;
if (x == 0x42)
{
flag1 = true;
}
}
else
{
byte x = SUART.read();
y2 = x;
if (x == 0x4D)
{
flag2 = true;
}
}
}
else
{
byte m = SUART.readBytesUntil('\n', rxData, 30);
//Serial.println(m);
int CHKSUM = 0;
for (byte i = 0; i < m - 2; i++)
{
CHKSUM += rxData[i];
}
CHKSUM = CHKSUM + y1 + y2;
//Serial.println(CHKSUM, HEX);
if (CHKSUM == (rxData[28] << 8 | rxData[29]))
{
Serial.println("!!!!!VALID DATA!!!!!");
Serial.println();
Serial.print("Standard Smoke μg/m³: "); Serial.println(rxData[2] << 8 | rxData[3]);
Serial.print("Standard Smoke μg/m³: "); Serial.println(rxData[4] << 8 | rxData[5]);
Serial.print("Standard Smoke μg/m³: "); Serial.println(rxData[6] << 8 | rxData[7]);
Serial.println();
Serial.print("Enviorment μg/m³: "); Serial.println(rxData[8] << 8 | rxData[9]);
Serial.print("Enviorment μg/m³: "); Serial.println(rxData[10] << 8 | rxData[11]);
Serial.print("Enviorment μg/m³: "); Serial.println(rxData[12] << 8 | rxData[13]);
// for (int i = 0; i < m; i++)
// {
// Serial.print(rxData[i], HEX);
// Serial.print(' ');
// }
memset(rxData, 0x00, 30);
flag1 = false;
flag2 = false;
Serial.println();
Serial.println("==================================");
}
else
{
Serial.println("!!!!!INVALID DATA!!!!!");
Serial.println();
Serial.print("Standard Smoke μg/m³: "); Serial.println(rxData[2] << 8 | rxData[3]);
Serial.print("Standard Smoke μg/m³: "); Serial.println(rxData[4] << 8 | rxData[5]);
Serial.print("Standard Smoke μg/m³: "); Serial.println(rxData[6] << 8 | rxData[7]);
Serial.println();
Serial.print("Enviorment μg/m³: "); Serial.println(rxData[8] << 8 | rxData[9]);
Serial.print("Enviorment μg/m³: "); Serial.println(rxData[10] << 8 | rxData[11]);
Serial.print("Enviorment μg/m³: "); Serial.println(rxData[12] << 8 | rxData[13]);
// for (int i = 0; i < m; i++)
// {
// Serial.print(rxData[i], HEX);
// Serial.print(' ');
// }
memset(rxData, 0x00, 30);
flag1 = false;
flag2 = false;
Serial.println();
Serial.println("==================================");
}
}
}
}
}