Hi, I'm currently building a air quality monitor with the following sensors: MH-Z19, PMS5003 and a HIH6130 (yet to insert code) with an Uno. I came to learn that only one serial software port can listen at any given time. I am learning about the Softwareserial.listen but am unsure how I can use it because there I have two libraries taken from online and Softwareserial.listen is not defined in the library.
Or should I use a Arduino Mega as I also came to read about it, having 3 other serial ports as compared to the Uno. How will it be different then?
Appreciate any help in guiding my understanding! Thanks!
#include <SGBotic_MHZ19.h>
#include <SGBotic_PMS5003.h>
#include <SoftwareSerial.h>
//sets up the (RX, TX) digital pins
SoftwareSerial pmsSerial(2, 3); //device's TX attached to digital pin 2
//device's RX attached to digital pin 3
SGBotic_PMS5003 PMS5003 = SGBotic_PMS5003(&pmsSerial);
SoftwareSerial co2Serial(10,11); //device's TX attached to digital pin 10
//device's RX attached to digital pin 11
SGBotic_MHZ19 co2 = SGBotic_MHZ19(&co2Serial);
uint16_t PMSdata[data_size];
void setup() {
Serial.begin(9600);
co2.begin(9600);
PMS5003.begin(9600);
Serial.println("Sensors will begin reading in 30s");
delay(30000); //delay 30s
}
void loop() {
int ppm = co2.readPPM();
if (PMS5003.readPMS(PMSdata))
{
Serial.println();
Serial.println("---------------------------------------");
Serial.println("Concentration Units (standard)");
Serial.print("PM 1.0: "); Serial.print(PMSdata[pm10_standard]);
Serial.print("\t\tPM 2.5: "); Serial.print(PMSdata[pm25_standard]);
Serial.print("\t\tPM 10: "); Serial.println(PMSdata[pm100_standard]);
Serial.println("---------------------------------------");
Serial.println("Concentration Units (environmental)");
Serial.print("PM 1.0: "); Serial.print(PMSdata[pm10_env]);
Serial.print("\t\tPM 2.5: "); Serial.print(PMSdata[pm25_env]);
Serial.print("\t\tPM 10: "); Serial.println(PMSdata[pm100_env]);
Serial.println("---------------------------------------");
Serial.print("Particles > 0.3um / 0.1L air:"); Serial.println(PMSdata[particles_03um]);
Serial.print("Particles > 0.5um / 0.1L air:"); Serial.println(PMSdata[particles_05um]);
Serial.print("Particles > 1.0um / 0.1L air:"); Serial.println(PMSdata[particles_10um]);
Serial.print("Particles > 2.5um / 0.1L air:"); Serial.println(PMSdata[particles_25um]);
Serial.print("Particles > 5.0um / 0.1L air:"); Serial.println(PMSdata[particles_50um]);
Serial.print("Particles > 50 um / 0.1L air:"); Serial.println(PMSdata[particles_100um]);
Serial.println("---------------------------------------");
}
}