#include #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // Pini senzori și ieșiri int mq135_pin = A0; int dust_pin = A2; int redLED = 11; int greenLED = 9; int blueLED = 10; int buzzer = 6; void setup() { Serial.begin(9600); dht.begin(); pinMode(mq135_pin, INPUT); pinMode(dust_pin, INPUT); pinMode(redLED, OUTPUT); pinMode(greenLED, OUTPUT); pinMode(blueLED, OUTPUT); pinMode(buzzer, OUTPUT); } void loop() { // Citiri senzori int gas = analogRead(mq135_pin); int dust = analogRead(dust_pin); float temp = dht.readTemperature(); float hum = dht.readHumidity(); // Normalizare valori la 0–100 int gas_score = map(gas, 100, 800, 0, 100); int dust_score = map(dust, 100, 800, 0, 100); int temp_penalty = (temp < 0 || temp > 35) ? 20 : 0; int hum_penalty = (hum < 20 || hum > 80) ? 20 : 0; // Calcul scor total de „sănătate a aerului” int total_score = (gas_score + dust_score) / 2 + temp_penalty + hum_penalty; if (total_score > 100) total_score = 100; // Afișare în consolă serială Serial.print("Scor aer: "); Serial.println(total_score); Serial.print("Gaz: "); Serial.print(gas_score); Serial.print(" Praf: "); Serial.print(dust_score); Serial.print(" Temp: "); Serial.print(temp); Serial.print("C Umid: "); Serial.print(hum); Serial.println("%"); // Feedback vizual și sonor if (total_score <= 40) { setLED(0, 250, 0); noTone(buzzer); } else if (total_score <= 70) { setLED(250, 150, 0); noTone(buzzer); } else { setLED(250, 0, 0); tone(buzzer, 700); } delay(1000); } void setLED(int r, int g, int b) { analogWrite(redLED, r); analogWrite(greenLED, g); analogWrite(blueLED, b); }