Hi, I found a sketch online to try to build a indoor air quality monitoring unit. When I put it in a Arduino sketch form I was unable to get it to compile. I am not very good at understanding C++ computer language so I am limited on understanding whats wrong.
I am sending a copy of the sketch. thank you for yourhelp.Use code tags to format code for the forum`
#include <TFT_HX8357.h>
#include <User_Setup.h>
#include <Arduino_DataBus.h>
#include <Arduino_G.h>
#include <Arduino_GFX.h>
#include <Arduino_GFX_Library.h>
#include <Arduino_TFT.h>
#include <Arduino_TFT_18bit.h>
#include <gfxfont.h>
#include <YCbCr2RGB.h>
#include <MQ135.h>
#include <DHT11.h>
#include <Adafruit_HX8357.h>
#include <Wire.h>
#include <SPI.h>
#include <TFT.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(6, 7, 2, 3, 4, 5);
#define ALTITUDE 896.6
#define DHTTYPE DHT11
int MQ135 (A0);
int DHT11 (A6);
int gLed = 6;
int yLed = 7;
int rLed = 8;
const int pinPM25 = 2;
const int pinPM1 = 3;
const unsigned long sampleTime = 5000; // mSec -> 5..30 sec
float calc_low_ratio(float lowPulse) {
return lowPulse / sampleTime * 100.0; // low ratio in %
}
float calc_c_mgm3(float lowPulse) {
float r = calc_low_ratio(lowPulse);
float c_mgm3 = 0.00258425 * pow(r, 2) + 0.0858521 * r - 0.01345549;
return max(0, c_mgm3);
}
float calc_c_pcs283ml(float lowPulse) {
float r = calc_low_ratio(lowPulse);
float c_pcs283ml = 625 * r;
return min(c_pcs283ml, 12500);
}
void setup() {
Serial.begin(9600);
pinMode(2, INPUT);
pinMode(3, INPUT);
Serial.println("Warming up...");
delay(60000);
}
pinMode(gLed, OUTPUT);
pinMode(yLed, OUTPUT);
pinMode(rLed, OUTPUT);
}
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
tft.setTextFont(1); // Select font 1 which is the Adafruit GLCD font
delay(100);
bme.begin();
DHT11.begin();
delay(3000);
}
void loop() {
duration1 = pulseIn(pin1, LOW);
duration2 = pulseIn(pin2, LOW);
lowpulseoccupancy1 = lowpulseoccupancy1+duration1;
lowpulseoccupancy2 = lowpulseoccupancy2+duration2;
if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s
{
ratio1 = lowpulseoccupancy1/(sampletime_ms*10.0); // Integer percentage 0=>100
concentration1 = 1.1*pow(ratio1,3)-3.8*pow(ratio1,2)+520*ratio1+0.62; // using spec sheet curve
ratio2 = lowpulseoccupancy2/(sampletime_ms*10.0); // Integer percentage 0=>100
concentration2 = 1.1*pow(ratio2,3)-3.8*pow(ratio2,2)+520*ratio2+0.62; //
lcd.setCursor(0, 0);
lcd.print("PM10 ");
lcd.setCursor(6, 0);
lcd.print(concentration1,3);
Serial.print("concentration1 = ");
Serial.print(concentration1);
Serial.print(" pcs/0.01cf - ");
Serial.print("concentration2 = ");
Serial.print(concentration2);
Serial.print(" pcs/0.01cf - ");
if (concentration1 < 1000) {
lcd.setCursor (0, 1);
for (int i = 0; i < 16; ++i)
{
lcd.write(' ');
}
lcd.setCursor (0, 1);
for (int i = 0; i < 16; ++i)
{
lcd.write(' ');
}
lcd.setCursor(4, 1);
lcd.print("GOOD");
digitalWrite(gLed, HIGH);
digitalWrite(yLed, LOW);
digitalWrite(rLed, LOW);
}
if (concentration1 > 10000 && concentration1 < 20000) {
lcd.setCursor (0, 1);
for (int i = 0; i < 16; ++i)
{
lcd.write(' ');
}
lcd.setCursor(4, 1);
lcd.print("ACCEPTABLE");
digitalWrite(gLed, LOW);
digitalWrite(yLed, HIGH);
digitalWrite(rLed, LOW);
}
if (concentration1 > 20000 && concentration1 < 50000) {
lcd.setCursor (0, 1);
for (int i = 0; i < 16; ++i)
{
lcd.write(' ');
}
lcd.setCursor(4, 1);
lcd.print("HEAVY");
digitalWrite(gLed, LOW);
digitalWrite(yLed, LOW);
digitalWrite(rLed, HIGH);
}
if (concentration1 > 50000 ) {
lcd.setCursor (0, 1);
for (int i = 0; i < 16; ++i)
{
lcd.write(' ');
}
lcd.setCursor(4, 1);
lcd.print("HAZARD");
digitalWrite(gLed, LOW);
digitalWrite(yLed, LOW);
digitalWrite(rLed, HIGH);
}
lowpulseoccupancy1 = 0;
lowpulseoccupancy2 = 0;
starttime = millis();
}
}
printIndoorTemperature();
printIndoorHumidity();
}
void readSensor()
{
previousIndoorTemperature = indoorTemperature;
previousIndoorHumidity = indoorHumidity;
indoorHumidity = dht.readHumidity();
indoorTemperature = Celcius2Fahrenheit(dht.readTemperature());
Serial.println(indoorTemperature);
Serial.println(indoorHumidity);
}
void printIndoorTemperature()
{
String temperature;
if(indoorTemperature != previousIndoorTemperature)
{
if(indoorTemperature>=100)
{
temperature = String(indoorTemperature,0);
}else
{
temperature = String(indoorTemperature,2);
}
void printIndoorTemperature()
{
String temperature;
if(indoorTemperature != previousIndoorTemperature)
{
if(indoorTemperature>=100)
{
void printIndoorTemperature()
{
String temperature;
if(indoorTemperature != previousIndoorTemperature)
{
if(indoorTemperature>=100)
{
previousIndoorTemperature = indoorTemperature;
}
}
float Celcius2Fahrenheit(float celcius)
{
return 1.8 * celcius + 32;
}
