hey,guys im working on a air quality monitoring project and something went awfully wrong with my code.
it keeps saying CQ1 wasn't declared in the scope and i couldn't figure out how deal with it. plz help, really appreciate your answer.
#include"AirQuality.h"
#include"Arduino.h"
AirQuality airqualitysensor;
int current_quality = -1;
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 3000;//sampe 30s ;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
void setup()
{
Serial.begin(9600);
pinMode(8, INPUT);
starttime = millis();//get the current time;
airqualitysensor.init(A0);
}
void loop()
{
duration = pulseIn(pin, LOW);
lowpulseoccupancy = lowpulseoccupancy + duration;
Serial.print(0);
if ((millis() - starttime) >= sampletime_ms) //if the sampel time = = 30s
{
ratio = lowpulseoccupancy / (sampletime_ms * 10.0); // Integer percentage 0=>100
concentration = 1.1 * pow(ratio, 3) - 3.8 * pow(ratio, 2) + 520 * ratio + 0.62; // using spec sheet curve
// Serial.print("concentration = ");
// Serial.print(concentration);
// Serial.println(" pcs/0.01cf");
// Serial.println("\n");
lowpulseoccupancy = 0;
starttime = millis();
}
current_quality = airqualitysensor.slope();
if (current_quality >= 0)// if a valid data returned.
{
if (current_quality == 0)
//Serial.println("High pollution! Force signal active");
Serial.print(CQ1);
else if (current_quality == 1)
//Serial.println("High pollution!");
Serial.print(CQ2);
else if (current_quality == 2)
//Serial.println("Low pollution!");
Serial.print(CQ3);
else if (current_quality == 3)
//Serial.println("Fresh air");
Serial.print(CQ4);
}
}
ISR(TIMER1_OVF_vect)
{
if (airqualitysensor.counter == 61) //set 2 seconds as a detected duty
{
airqualitysensor.last_vol = airqualitysensor.first_vol;
airqualitysensor.first_vol = analogRead(A0);
airqualitysensor.counter = 0;
airqualitysensor.timer_index = 1;
PORTB = PORTB ^ 0x20;
}
else
{
airqualitysensor.counter++;
}
}