#include <TM1637Display.h>
const int CLK = 2;
const int DIO = 3;
TM1637Display display(CLK, DIO);
const int ledPin1 = 4;
const int ledPin2 = 5;
const int ledPin3 = 6;
const int buzzerPin = 7;
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
display.setBrightness(255);
}
void loop() {
// Hardcoded test data
float car = 1.0;
float volume = 1000.0;
float weight = 9000.0;
// coefficients from linear regression model
float coef_car = 1.596373;
float coef_volume = -0.001084;
float coef_weight = 0.003612;
float intercept = 87.16349344633944;
float predicted_CO2 = intercept + coef_car * car + coef_volume * volume + coef_weight * weight;
display.showNumberDec(int(predicted_CO2), false);
// Control LEDs based on the predicted CO2 value
if (predicted_CO2 < 100) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
noTone(buzzerPin);
} else if (predicted_CO2 < 110) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
tone(buzzerPin, 1000); //1000 Hz
} else {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
tone(buzzerPin, 2000); // 2000 Hz
}
updateRGBColor(predicted_CO2);
delay(2000);
display.clear();
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
noTone(buzzerPin);
delay(1000);
}
void updateRGBColor(float co2Value) {
// Update RGB LED color based on CO2 level
if (co2Value > 100) {
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
} else {
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
}
}